History of software
History of computing |
---|
Hardware |
Software |
Computer science |
Modern concepts |
Timeline of computing |
|
Software can be defined as programmed instructions stored in the memory of stored-program digital computers for execution by the processor. The design for what would have been the first piece of software was written by Ada Lovelace in the 19th century but was never implemented.
Alan Turing is credited with being the first person to come up with a theory for software, which led to the two academic fields of computer science and software engineering. The first generation of software for early stored program digital computers in the late 1940s had its instructions written directly in binary code. Early on, it was very expensive when it was in low quantities, but as it became more popular in the 1980s, prices dropped significantly. It went from being an item that only belonged to the elite to the majority of the population owning one. Software would not be where it is today without Bill Gates and Steve Jobs, two pioneers in the industry that had monumental impacts on the history of software.
Before stored-program digital computers
Origins of computer science
An outline (algorithm) for what would have been the first piece of software was written by Ada Lovelace in the 19th century, for the planned Analytical Engine. However, neither the Analytical Engine, nor any software for it, were ever created.
The first theory about software – prior to the creation of computers as we know them today – was proposed by Alan Turing in his 1935 essay Computable numbers with an application to the Entscheidungsproblem (decision problem).[1]
This eventually led to the creation of the twin academic fields of computer science and software engineering, which both study software and its creation. Computer science is more theoretical (Turing's essay is an example of computer science), whereas software engineering is focused on more practical concerns.
However, prior to 1946, software as we now understand it – programs stored in the memory of stored-program digital computers – did not yet exist. The very first electronic computing devices were instead rewired in order to "reprogram" them – see History of computing hardware.
Early days of computer software (1948–1979)
In his manuscript "A Mathematical theory of Communication", Claude Shannon (1916–2001) provided an outline for how binary logic could be implemented to program a computer. Subsequently, the first computer programmers used binary code to instruct computers to perform various tasks. Nevertheless, the process was very arduous. Computer programmers had to enter long strings of binary code to tell the computer what data to store. Computer programmers had to load information onto computers using various tedious mechanisms, including flicking switches or punching holes at predefined positions in cards and loading these punched cards into a computer. With such methods, if a mistake was made, the whole program might have to be loaded again from the beginning.
The very first time a stored-program computer held a piece of software in an electronic memory, and executed it successfully, was 11am, 21 June 1948, at the University of Manchester, on the Small Scale Experimental Machine, also known as the "Baby" computer. It was written by Tom Kilburn, and calculated the highest factor of the integer 2^18 = 262,144. Starting with a large trial divisor, it performed division of 262,144 by repeated subtraction then checked if the remainder was zero. If not, it decremented the trial divisor by one and repeated the process. Google released a tribute to the Manchester Baby, celebrating it as the "birth of software".
Bundling of software with hardware and its legal issues
Later, software was sold to multiple customers by being bundled with the hardware by Original equipment manufacturers (OEMs) such as Data General, Digital Equipment and IBM. When a customer bought a minicomputer, at that time the smallest computer on the market, the computer did not come with Pre-installed software, but needed to be installed by engineers employed by the OEM. Most companies had their software on the books for 0 dollars, unable to claim it as an asset (this is similar to financing of popular music in those days).
This bundling attracted the attention of US antitrust regulators, who sued IBM for improper "tying" in 1969, alleging that it was an antitrust violation that customers who wanted to obtain its software had to also buy or lease its hardware in order to do so. Although the case was dropped by the US Justice Department after many years of attrition as "without merit", IBM started selling software separately anyway. This began the age of commercial software.
Very quickly, commercial software started to be pirated, and commercial software producers were very unhappy at this. Bill Gates, cofounder of Microsoft, was an early moraliser against software piracy with his famous Open Letter to Hobbyists in 1976.
Data General also encountered legal problems related to bundling – although in this case, it was due to a civil suit from a would-be competitor. When Data General introduced the Data General Nova, a company called Digidyne wanted to use its RDOS operating system on its own hardware clone. Data General refused to license their software (which was hard to do, since it was on the books as a free asset), and claimed their "bundling rights". The US Supreme Court set a precedent called Digidyne v. Data General in 1985, and the Supreme Court let a 9th circuit decision stand, and Data General was eventually forced into licensing the operating system because it was ruled that restricting the license to only DG hardware was an illegal tying arrangement.[2] Unable to sustain the loss from lawyer's fees, Data General ended up being taken over by EMC Corporation.
The legal precedent in Digidyne v. Data General regarding bundling has never been applied to Apple, which might never have been as profitable as it is today had it been forced to license its Macintosh operating systems to competitors (although it did do so temporarily, voluntarily, on a limited scale and for a limited period of time).
Unix (1970s–present)
Unix was an early operating system which became popular and very influential, and still exists today. The most popular variant of Unix today is Mac OS X, while Linux is closely related to Unix.
Pre-Internet source code sharing
Before the Internet – and indeed in the period after the internet was created, but before it came into widespread use by the public – computer programming enthusiasts had to find other ways to share their efforts with each other, and also with potentially-interested computer users who were not themselves programmers. Such sharing techniques included distribution of tapes, such as the DECUS tapes, and later, electronic bulletin board systems. However, a particularly popular and mainstream early technique involved computer magazines.
Source code listings in computer magazines
Tiny BASIC was published as a type-in program in Dr Dobbs Journal in 1975, and developed collaboratively (in effect, an early example of open source software, although that particular term was not to be coined until two decades later).
It was an inconvenient and slow process to type in source code from a computer magazine, and a single mistyped – or worse, misprinted – character could render the program inoperable, yet people still did so. (Optical character recognition technology to scan in the listings rather than transcribe them by hand was not yet available).
However, even with the widespread use of cartridges and cassette tapes in the 1980s for distribution of commercial software, free programs (such as simple educational programs for the purpose of teaching programming techniques) were still often printed, because it was cheaper than manufacturing and attaching cassette tapes to each copy of a magazine. Many of today's IT professionals who were children at the time had a lifelong interest in computing in general or programming in particular sparked by such first encounters with source code.
However, eventually a combination of four factors brought this practice of printing complete source code listings of entire programs in computer magazines to an end:
- programs started to become very large
- floppy discs started to be used for distributing software, and then came down in price
- more and more people started to use computers – computing became a mass market phenomenon, and most ordinary people were far less likely to want to spend hours typing in listings than the earlier enthusiasts
- partly as a consequence of all of the above factors, computer magazines started to attach free cassette tapes, and free floppy discs, with free or trial versions of software on them, to their covers
1980s–present
Before the microcomputer, a successful software program typically sold up to 1,000 units at $50,000-60,000 each. By the mid-1980s, personal computer software sold thousands of copies for $50–700 each. Companies like Microsoft, MicroPro, and Lotus Development had tens of millions of dollars in annual sales.[3] Just like the auto industry, the software industry has grown from a few visionaries operating (figuratively or literally) out of their garage with prototypes. Steve Jobs and Bill Gates were the Henry Ford and Louis Chevrolet of their times, who capitalized on ideas already commonly known before they started in the business. A pivotal moment in computing history was the publication in the 1980s of the specifications for the IBM Personal Computer published by IBM employee Philip Don Estridge, which quickly led to the dominance of the PC in the worldwide desktop and later laptop markets – a dominance which continues to this day.
Free and open source software
Recent developments
App stores
Applications for mobile devices (cellphones and tablets) have been termed "apps" in recent years. Apple chose to funnel iPhone and iPad app sales through their App Store, and thus both vet apps, and get a cut of every paid app sold. Apple does not allow apps which could be used to circumvent their app store (e.g. virtual machines such as the Java or Flash virtual machines).
The Android platform, by contrast, has multiple app stores available for it, and users can generally select which to use (although Google Play requires a compatible or rooted device).
This move was replicated for desktop operating systems with the Ubuntu One Software Center (for Ubuntu), the Mac App Store (for Mac OS X), and the Windows Store (for Windows). All of these platforms remain, as they have always been, non-exclusive: they allow applications to be installed from outside the app store, and indeed from other app stores.
The explosive rise in popularity of apps, for the iPhone in particular but also for Android, led to a kind of "gold rush", with some hopeful programmers dedicating a significant amount of time to creating apps in the hope of striking it rich. As in real gold rushes, not all of these hopeful entrepreneurs were successful.
Formalization of software development
The development of curricula in computer science has resulted in improvements in software development. Components of these curricula include:
- Structured and Object Oriented programming[4]
- Data structures[5]
- Analysis of Algorithms[6]
- Formal languages[7] and compiler construction[8]
- Computer Graphics Algorithms[9]
- Sorting and Searching[10]
- Numerical Methods,[11] Optimization and Statistics[12]
- Artificial Intelligence[13] and Machine Learning[14]
How software has affected hardware
As more and more programs enter the realm of firmware, and the hardware itself becomes smaller, cheaper and faster as predicted by Moore's law, an increasing number of types of functionality of computing first carried out by software, have joined the ranks of hardware, as for example with graphics processing units. (However, the change has sometimes gone the other way for cost or other reasons, as for example with softmodems and microcode.)
Most hardware companies today have more software programmers on the payroll than hardware designers, since software tools have automated many tasks of Printed circuit board engineers.
Computer software and programming language timeline
The following tables include year by year development of many different aspects of computer software including:
- High level languages[15][16]
- Operating systems[17]
- Networking software and applications[18]
- Computer graphics hardware, algorithms and applications[19][20]
- Spreadsheets
- Word processing
- Computer aided design[21]
1971–1974
1971 | 1972 | 1973 | 1974 | |
---|---|---|---|---|
Programming languages | CDL KRL SUE | C INTERCAL PL/M Prolog Smalltalk SQL | COMAL LIS ML Speakeasy-3 | BASIC FOUR CLU GRASS PROSE |
Operating systems | DEC RSTS-11 | Data General RDOS | Soviet ALGOL 68 | DEC DOS-11 |
Computer networks | Wozniak's Blue Box | Bob Metcalfe develops Ethernet | ||
Computer graphics | Newell & Sancha visible surface algorithm | Catmull & Straber develop z-buffer | ||
CAD/CAM | MCS founded | ADAM | Auto-Draft | Tektronix 4014 |
1975–1978
1975 | 1976 | 1977 | 1978 | |
---|---|---|---|---|
Programming languages | ABC Altair BASIC CS-4 Modula Scheme | Mesa Plus Ratfor S SAM76 SAS Smalltalk-76 | Blue Bourne Shell Commodore BASIC FP Icon IDL Red Standard MUMPS Yellow IDL | C shell HAL/S MATLAB RPG III SMALL VisiCalc SQL |
Operating systems | CP/M | Cambridge CAP | 1BSD | 2BSD Apple DOS |
Computer networks | Telenet packet switching | |||
Computer graphics | EDS founded | Antialiasing | ||
Word processors | Electric Pencil | AppleWriter | ||
CAD/CAM | Solid modeling | McDonnell Douglas buys Unigraphics | Forerunner to CATIA | Raster graphics display |
1979–1982
1979 | 1980 | 1981 | 1982 | |
---|---|---|---|---|
Programming languages | AWK Icon Modula-2 REXX Vulcan dBase-II | Ada 80 C with classes CBASIC | BBC BASIC IBM BASICA | Draco PostScript Speakeasy-IV |
Operating systems | Atari DOS | 86-DOS | MS-DOS 1 Acorn MOS | Commodore DOS |
Computer networks | USENET | TCP/IP | ||
Computer graphics | Silicon Graphics founded | |||
Word processors | Wordstar | Wordperfect for DG Mini | Bank Street AppleWriter II |
WordStar 3.0 |
Spreadsheet | VisiCalc | Lotus 123 | ||
CAD/CAM | IGES | VersaCAD | Dassault Systems | Autodesk founded |
1983–1986
1983 | 1984 | 1985 | 1986 | |
---|---|---|---|---|
Programming languages | ABAP Ada 83 C++ GW-BASIC Korn Shell Objective-C occam True BASIC Turbo Pascal | CLIPPER Common Lisp Good Old MAD (GOM) OPL Redcode RPL Standard ML Matlab | Paradox QuickBASIC | CorVision Eiffel GFA BASIC Informix-4GL LabVIEW Miranda Object Pascal PROMAL |
Operating systems | MS-DOS 2 Lisa Office Sun OS 1 | MS-DOS 3 MAC OS Atari TOS Amiga OS | Windows 1 | AIX 1 |
Computer networks | ARPANET splits off MILNET | Novell Netware Research In Motion founded | NSFNET connects 5 Supercomputers | |
Computer graphics | ATI founded | Intel 82786 coprocessor | ||
Word processors | Word 1 for DOS | Word 1 for Mac | WordPerfect 4.2 for DOS | |
Spreadsheet | Excel for Mac | |||
CAD/CAM | Autodesk releases AutoCAD 1.2,1.3,1.4 | AutoCAD 2 | Bentley Systems Parametric Technology | AutoLISP |
1987–1990
1987 | 1988 | 1989 | 1990 | |
---|---|---|---|---|
Programming languages | Ada ISO 8652 Clean Erlang HyperTalk Mathematica Oberon occam 2 Perl Self Turbo Basic | A+ Hamilton C shell Object REXX Octave RPG/400 SPARK STOS BASIC Tcl Mathematica | Bash LPC Modula-3 PowerBASIC Turbo Pascal OOP VisSim FL | AMOS BASIC AMPL EuLisp Haskell J Object Oberon Z Shell |
Operating systems | MS-DOS 4 Windows 2 OS/2 A/UX | EPCO | Windows 3 | |
Computer networks | Morris Worm | World Wide Web starts | HTML | |
Computer graphics | JPEG and GIF | Pixar Tin Toy wins Oscar | AutoDesk 3D Studio | |
Word processors | MS Works for DOS | PC Mag Reviews 55 Packages | WordPerfect 5.1 Word for Windows | MS Office for Windows |
Spreadsheet | Excel for Windows | Quattro Pro | ||
CAD/CAM | Deneba releases Canvas X AutoCAD 9 | CATIA 3 AutoCAD 10 | Parametric T-Flex | Visionary Design Systems founded AutoCAD 11 ACIS 1 |
1991–1994
1991 | 1992 | 1993 | 1994 | |
---|---|---|---|---|
Programming languages | GNU E Oberon-2 Oz Q Visual Basic Python | Turbo Pascal Dylan | Ruby Lua AppleScript Brainfuck K Lua NewtonScript R Revolution Transcript Self ZPL | CLOS ANS Forth ANSI Common Lisp Claire Pike RAPID |
Operating systems | MS-DOS 5 Linux | MS Windows 3.1x 386BSD | MS-DOS 6 Newton OS Solaris | AIX 4.0, 4.1 |
Computer networks | Mosaic web browser | Netware 4 | Netscape Navigator | |
Computer graphics | OpenGL | Nvidia founded | ||
Word processors | MS Works | Novell buys WordPerfect | ||
CAD/CAM | EDS buys Unigraphics | CADAM & CATIA begin unification | AutoCAD 12 | Simple Vector Format |
1995–1998
1995 | 1996 | 1997 | 1998 | |
---|---|---|---|---|
Programming languages | Ada 95 Borland Delphi ColdFusion Java JavaScript LiveScript PHP Ruby | Curl Lasso NetRexx OCaml Perl Data Language WebDNA | Component Pascal E ECMAScript F-Script ISLISP Pico REBOL Squeak Smalltalk Tea Rebol | M2001 Open Source Erlang Pikt PureBasic Standard C++ UnrealScript |
Operating systems | Windows 95 Digital UNIX | Windows NT 4 Mac OS 7.6 Palm OS | Inferno | Windows 98 Solaris 7 64-bit |
Computer networks | Mosaic web browser Inter@ctive Pager | NetWare 4 | Netscape Navigator | |
Computer graphics | Pixar Goes Public after Toy Story | 3Dfx Voodoo | ATI Rage Pro | Voodoo Banshee |
Word processors | Word 95 for Windows | Corel buys WordPerfect from Novell | ||
CAD/CAM | MicroStation Advanced solid modeling | Canvas 5 | ISO 13567 AutoCAD 14 | Dassault Systems buys Matra Datavision products |
1999–2002
1999 | 2000 | 2001 | 2002 | |
---|---|---|---|---|
Programming languages | D GameMaker Language Harbour XSLT | ActionScript C# Ferite Join Java Joy XL Visual Basic .net | AspectJ GDScript Processing RPG IV | Gosu Io |
Operating systems | Mac OS X Server 1.0 | Windows 2000 Apple V10.0 Cheetah | V10.1 Puma | Windows XP 64 V10.2 Jaguar |
Computer networks | Blackberry 850 | Mosaic web browser | Netware 4 | Netscape Navigator |
Computer graphics | S3 Savage 4 | ATI Radeon DDR | Nvidia Kyro II GeForce 3 | |
Word processors | Sun buys StarDivision | |||
CAD/CAM | Pro/Engineer 2000 | AutoCAD 2000 | EDS buys SDRC | Unigraphics NX Autodesk buys Revit |
2003–2006
2003 | 2004 | 2005 | 2006 | |
---|---|---|---|---|
Programming languages | Factor Falcon Nemerle Scala Squirrel | Alma-0 Boo FreeBASIC Groovy Little b Subtext | F# Seed7 | Cobra Links OptimJ Windows PowerShell |
Operating systems | V10.3 Panther Red Hat Enterprise Linux | V10.4 Tiger Ubuntu 5 | ||
Computer networks | 802.11g | Gmail Facebook founded | BlackBerry Pearl 8100 | |
Computer graphics | Adobe buys Macromedia | AMD buys ATI Disney buys Pixar | ||
Word processors | Writely | Google buys Upstartle | ||
CAD/CAM | Dassault integrates VBA | EDS PLM Solutions goes private | UGS buys Tecnomatix | SolidWorks 2007 |
2007–2010
2007 | 2008 | 2009 | 2010 | |
---|---|---|---|---|
Programming languages | Clojure Fantom Fortress LOLCODE Oberon-07 Vala | Genie Pure | CoffeeScript Go Idris Parasail | Chapel RPG Open Access Rust |
Operating systems | Windows Vista V10.5 Leopard Android Beta | Android 1.0 | Android 1.1 V10.6 Snow Leopard | Android 2.0 |
Computer networks | Wifi 802.11n | |||
Computer graphics | Assassin's Creed | "Up" Cloth Simulation | "Avatar" wins "Best Picture" | |
Word processors | Oracle buys OpenOffice from Sun | Oracle releases OpenOffice to Apache Software Foundation | ||
CAD/CAM | Siemens buys UGS |
2011–2014
2011 | 2012 | 2013 | 2014 | |
---|---|---|---|---|
Programming languages | Dart | Elixir Julia TypeScript | Hack Swift | |
Operating systems | V10.7 Lion Android 3.0 Android 4.0 | Windows 8 V10.8 Mountain Lion | V10.9 Mavericks | V10.10 Yosemite Android 5.0 |
Computer networks | 802.11ac | |||
Computer graphics | Hugo wins Oscar Visual Effects |
See also
- Forensic software engineering
- History of computing hardware
- History of operating systems
- History of software engineering
- List of failed and overbudget custom software projects
References
- ↑ Hally, Mike (2005). Electronic brains/Stories from the dawn of the computer age. London: British Broadcasting Corporation and Granta Books. p. 79. ISBN 1-86207-663-4.
- ↑ "Tying Arrangements and the Computer Industry: Digidyne Corp. vs. Data General". JSTOR 1372482.
- ↑ Caruso, Denise (1984-04-02). "Company Strategies Boomerang". InfoWorld. pp. 80–83. Retrieved 10 February 2015.
- ↑ Booch, Grady (1997). Object-Oriented Analysis and Design with Applications. Addison-Wesley.
- ↑ Peter Brass. (2008) Advanced Data Structures, Cambridge University Press
- ↑ Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. & Stein, Clifford. (2001) Introduction to Algorithms, MIT Press and McGraw-Hill.
- ↑ Hopcroft, John E. and Jeffrey D. Ullman, (1979) Introduction to Automata Theory, Languages, and Computation
- ↑ Aho, Alfred V., Sethi, Ravi, and Ullman, Jeffrey D. (1988). Compilers: Principles, Techniques, and Tools. Addison-Wesley.
- ↑ Shirley, Peter. (2009) Fundamentals of Computer Graphics – 3rd edition
- ↑ Knuth, Donald. (1998) The Art of Computer Programming: Volume 3: Sorting and Searching
- ↑ Press, William H., Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery. (2007) Numerical Recipes 3rd Edition: The Art of Scientific Computing
- ↑ Baron, Michael. (2006) Probability and Statistics for Computer Scientists
- ↑ Russell, Stuart. (2009) Artificial Intelligence: A Modern Approach (3rd Edition)
- ↑ Mitchell, Tom. (1997) Machine Learning.
- ↑ Aaby, Anthony (2004). Introduction to Programming Languages
- ↑ Wexelblat, Richard L. History of Programming Languages
- ↑ Stallings (2005). Operating Systems, Internals and Design Principles. Pearson
- ↑ Kurose, James; Ross, Kieth (2005). Computer Networking: A Top-Down Approach. Pearson.
- ↑ Wayne Carlson (2003) A Critical History of Computer Graphics and Animation
- ↑ Ferguson, R. Stuart. (2013) Practical Algorithms for 3D Computer Graphics
- ↑ Narayan, K. Lalit (2008). Computer Aided Design and Manufacturing. Prentice Hall