History of software

Last updated

Software is a set of 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 is fundamental to the Information Age.

Contents

Ada Lovelace's programs for Charles Babbage's Analytical Engine in the 19th century are often considered the founder of the discipline. However, the mathematician's efforts remained theoretical only, as the technology of Lovelace and 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 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, with devices such as the abacus, the Antikythera mechanism, Astrolabes, Mechanical Astronomical clocks and Mechanical Calculators. [1] The Antikythera mechanism is an example for a highly complex ancient mechanical Astronomical device. [2]

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 the Analytical Engine, to translate Luigi Menabrea's work on Bernoulli numbers for machine instruction. [3] However, this remained theoretical only - the lesser state of engineering in the lifetime of these two mathematicians proved insufficient[ citation needed ] 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). [4]

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. The ENIAC, one of the first electronic computers, was programmed largely by women who had been previously working as human computers. [5] [6] Engineers would give the programmers blueprints of the ENIAC wiring and expected them to figure out how to program the machine. [7] The women who worked as programmers prepped the ENIAC for its first public reveal, wiring the patch panels together for the demonstrations. [8] [9] [10] Kathleen Booth developed Assembly Language in 1950 to make it easier to program the computers she worked on at Birkbeck College. [11]

Grace Hopper and UNIVAC Grace Hopper and UNIVAC.jpg
Grace Hopper and UNIVAC

Grace Hopper worked as one of the first programmers of the Harvard Mark I. [12] She later created a 500-page manual for the computer. [13] Hopper is often falsely credited with coining the terms "bug" and "debugging," when she found a moth in the Mark II, causing a malfunction; [14] however, the term was in fact already in use when she found the moth. [14] Hopper developed the first compiler and brought her idea from working on the Mark computers to working on UNIVAC in the 1950s. [15] Hopper also developed the programming language FLOW-MATIC to program the UNIVAC. [14] Frances E. Holberton, also working at UNIVAC, developed a code[ clarification needed ], C-10, which let programmers use keyboard inputs and created the Sort-Merge Generator in 1951. [16] [17] Adele Mildred Koss and Hopper also created the precursor to a report generator. [16]

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 provide long strings of binary code to tell the computer what kind of data it should store. Code and data had to be loaded 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 electronic memory and executed it successfully, was 11 am 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 a division of 262,144 by repeated subtraction and 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".

FORTRAN was developed by a team led by John Backus at IBM in the 1950s. The first compiler was released in 1957. The language proved so popular for scientific and technical computing that by 1963 all major manufacturers had implemented or announced FORTRAN for their computers. [18] [19]

COBOL was first conceived of when Mary K. Hawes convened a meeting (which included Grace Hopper) in 1959 to discuss how to create a computer language to be shared between businesses. [16] Hopper's innovation with COBOL was developing a new symbolic way to write programming. [13] Her programming was self-documenting. [20] Betty Holberton helped edit the language which was submitted to the Government Printing Office in 1960. [21] FORMAC was developed by Jean E. Sammet in the 1960s. [21] Her book, Programming Languages: History and Fundamentals (1969), became an influential text. [21] [22]

Apollo Mission

Margaret Hamilton next to a stack of code she and her team wrote for the Apollo Mission computers. Margaret Hamilton - restoration.jpg
Margaret Hamilton next to a stack of code she and her team wrote for the Apollo Mission computers.

The Apollo Mission to the moon depended on software to program the computers in the landing modules. [23] [24] The computers were programmed with a language called "Basic" (no relation to the BASIC programming language developed at Dartmouth at about the same time). [25] The software also had an interpreter which was made up of a series of routines and an executive (like a modern-day operating system), which specified which programs to run and when. [25] Both were designed by Hal Laning. [25] Margaret Hamilton, who had previously been involved with software reliability issues when working on the US SAGE air defense system, was also part of the Apollo software team. [23] [26] Hamilton was in charge of the onboard flight software for the Apollo computers. [23] Hamilton felt that software operations were not just part of the machine, but also intricately involved with the people who operated the software. [25] Hamilton also coined the term "software engineering" while she was working at NASA. [27]

The actual "software" for the computers in the Apollo missions was made up of wires that were threaded through magnetic cores. [28] Where the wire went through a magnetic core, that represented a "1" and where the wire went around the core, that represented a "0." [28] Each core stored 64 bits of information. [28] Hamilton and others would create the software by punching holes in punch cards, which were then later processed on a Honeywell mainframe where the software could be simulated. [23] When the code was "solid," then it was sent to be woven into the magnetic cores at Raytheon, where women known as "Little Old Ladies" worked on the wires. [23] The program itself was "indestructible" and could even withstand lightning strikes, which happened to Apollo 12. [28] Wiring the computers took several weeks to do, freezing software development during that time. [29]

While using the simulators to test the programming, Hamilton discovered ways that code could produce dangerous errors when human mistakes were made while using it. [23] NASA believed that the astronauts would not make mistakes due to their training. [30] Hamilton was not allowed to program code to prevent errors that would lead to system crash, so she annotated the code in the program documentation. [23] Her idea to add error-checking code was rejected as "excessive." [23] However, exactly what Hamilton predicted would happen occurred on the Apollo 8 flight, when human error caused the computer to wipe out all of the navigational data. [23]

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 ]

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. However, the case was dropped by the US Justice Department, after many years of attrition, as it concluded it was "without merit". [31]

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. [32] 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. [33]

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

Packaged software (Late 1960s-present)

An industry producing independently packaged software - software that was neither produced as a "one-off" for an individual customer, nor "bundled" with computer hardware - started to develop in the late 1960s. [35]

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 called OS X and Mac OS X), while Linux is closely related to Unix.

The rise of Microcomputers

In January 1975, Micro Instrumentation and Telemetry Systems began selling its Altair 8800 microcomputer kit by mail order. Microsoft released its first product Altair BASIC later that year, and hobbyists began developing programs to run on these kits. Tiny BASIC was published as a type-in program in Dr. Dobb's Journal , and developed collaboratively.

In 1976, Peter R. Jennings for instance created his Microchess program for MOS Technology's KIM-1 kit, but since it did not come with a tape drive, he would send the source code in a little booklet to his mail-order customers, and they would have to type the whole program in by hand. In 1978, Kathe and Dan Spracklen released the source of their Sargon (chess) program in a computer magazine. Jennings later switched to selling paper tape, and eventually compact cassettes with the program on it.

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, which could theoretically have been used to scan in the listings rather than transcribe them by hand, was not yet in wide use.)

Even with the spread 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 making and attaching cassette tapes to magazines.

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:

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

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. [37] They similarly dominated the European market with localized versions of already successful products. [38]

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. Microsoft, by successfully negotiating with IBM to develop the first operating system for the PC (MS-DOS), profited enormously from the PC's success over the following decades, via the success of MS-DOS and its add-on-cum-successor, Microsoft Windows. Winning the negotiation was a pivotal moment in Microsoft's history.

Free and open source software

Free and Open Source Software (FOSS) refers to software that is both freely available for use and distributed under licenses that grant users the freedom to access, modify, and share the software's source code. This approach contrasts with proprietary software, where the source code is typically closed and usage is restricted by licensing agreements. FOSS promotes collaboration and transparency, enabling developers and users worldwide to contribute to the software's improvement, tailor it to their needs, and share enhancements without legal or financial barriers. Popular examples of FOSS include operating systems like Linux, web browsers like Mozilla Firefox, and programming languages like Python. The philosophy behind FOSS not only drives technological innovation but also fosters a global community committed to creating accessible and adaptable software for diverse needs.

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 [39]
  2. Data structures [40]
  3. Analysis of Algorithms [41]
  4. Formal languages [42] and compiler construction [43]
  5. Computer Graphics Algorithms [44]
  6. Sorting and Searching [45]
  7. Numerical Methods, [46] Optimization and Statistics [47]
  8. Artificial Intelligence [48] and Machine Learning [49]

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

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-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

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/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

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 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
WordPerfect for DOS

Spreadsheet VisiCalc Lotus 1-2-3
CAD/CAM IGES VersaCAD Dassault Systèmes Autodesk 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
Framework FRED
Paradox
QuickBASIC
Framework II FRED
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 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

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
Framework III FRED
Bash
LPC
Modula-3
PowerBASIC
Turbo Pascal OOP
VisSim
FL
AMOS BASIC
AMPL
EuLisp
Haskell
J
Object Oberon
Z Shell
Operating
systems
Windows 2.0 MS-DOS 4
Windows 2.1x
OS/2
A/UX
EPCO Windows 3.0
Computer
networks
Morris worm World Wide Web
starts
HTML
Computer
graphics
JPEG and GIF Pixar's Tin Toy
wins Oscar
AutoDesk 3D Studio
Word
processors
Microsoft Works for DOS PC Magazine Reviews
55 Packages
WordPerfect 5.1
Word for Windows
Microsoft Office for Windows
Spreadsheet Excel for Windows Quattro 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
Framework IV FRED
Turbo Pascal
Dylan
Ruby
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 browser NetWare 4 Netscape Navigator
Computer
graphics
OpenGL Nvidia founded
Word
processors
Microsoft Works Novell buys WordPerfect
CAD/CAM EDS buys
Unigraphics
CADAM & CATIA
begin unification
AutoCAD 12 Simple Vector
Format

1995–1998

1995199619971998
Programming
languages
Ada 95
ColdFusion
Delphi
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
REALbasic
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 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

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 850 NetWare 4 Netscape Navigator
Computer
graphics
S3 Savage 4
GeForce 256
Radeon DDR (R100) Nvidia Kyro II
GeForce 3
Word
processors
Sun buys Star Division
CAD/CAM Pro/Engineer 2000 AutoCAD 2000 EDS buys SDRC Unigraphics NX
Autodesk buys Revit

2003–2006

2003200420052006
Programming
languages
Factor
Nemerle
Scala
Squirrel
Alma-0
Boo
FreeBASIC
Groovy
Little b
Subtext
Ada 2005
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
Android Windows 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 Creed Up 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
Dart Ada 2012
Elixir
Julia
TypeScript

CryEngine#CryEngine 3 (BeamNG.drive)

Xojo 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
CryEngine3 and its 3D soft body physics

See also

Related Research Articles

<span class="mw-page-title-main">Assembly language</span> Low-level programming language

In computer programming, assembly language, often referred to simply as assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence between the instructions in the language and the architecture's machine code instructions. Assembly language usually has one statement per machine instruction (1:1), but constants, comments, assembler directives, symbolic labels of, e.g., memory locations, registers, and macros are generally also supported.

<span class="mw-page-title-main">Computing</span> Activity involving calculations or computing machinery

Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithmic processes, and the development of both hardware and software. Computing has scientific, engineering, mathematical, technological, and social aspects. Major computing disciplines include computer engineering, computer science, cybersecurity, data science, information systems, information technology, and software engineering.

Computer programming or coding is the composition of sequences of instructions, called programs, that computers can follow to perform tasks. It involves designing and implementing algorithms, step-by-step specifications of procedures, by writing code in one or more programming languages. Programmers typically use high-level programming languages that are more easily intelligible to humans than machine code, which is directly executed by the central processing unit. Proficient programming usually requires expertise in several different subjects, including knowledge of the application domain, details of programming languages and generic code libraries, specialized algorithms, and formal logic.

<span class="mw-page-title-main">Computer program</span> Instructions a computer can execute

A computer program is a sequence or set of instructions in a programming language for a computer to execute. It is one component of software, which also includes documentation and other intangible components.

A fourth-generation programming language (4GL) is a high-level computer programming language that belongs to a class of languages envisioned as an advancement upon third-generation programming languages (3GL). Each of the programming language generations aims to provide a higher level of abstraction of the internal computer hardware details, making the language more programmer-friendly, powerful, and versatile. While the definition of 4GL has changed over time, it can be typified by operating more with large collections of information at once rather than focusing on just bits and bytes. Languages claimed to be 4GL may include support for database management, report generation, mathematical optimization, GUI development, or web development. Some researchers state that 4GLs are a subset of domain-specific languages.

PL/I is a procedural, imperative computer programming language initially developed by IBM. It is designed for scientific, engineering, business and system programming. It has been in continuous use by academic, commercial and industrial organizations since it was introduced in the 1960s.

<span class="mw-page-title-main">Time-sharing</span> Computing resource shared by concurrent users

In computing, time-sharing is the concurrent sharing of a computing resource among many tasks or users by giving each task or user a small slice of processing time. This quick switch between tasks or users gives the illusion of simultaneous execution. It enables multi-tasking by a single user or enables multiple-user sessions.

<span class="mw-page-title-main">History of operating systems</span> Aspect of computing history

Computer operating systems (OSes) provide a set of functions needed and used by most application programs on a computer, and the links needed to control and synchronize computer hardware. On the first computers, with no operating system, every program needed the full hardware specification to run correctly and perform standard tasks, and its own drivers for peripheral devices like printers and punched paper card readers. The growing complexity of hardware and application programs eventually made operating systems a necessity for everyday use.

A computing platform, digital platform, or software platform is the infrastructure on which software is executed. While the individual components of a computing platform may be obfuscated under layers of abstraction, the summation of the required components comprise the computing platform.

Originally, the word computing was synonymous with counting and calculating, and the science and technology of mathematical calculations. Today, "computing" means using computers and other computing machines. It includes their operation and usage, the electrical processes carried out within the computing hardware itself, and the theoretical concepts governing them.

<span class="mw-page-title-main">Apollo Computer</span> Manufacturer of Apollo/Domain workstations in the 1980s

Apollo Computer Inc., founded in 1980 in Chelmsford, Massachusetts, by William Poduska and others, developed and produced Apollo/Domain workstations in the 1980s. Along with Symbolics and Sun Microsystems, Apollo was one of the first vendors of graphical workstations in the 1980s. Like computer companies at the time and unlike manufacturers of IBM PC compatibles, Apollo produced much of its own hardware and software.

<span class="mw-page-title-main">Apollo Guidance Computer</span> Guidance and navigation computer used in Apollo spacecraft

The Apollo Guidance Computer (AGC) was a digital computer produced for the Apollo program that was installed on board each Apollo command module (CM) and Apollo Lunar Module (LM). The AGC provided computation and electronic interfaces for guidance, navigation, and control of the spacecraft. The AGC was the first computer based on silicon integrated circuits. The computer's performance was comparable to the first generation of home computers from the late 1970s, such as the Apple II, TRS-80, and Commodore PET.

Application software is any computer program that is intended for end-user use – not operating, administering or programming the computer. An application is any program that can be categorized as application software. Common types of applications include word processor, media player and accounting software.

<span class="mw-page-title-main">History of software engineering</span>

The history of software engineering begins around the 1960s. Writing software has evolved into a profession concerned with how best to maximize the quality of software and of how to create it. Quality can refer to how maintainable software is, to its stability, speed, usability, testability, readability, size, cost, security, and number of flaws or "bugs", as well as to less measurable qualities like elegance, conciseness, and customer satisfaction, among many other attributes. How best to create high quality software is a separate and controversial problem covering software design principles, so-called "best practices" for writing code, as well as broader management issues such as optimal team size, process, how best to deliver software on time and as quickly as possible, work-place "culture", hiring practices, and so forth. All this falls under the broad rubric of software engineering.

<span class="mw-page-title-main">Women in computing</span> Role of women in computing

Women in computing were among the first programmers in the early 20th century, and contributed substantially to the industry. As technology and practices altered, the role of women as programmers has changed, and the recorded history of the field has downplayed their achievements. Since the 18th century, women have developed scientific computations, including Nicole-Reine Lepaute's prediction of Halley's Comet, and Maria Mitchell's computation of the motion of Venus.

The history of IBM mainframe operating systems is significant within the history of mainframe operating systems, because of IBM's long-standing position as the world's largest hardware supplier of mainframe computers. IBM mainframes run operating systems supplied by IBM and by third parties.

<span class="mw-page-title-main">Computer architecture</span> Set of rules describing computer system

In computer science and computer engineering, computer architecture is a description of the structure of a computer system made from component parts. It can sometimes be a high-level description that ignores details of the implementation. At a more detailed level, the description may include the instruction set architecture design, microarchitecture design, logic design, and implementation.

<span class="mw-page-title-main">Margaret Hamilton (software engineer)</span> United States software engineer (born 1936)

Margaret Elaine Hamilton is an American computer scientist. She was director of the Software Engineering Division of the MIT Instrumentation Laboratory, which developed on-board flight software for NASA's Apollo program. She later founded two software companies—Higher Order Software in 1976 and Hamilton Technologies in 1986, both in Cambridge, Massachusetts.

<span class="mw-page-title-main">Timeline of women in computing</span>

This is a timeline of women in computing. It covers the time when women worked as "human computers" and then as programmers of physical computers. Eventually, women programmers went on to write software, develop Internet technologies and other types of programming. Women have also been involved in computer science, various related types of engineering and computer hardware.

References

  1. Ancient Discoveries, Episode 11: Ancient Robots, History Channel, archived from the original on March 1, 2014, retrieved 2008-09-06
  2. Freeth, Tony (2009). "Decoding an Ancient Computer: Greek Technology Tracked the Heavens". Scientific American. 301 (6): 76–83. Bibcode:2009SciAm.301f..76F. doi:10.1038/scientificamerican1209-76. PMID   20058643 . Retrieved 2022-10-15.
  3. Evans 2018, p. 21.
  4. 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.
  5. Evans 2018, p. 39.
  6. Light 1999, p. 469.
  7. Light 1999, p. 470.
  8. Light 1999, p. 472.
  9. Light 1999, p. 473.
  10. Evans 2018, p. 51.
  11. Connolly, Cornelia; Hall, Tony; Lenaghan, Jim (2018-01-10). "The women who led the way in computer programming". RTE.ie. Retrieved 2018-11-25.
  12. Smith 2013, p. 6.
  13. 1 2 Smith 2013, p. 7.
  14. 1 2 3 Gürer 1995, p. 176.
  15. Ceruzzi 1998, p. 84-85.
  16. 1 2 3 Gürer 1995, p. 177.
  17. "Frances Holberton, Pioneer in Computer Languages, Dies". The Courier-Journal. December 12, 2001. Retrieved November 24, 2018 via Newspapers.com.
  18. Jean E. Sammet (1969). Programming Languages: History and Fundamentals, Prentice Hall, Englewood Cliffs, New Jersey.
  19. R.W. Bemer (1969). A politico-social history of Algol, Annual Review in Automatic Programming, pp 151-237. Pergamon Press, Oxford.
  20. Ceruzzi 1998, p. 92.
  21. 1 2 3 Gürer 1995, p. 179.
  22. "Computer Authority to Speak Here". The Times. April 9, 1972. Retrieved October 13, 2018 via Newspapers.com.
  23. 1 2 3 4 5 6 7 8 9 Harvey IV, Harry Gould (13 October 2015). "Her Code Got Humans on the Moon—And Invented Software Itself". WIRED. Retrieved 2018-11-25.
  24. "The Lines of Code That Changed Everything; Apollo 11, the JPEG, the first pop-up ad, and 33 other bits of software that have transformed our world". Slate. October 14, 2019. Retrieved October 17, 2019.
  25. 1 2 3 4 Mindell 2008, p. 149.
  26. "Margaret Hamilton". Computer History Museum. Retrieved 2018-11-25.
  27. "Meet Margaret Hamilton, the scientist who gave us "software engineering"". IEEE Software Magazine | IEEE Computer Society. 2018-06-08. Retrieved 2018-11-25.
  28. 1 2 3 4 Mindell 2008, p. 154.
  29. Mindell 2008, p. 157.
  30. Mindell 2008, p. 160.
  31. 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.
  32. Gary Myers (Nov 1985). "Tying Arrangements and the Computer Industry: Digidyne Corp. vs. Data General". Duke Law Journal. 1985 (5): 1027–1056. doi:10.2307/1372482. JSTOR   1372482.
  33. "DATA GENERAL CORP. v. DIGIDYNE CORP., 473 U.S. 908 (1985)". Justia Law. Justice WHITE, with whom Justice BLACKMUN joins, dissenting.
  34. "Archived copy" (PDF). Archived from the original (PDF) on 2017-01-01. Retrieved 2016-12-31.{{cite web}}: CS1 maint: archived copy as title (link)
  35. Ensmenger, Nathan (2010). The Computer Boys Take Over. MIT Press. p. 55. ISBN   978-0-262-05093-7.
  36. 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.
  37. Caruso, Denise (1984-04-02). "Company Strategies Boomerang". InfoWorld. pp. 80–83. Retrieved 10 February 2015.
  38. Schrage, Michael (1985-02-17). "IBM Wins Dominance in European Computer Market". Washington Post. ISSN   0190-8286 . Retrieved 2018-08-29.
  39. Booch, Grady (1997). Object-Oriented Analysis and Design with Applications. Addison-Wesley.
  40. Peter Brass. (2008) Advanced Data Structures, Cambridge University Press
  41. Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. & Stein, Clifford. (2001) Introduction to Algorithms , MIT Press and McGraw-Hill.
  42. Hopcroft, John E. and Jeffrey D. Ullman, (1979) Introduction to Automata Theory, Languages, and Computation
  43. Aho, Alfred V., Sethi, Ravi, and Ullman, Jeffrey D. (1988). Compilers: Principles, Techniques, and Tools . Addison-Wesley.
  44. Shirley, Peter. (2009) Fundamentals of Computer Graphics  3rd edition
  45. Knuth, Donald. (1998) The Art of Computer Programming: Volume 3: Sorting and Searching
  46. Press, William H., Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery. (2007) Numerical Recipes 3rd Edition: The Art of Scientific Computing
  47. Baron, Michael. (2006) Probability and Statistics for Computer Scientists
  48. Russell, Stuart J. and Peter Norvig (2009) Artificial Intelligence: A Modern Approach (3rd Edition)
  49. Mitchell, Tom. (1997) Machine Learning.
  50. Aaby, Anthony (2004). Introduction to Programming Languages
  51. Wexelblat, Richard L. History of Programming Languages
  52. Stallings (2005). Operating Systems, Internals and Design Principles. Pearson
  53. Kurose, James; Ross, Keith (2005). Computer Networking: A Top-Down Approach. Pearson.
  54. Wayne Carlson (2003) A Critical History of Computer Graphics and Animation
  55. Ferguson, R. Stuart. (2013) Practical Algorithms for 3D Computer Graphics
  56. Narayan, K. Lalit (2008). Computer Aided Design and Manufacturing. Prentice Hall

Sources