History of software

From Wikipedia, the free encyclopedia
Jump to: navigation, search

Software can be defined as programs stored in the memory of stored-program digital computers. The outline for what would be the first software was written by Ada Lovelace in the 19th century but was never created. 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 software created used binary code for instructions, but other programmers used mechanisms like switches and hole-punched cards. Early on, it was very expensive when it was in low quantities, but as it became more popular in the 1980's, 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[edit]

Origins of computer science[edit]

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 (1946-1979)[edit]

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. Other methods that computer programmers used were much more laborious such as with the Manchester Small-Scale Experimental Machine. Computer programmers literally 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.

Early software was often custom-written for or by particular customers.

Bundling of software with hardware and its legal issues[edit]

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.[citation needed] Most companies[clarification needed] 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).[citation needed]

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-)[edit]

Main article: History of Unix

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[edit]

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[edit]

See also: Type-in program

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 manually 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 and obviate the need for typing was not yet available at the time).

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[edit]

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[citation needed], 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[edit]

Recent developments[edit]

App stores[edit]

Main article: App store

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[edit]

The development of curricula in computer science has resulted in improvements in software development. Components of these curricula include:

  1. Structured and Object Oriented programming[4]
  2. Data structures[5]
  3. Analysis of Algorithms[6]
  4. Formal languages[7] and compiler construction[8]
  5. Computer Graphics Algorithms[9]
  6. Sorting and Searching[10]
  7. Numerical Methods,[11] Optimization and Statistics[12]
  8. Artificial Intelligence[13] and Machine Learning[14]

How software has affected hardware[edit]

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[citation needed], since software tools have automated many tasks of Printed circuit board engineers.

Computer Software and Programming Language Timeline[edit]

The following tables include year by year development of several different aspects of computer software including:

  1. High Level Languages[15][16]
  2. Operating Systems[17]
  3. Networking software and applications[18]
  4. Computer Graphics hardware, algorithms and applications[19][20]
  5. Spreadsheets
  6. Word Processing
  7. Computer Aided Design[21]

1971-1978[edit]

1971 1972 1973 1974
Computer Language CDL
KRL
Sue
C
INTERCAL
PL/M
Prolog
Smalltalk
SQL
COMAL
LIS
ML
Speakeasy-3
BASIC FOUR
CLU
GRASS
PROSE
Operating System 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 1976 1977 1978
Computer Language 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 System CP/M Cambridge CAP 1BSD 2BSD
Apple DOS
Computer Networks Telenet Packet
Switching
Computer Graphics EDS Founded Antialiasing
Word Processor Electric Pencil AppleWriter
CAD/CAM Solid Modeling McDonnell Douglas
Purchases Unigraphics
Forerunner to CATIA Raster Display

1979-1982[edit]

1979 1980 1981 1982
Computer Language AWK
Icon
Modula-2
REXX
Vulcan dBase-II
Ada 80
C with classes
CBASIC
BBC BASIC
IBM BASICA
Draco
PostScript
Speakeasy-IV
Operating System Atari DOS 86-DOS MS-DOS 1
Acorn MOS
Commodore DOS
Computer Networks USENET TCP/IP
Computer Graphics Silicon Graphics
Founded
Word Processor Wordstar Wordperfect
for DG Mini
Bank Street
AppleWriter II

WordStar 3.0
WordPerfect for DOS

Spreadsheet VisiCalc Lotus 123
CAD/CAM IGES VersaCAD Dassault Systems Autodesk Founded

1983-1990[edit]

1983 1984 1985 1986
Computer Language ABAP
Ada 83
C++
GW-BASIC
Korn Shell
Objective-C
occam
True BASIC
Turbo Pascal
CLIPPER
Common Lisp
GOM – Good Old Mad
OPL
Redcode
RPL
Standard ML
Common LISP
Matlab
PARADOX
QuickBASIC
CorVision
Eiffel
GFA BASIC
Informix-4GL
LabVIEW
Miranda
Object Pascal
PROMAL
Operating System 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 Processor 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 1988 1989 1990
Computer Language 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 System MS DOS 4
Windows 2
OS/2
A/UX
EPCO Windows 3
Computer Networks Morris's Worm Beginning of
World Wide Web
HTML
Computer Graphics JPEG and GIF Pixar Tin Toy
wins Oscar
AutoDesk 3D Studio]]
Word Processor MS Works for DOS PC Mag Reviews
55 Packages
WordPerfect 5.1
Word for Windows
MS Office for Windows
Spreadsheet MS 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-1998[edit]

1991 1992 1993 1994
Computer Language GNU E
Oberon-2
Oz
Python
Q
Visual Basic
Python
Borland Pascal
Dylan
Ruby
Lua
AppleScript
Brainfuck
K
Lua
NewtonScript
R
Revolution Transcript
Self
ZPL
CLOS
ANS Forth
ANSI Common Lisp
Claire
Pike
RAPID
Operating System 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 Processor MS Works Novell buys WordPerfect
CAD/CAM EDS buys
Unigraphics
CADAM & CATIA
begin unification
AutoCAD 12 Simple Vector
Format
1995 1996 1997 1998
Computer Language 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 System 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 Processor 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-2006[edit]

1999 2000 2001 2002
Computer Language D
GameMaker Language
Harbour
XSLT
ActionScript
C#
Ferite
Join Java
Joy
XL
Visual Basic .net
AspectJ
GDScript
Processing
RPG IV
Gosu
Io
Operating System 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 Processor Sun buys StarDivision
CAD/CAM Pro/Engineer 2000 AutoCAD 2000 EDS buys SDRC Unigraphics NX
Autodesk buys Revit
2003 2004 2005 2006
Computer Language Factor
Falcon
Nemerle
Scala
Squirrel
Alma-0
Boo
FreeBASIC
Groovy
Little b
Subtext
F#
Seed7
Cobra
Links
OptimJ
Windows PowerShell
Operating System V10.3 Panther
Red Hat
Enterprise Linux
V10.4 Tiger
Ubuntu 5
Computer Networks 802.11g Gmail
Facebook launched
BlackBerry Pearl 8100
Computer Graphics Adobe buys
Macromedia
AMD buys ATI
Disney buys Pixar
Word Processor Writely Google buys Upstartle
CAD/CAM Dassault
integrates VBA
EDS PLM Solutions
goes private
UGS buys
Tecnomatix
SolidWorks 2007

2007-2014[edit]

2007 2008 2009 2010
Computer Language Clojure
Fantom
Fortress
LOLCODE
Oberon-07
Vala
Genie
Pure
CoffeeScript
Go
Idris
Parasail
Chapel
RPG Open Access
Rust
Operating System 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 Processor Oracle buys
OpenOffice from Sun
Oracle releases OpenOffice
to Apache Software Foundation
CAD/CAM Siemens buys UGS
2011 2012 2013 2014
Computer Language Dart Elixir
Julia
TypeScript
Hack
Swift
Operating System 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
Word Processor

See also[edit]

References[edit]

  1. ^ 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. 
  2. ^ "Tying Arrangements and the Computer Industry: Digidyne Corp. vs. Data General". JSTOR 1372482. 
  3. ^ Caruso, Denise (1984-04-02). "Company Strategies Boomerang". InfoWorld. pp. 80–83. Retrieved 10 February 2015. 
  4. ^ Booch, Grady (1997). Object-Oriented Analysis and Design with Applications. Addison-Wesley.
  5. ^ Peter Brass. (2008) Advanced Data Structures, Cambridge University Press
  6. ^ Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. & Stein, Clifford. (2001) Introduction to Algorithms, MIT Press and McGraw-Hill.
  7. ^ Hopcroft, John E. and Jeffrey D. Ullman, (1979) Introduction to Automata Theory, Languages, and Computation
  8. ^ Aho, Alfred V., Sethi, Ravi, and Ullman, Jeffrey D. (1988). Compilers — Principles, Techniques, and Tools. Addison-Wesley.
  9. ^ Shirley, Peter. (2009) Fundamentals of Computer Graphics - 3rd edition
  10. ^ Knuth, Donald. (1998) The Art of Computer Programming: Volume 3: Sorting and Searching
  11. ^ Press, William H., Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery. (2007) Numerical Recipes 3rd Edition: The Art of Scientific Computing
  12. ^ Baron, Michael. (2006) Probability and Statistics for Computer Scientists
  13. ^ Russell, Stuart. (2009) Artificial Intelligence: A Modern Approach (3rd Edition)
  14. ^ Mitchell, Tom. (1997) Machine Learning.
  15. ^ Aaby, Anthony (2004). Introduction to Programming Languages
  16. ^ Wexelblat, Richard L. History of Programming Languages
  17. ^ Stallings (2005). Operating Systems, Internals and Design Principles. Pearson
  18. ^ Kurose, James; Ross, Kieth (2005). Computer Networking: A Top-Down Approach. Pearson.
  19. ^ Wayne Carlson (2003) A Critical History of Computer Graphics and Animation
  20. ^ Ferguson, R. Stuart. (2013) Practical Algorithms for 3D Computer Graphics
  21. ^ Narayan, K. Lalit (2008). Computer Aided Design and Manufacturing. Prentice Hall