History of software

Software is programmed instructions stored in the memory of stored-program digital computers for execution by the processor. Software is a recent development in human history, and fundamental to the Information Age.

Ada Lovelace's work for Charles Babbage's Analytical Engine in the 19th century is often considered the founding of the discipline, though both mathematicians' efforts remained theoretical only, as the technology of Babbage's day proved insufficient to build his computer. Alan Turing is credited with being the first person to come up with a theory for software in 1935, 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, generally written for mainframe computers. Later, the development of modern programming languages alongside the advancement of the home computer would greatly widen the scope and breadth of available software, beginning with assembly language, and continuing on through functional programming and object-oriented programming paradigms.

Before stored-program digital computers

Origins of computer science

Computing as a concept goes back to ancient times, beginning with devices such as the abacus and continuing on through early examples of computing such as the Antikythera mechanism. However, these devices were pure hardware and had no software - their computing powers were directly tied to their specific form and engineering.

Software requires the concept of a general-purpose processor - what is now described as a Turing machine - as well as computer memory in which reusable sets of routines and mathematical functions comprising programs can be stored, started, and stopped individually, and only appears recently in human history.

The first known computer algorithm was written by Ada Lovelace in the 19th century for her friend and collaborator Charles Babbage's planned Analytical Engine, to translate Luigi Menabrea's work on Bernoulli numbers for machine instruction. However, this remained theoretical only - the lesser state of electrical engineering in the lifetime of these two mathematicians proved insufficient to construct the Analytical Engine.

The first modern theory of software 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 Manchester 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". In the late 1950's and early 1960's, a popular innovation was the development of computer languages such as Fortran, COBOL and BASIC. These languages allowed programs to be specified in an abstract way, independent of the precise details of the hardware architecture of the computer. The languages were primarily intended only for specifying numerical calculations.[2]

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.

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".[3]

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.[4]

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 and claimed their "bundling rights". The US Supreme Court set a precedent called Digidyne v. Data General in 1985 by letting a 9th circuit appeal court decision on the case 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.[5] Even though the District Court noted that "no reasonable juror could find that within this large and dynamic market with much larger competitors", Data General "had the market power to restrain trade through an illegal tie-in arrangement", the tying of the operating system to the hardware was ruled as per se illegal on appeal.[6]

In 2008, Psystar Corporation was sued by Apple Inc. for distributing unauthorized Macintosh clones with OS X preinstalled, and countersued. One of the arguments in the countersuit - citing the Data General case - was that Apple dominates the market for OS X compatible computers by illegally tying the operating system to Apple computers. District Court Judge William Alsup rejected this argument, saying, as the District Court had ruled in the Data General case over 20 years prior, that the relevant market was not simply one operating system (Mac OS) but all PC operating systems, including Mac OS, and noting that Mac OS did not enjoy a dominant position in that broader market. Alsup's judgement also noted that the surprising Data General precedent that tying of copyrighted products was always illegal had since been "implicitly overruled" by the verdict in the Illinois Tool Works Inc. v. Independent Ink, Inc. case.[7]

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 macOS (previously OS X and 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. Dobb's 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.[8] They similarly dominated the European market with localized versions of already successful products.[9]

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 GNOME Software (for Linux), the Mac App Store (for macOS), 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:

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

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 (PCB) engineers.

Computer software and programming language timeline

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

  1. High level languages[21][22]
  2. Operating systems[23]
  3. Networking software and applications[24]
  4. Computer graphics hardware, algorithms and applications[25][26]
  5. Spreadsheets
  6. Word processing
  7. Computer aided design[27]

1971–1974

1971197219731974
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-11Data General
RDOS
Soviet ALGOL 68DEC 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/CAMMCS foundedADAMAuto-DraftTektronix 4014

1975–1978

1975197619771978
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/MCambridge CAP1BSD2BSD
Apple DOS
Computer
networks
Telenet packet
switching
Computer
graphics
EDS foundedAntialiasing
Word
processors
Electric PencilAppleWriter
CAD/CAMSolid modelingMcDonnell Douglas
buys Unigraphics
Forerunner to CATIARaster graphics display

1979–1982

1979198019811982
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 DOS86-DOSMS-DOS 1
Acorn MOS
Commodore DOS
Computer
networks
UsenetTCP/IP
Computer
graphics
Silicon Graphics
founded
Word
processors
WordstarWordPerfect
for DG Mini
Bank Street
AppleWriter II

WordStar 3.0
WordPerfect for DOS

SpreadsheetVisiCalcLotus 1-2-3
CAD/CAMIGESVersaCADDassault SystemsAutodesk founded

1983–1986

1983198419851986
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
SunOS 1
MS-DOS 3
System Software
Windows 1.0
Atari TOS
AmigaOS
AIX 1
Computer
networks
ARPANET splits
off MILNET
Novell NetWare
Research In Motion founded
NSFNET connects
5 Supercomputers
Computer
graphics
ATI foundedIntel 82786
coprocessor
Word
processors
Word 1 for DOSWord 1 for MacWordPerfect 4.2
for DOS
SpreadsheetExcel for Mac
CAD/CAMAutodesk releases
AutoCAD 1.2,1.3,1.4
AutoCAD 2Bentley Systems
Parametric Technology
AutoLISP

1987–1990

1987198819891990
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
Windows 2.0MS-DOS 4
Windows 2.1x
OS/2
A/UX
EPCOWindows 3.0
Computer
networks
Morris wormWorld Wide Web
starts
HTML
Computer
graphics
JPEG and GIFPixar's Tin Toy
wins Oscar
AutoDesk 3D Studio
Word
processors
Microsoft Works for DOSPC Magazine Reviews
55 Packages
WordPerfect 5.1
Word for Windows
Microsoft Office for Windows
SpreadsheetExcel for WindowsQuattro Pro
CAD/CAMDeneba releases
Canvas X
AutoCAD 9
CATIA 3
AutoCAD 10
Parametric T-FlexVisionary Design Systems founded
AutoCAD 11
ACIS 1

1991–1994

1991199219931994
Programming
languages
GNU E
Oberon-2
Oz
Q
Visual Basic
Python
Turbo Pascal
Dylan
Ruby
Lua
AppleScript
Brainfuck
K
Lua
NewtonScript
R
Transcript
Self
ZPL
CLOS
ANS Forth
ANSI Common Lisp
Claire
Pike
RAPID
Operating
systems
MS-DOS 5
Linux
Windows 3.1x
386BSD
MS-DOS 6
Newton OS
Solaris
AIX 4.0, 4.1
Computer
networks
Mosaic web browserNetWare 4Netscape Navigator
Computer
graphics
OpenGLNvidia founded
Word
processors
Microsoft WorksNovell buys WordPerfect
CAD/CAMEDS buys
Unigraphics
CADAM & CATIA
begin unification
AutoCAD 12Simple Vector
Format

1995–1998

1995199619971998
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.0
Palm OS
Inferno
Mac OS 7.6
Mac OS 8
Windows 98
Solaris 7 64-bit
Computer
networks
The research proposal

for Google was formed.

Mosaic web browser
Inter@ctive Pager
NetWare 4Netscape Navigator
Computer
graphics
Pixar Goes Public
after Toy Story
3Dfx VoodooATI Rage ProVoodoo Banshee
Word
processors
Word 95 for WindowsCorel buys WordPerfect
from Novell
CAD/CAMMicroStation Advanced
solid modeling
Canvas 5ISO 13567
AutoCAD 14
Dassault Systems buys
Matra Datavision products

1999–2002

1999200020012002
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
Mac OS 9
Windows 2000
Windows ME
Mac OS X Public Beta
v10.0 Cheetah
v10.1 Puma
Windows XP
Windows XP 64-bit Edition
10.2 Jaguar
Computer
networks
BlackBerry 850NetWare 4Netscape Navigator
Computer
graphics
S3 Savage 4
GeForce 256
Radeon DDR (R100)Nvidia Kyro II
GeForce 3
Word
processors
Sun buys Star Division
CAD/CAMPro/Engineer 2000AutoCAD 2000EDS buys SDRCUnigraphics NX
Autodesk buys Revit

2003–2006

2003200420052006
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
Windows Server 2003
v10.4 Tiger
Ubuntu 5
Windows XP Professional x64 Edition
Computer
networks
802.11g
Apple Safari
Gmail
Facebook founded
Mozilla Firefox
BlackBerry Pearl 8100

2007–2010

2007200820092010
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
AndroidWindows 7
v10.6 Snow Leopard
Android 1.5 "Cupcake"
Android 1.6 "Donut"
Android 2.0–2.1 "Eclair"
Android 2.2 "Froyo"
Android 2.3 "Gingerbread"
Computer
networks
Google Chrome
Chromium
Wi-Fi 802.11n
Computer
graphics
Assassin's CreedUp Cloth
Simulation
Avatar wins
"Best Picture"
Word
processors
Oracle buys
OpenOffice from Sun
Oracle releases OpenOffice
to Apache Software Foundation
CAD/CAMSiemens buys UGS

2011–2014

2011201220132014
Programming
languages
DartElixir
Julia
TypeScript
Hack
Swift
Operating
systems
v10.7 Lion
Android 3.x "Honeycomb"
Android 4.0 "Ice Cream Sandwich"
Windows 8
v10.8 Mountain Lion
Android 4.1.x–4.2.x "Jelly Bean"
v10.9 Mavericks
Windows 8.1
Android 4.3 "Jelly Bean"
Android 4.4 "KitKat"
v10.10 Yosemite
Android 5.0 "Lollipop"
Computer
networks
802.11ac
Computer
graphics
Hugo wins Oscar
Visual Effects

See also

References

  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. Wolfram, Stephen (2002). A New Kind of Science. Wolfram Media, Inc. p. 1107. ISBN 1-57955-008-8.
  3. G. David Garson (January 2006). Public Information Technology and E-governance: Managing the Virtual State. Jones & Bartlett Learning. pp. 229–. ISBN 978-0-7637-3468-8.
  4. Brad Lockwood (13 October 2008). Bill Gates: Profile of a Digital Entrepreneur: Easyread Super Large 18pt Edition. ReadHowYouWant.com. pp. 25–. ISBN 978-1-4270-9149-9.
  5. "Tying Arrangements and the Computer Industry: Digidyne Corp. vs. Data General". JSTOR 1372482. Missing or empty |url= (help)
  6. Justice WHITE, with whom Justice BLACKMUN joins, dissenting.
  7. Caruso, Denise (1984-04-02). "Company Strategies Boomerang". InfoWorld. pp. 80–83. Retrieved 10 February 2015.
  8. Schrage, Michael (1985-02-17). "IBM Wins Dominance in European Computer Market". Washington Post. ISSN 0190-8286. Retrieved 2018-08-29.
  9. Booch, Grady (1997). Object-Oriented Analysis and Design with Applications. Addison-Wesley.
  10. Peter Brass. (2008) Advanced Data Structures, Cambridge University Press
  11. Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. & Stein, Clifford. (2001) Introduction to Algorithms, MIT Press and McGraw-Hill.
  12. Hopcroft, John E. and Jeffrey D. Ullman, (1979) Introduction to Automata Theory, Languages, and Computation
  13. Aho, Alfred V., Sethi, Ravi, and Ullman, Jeffrey D. (1988). Compilers: Principles, Techniques, and Tools. Addison-Wesley.
  14. Shirley, Peter. (2009) Fundamentals of Computer Graphics  3rd edition
  15. Knuth, Donald. (1998) The Art of Computer Programming: Volume 3: Sorting and Searching
  16. Press, William H., Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery. (2007) Numerical Recipes 3rd Edition: The Art of Scientific Computing
  17. Baron, Michael. (2006) Probability and Statistics for Computer Scientists
  18. Russell, Stuart J. and Peter Norvig (2009) Artificial Intelligence: A Modern Approach (3rd Edition)
  19. Mitchell, Tom. (1997) Machine Learning.
  20. Aaby, Anthony (2004). Introduction to Programming Languages
  21. Wexelblat, Richard L. History of Programming Languages
  22. Stallings (2005). Operating Systems, Internals and Design Principles. Pearson
  23. Kurose, James; Ross, Kieth (2005). Computer Networking: A Top-Down Approach. Pearson.
  24. Wayne Carlson (2003) A Critical History of Computer Graphics and Animation
  25. Ferguson, R. Stuart. (2013) Practical Algorithms for 3D Computer Graphics
  26. Narayan, K. Lalit (2008). Computer Aided Design and Manufacturing. Prentice Hall
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.