Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Computer program
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==History== {{See also|Computer programming#History|Programmer#History|History of computing|History of programming languages|History of software}} Improvements in [[software development]] are the result of improvements in [[computer hardware]]. At each stage in hardware's history, the task of [[computer programming]] changed dramatically. ===Analytical Engine=== [[File:Diagram for the computation of Bernoulli numbers.jpg|thumb|right|Lovelace's description from Note G]] In 1837, [[Jacquard machine|Jacquard's loom]] inspired [[Charles Babbage]] to attempt to build the [[Analytical Engine]].<ref name="eniac-ch1-p16">{{cite book | last = McCartney | first = Scott | title = ENIAC – The Triumphs and Tragedies of the World's First Computer | publisher = Walker and Company | year = 1999 | page = [https://archive.org/details/eniac00scot/page/16 16] | isbn = 978-0-8027-1348-3 | url = https://archive.org/details/eniac00scot/page/16 }}</ref> The names of the components of the calculating device were borrowed from the textile industry. In the textile industry, yarn was brought from the store to be milled. The device had a ''store'' which consisted of memory to hold 1,000 numbers of 50 decimal digits each.<ref name="sco-ch1-p14">{{cite book | last = Tanenbaum | first = Andrew S. | title = Structured Computer Organization, Third Edition | publisher = Prentice Hall | year = 1990 | page = [https://archive.org/details/structuredcomput00tane/page/14 14] | isbn = 978-0-13-854662-5 | url = https://archive.org/details/structuredcomput00tane/page/14 }}</ref> Numbers from the ''store'' were transferred to the ''mill'' for processing. The engine was programmed using two sets of perforated cards. One set directed the operation and the other set inputted the variables.<ref name="eniac-ch1-p16" /><ref>{{cite journal | first = Allan G. | last = Bromley | author-link = Allan G. Bromley | year = 1998 | url = http://profs.scienze.univr.it/~manca/storia-informatica/babbage.pdf | title = Charles Babbage's Analytical Engine, 1838 | journal = [[IEEE Annals of the History of Computing]] | volume = 20 | number = 4 | pages = 29–45 | doi = 10.1109/85.728228 | s2cid = 2285332 | access-date = 2015-10-30 | archive-date = 2016-03-04 | archive-url = https://web.archive.org/web/20160304081812/http://profs.scienze.univr.it/~manca/storia-informatica/babbage.pdf | url-status = live }}</ref> However, the thousands of cogged wheels and gears never fully worked together.<ref name="sco-ch1-p15">{{cite book | last = Tanenbaum | first = Andrew S. | title = Structured Computer Organization, Third Edition | publisher = Prentice Hall | year = 1990 | page = [https://archive.org/details/structuredcomput00tane/page/15 15] | isbn = 978-0-13-854662-5 | url = https://archive.org/details/structuredcomput00tane/page/15 }}</ref> [[Ada Lovelace]] worked for Charles Babbage to create a description of the Analytical Engine (1843).<ref>{{citation |author1 = J. Fuegi |author2 =J. Francis |title = Lovelace & Babbage and the creation of the 1843 'notes' |journal = Annals of the History of Computing |volume = 25 |issue = 4 |date=October–December 2003 |doi = 10.1109/MAHC.2003.1253887 |pages = 16, 19, 25}}</ref> The description contained Note G which completely detailed a method for calculating [[Bernoulli number]]s using the Analytical Engine. This note is recognized by some historians as the world's first ''computer program''.<ref name="sco-ch1-p15"/> ===Universal Turing machine=== [[File:Universal Turing machine.svg|350px|right]] In 1936, [[Alan Turing]] introduced the [[Universal Turing machine]], a theoretical device that can model every computation.<ref name="discrete-ch10-p654">{{cite book | last = Rosen | first = Kenneth H. | title = Discrete Mathematics and Its Applications | publisher = McGraw-Hill, Inc. | year = 1991 | page = [https://archive.org/details/discretemathemat00rose/page/654 654] | isbn = 978-0-07-053744-6 | url = https://archive.org/details/discretemathemat00rose/page/654 | quote = Turing machines can model all the computations that can be performed on a computing machine. }}</ref> It is a [[finite-state machine]] that has an infinitely long read/write tape. The machine can move the tape back and forth, changing its contents as it performs an [[algorithm]]. The machine starts in the initial state, goes through a sequence of steps, and halts when it encounters the halt state.<ref name="formal_languages-ch9-p234">{{cite book | last = Linz | first = Peter | title = An Introduction to Formal Languages and Automata | publisher = D. C. Heath and Company | year = 1990 | page = 234 | isbn = 978-0-669-17342-0 }}</ref> All present-day computers are [[Turing complete]].<ref name="formal_languages-ch9-p243">{{cite book | last = Linz | first = Peter | title = An Introduction to Formal Languages and Automata | publisher = D. C. Heath and Company | year = 1990 | page = 243 | isbn = 978-0-669-17342-0 | quote = [A]ll the common mathematical functions, no matter how complicated, are Turing-computable. }}</ref> ===ENIAC=== [[File:ENIAC-changing_a_tube.jpg|thumb|right|Glenn A. Beck changing a tube in ENIAC]] The [[Electronic Numerical Integrator And Computer]] (ENIAC) was built between July 1943 and Fall 1945. It was a [[Turing complete]], general-purpose computer that used 17,468 [[vacuum tube]]s to create the [[Electronic circuit|circuits]]. At its core, it was a series of [[Pascaline]]s wired together.<ref name="eniac-ch5-p102">{{cite book | last = McCartney | first = Scott | title = ENIAC – The Triumphs and Tragedies of the World's First Computer | publisher = Walker and Company | year = 1999 | page = [https://archive.org/details/eniac00scot/page/102 102] | isbn = 978-0-8027-1348-3 | url = https://archive.org/details/eniac00scot/page/102 }}</ref> Its 40 units weighed 30 tons, occupied {{convert|1,800|sqft|m2|0}}, and consumed $650 per hour ([[Inflation|in 1940s currency]]) in electricity when idle.<ref name="eniac-ch5-p102" /> It had 20 [[base-10]] [[Accumulator (computing)|accumulators]]. Programming the ENIAC took up to two months.<ref name="eniac-ch5-p102" /> Three function tables were on wheels and needed to be rolled to fixed function panels. Function tables were connected to function panels by plugging heavy black cables into [[plugboard]]s. Each function table had 728 rotating knobs. Programming the ENIAC also involved setting some of the 3,000 switches. Debugging a program took a week.<ref name="eniac-ch5-p94">{{cite book | last = McCartney | first = Scott | title = ENIAC – The Triumphs and Tragedies of the World's First Computer | publisher = Walker and Company | year = 1999 | page = [https://archive.org/details/eniac00scot/page/94 94] | isbn = 978-0-8027-1348-3 | url = https://archive.org/details/eniac00scot/page/94 }}</ref> It ran from 1947 until 1955 at [[Aberdeen Proving Ground]], calculating hydrogen bomb parameters, predicting weather patterns, and producing firing tables to aim artillery guns.<ref name="eniac-ch5-p107">{{cite book | last = McCartney | first = Scott | title = ENIAC – The Triumphs and Tragedies of the World's First Computer | publisher = Walker and Company | year = 1999 | page = [https://archive.org/details/eniac00scot/page/107 107] | isbn = 978-0-8027-1348-3 | url = https://archive.org/details/eniac00scot/page/107 }}</ref> ===Stored-program computers=== Instead of plugging in cords and turning switches, a [[stored-program computer]] loads its instructions into [[Random-access memory|memory]] just like it loads its data into memory.<ref name="eniac-ch6-p120">{{cite book | last = McCartney | first = Scott | title = ENIAC – The Triumphs and Tragedies of the World's First Computer | publisher = Walker and Company | year = 1999 | page = [https://archive.org/details/eniac00scot/page/120 120] | isbn = 978-0-8027-1348-3 | url = https://archive.org/details/eniac00scot/page/120 }}</ref> As a result, the computer could be programmed quickly and perform calculations at very fast speeds.<ref name="eniac-ch6-p118">{{cite book | last = McCartney | first = Scott | title = ENIAC – The Triumphs and Tragedies of the World's First Computer | publisher = Walker and Company | year = 1999 | page = [https://archive.org/details/eniac00scot/page/118 118] | isbn = 978-0-8027-1348-3 | url = https://archive.org/details/eniac00scot/page/118 }}</ref> [[Presper Eckert]] and [[John Mauchly]] built the ENIAC. The two engineers introduced the ''stored-program concept'' in a three-page memo dated February 1944.<ref name="eniac-ch6-p119">{{cite book | last = McCartney | first = Scott | title = ENIAC – The Triumphs and Tragedies of the World's First Computer | publisher = Walker and Company | year = 1999 | page = [https://archive.org/details/eniac00scot/page/119 119] | isbn = 978-0-8027-1348-3 | url = https://archive.org/details/eniac00scot/page/119 }}</ref> Later, in September 1944, [[John von Neumann]] began working on the ENIAC project. On June 30, 1945, von Neumann published the ''[[First Draft of a Report on the EDVAC]]'', which equated the structures of the computer with the structures of the human brain.<ref name="eniac-ch6-p118"/> The design became known as the [[von Neumann architecture]]. The architecture was simultaneously deployed in the constructions of the [[EDVAC]] and [[EDSAC]] computers in 1949.<ref name="eniac-ch6-p123">{{cite book | last = McCartney | first = Scott | title = ENIAC – The Triumphs and Tragedies of the World's First Computer | publisher = Walker and Company | year = 1999 | page = [https://archive.org/details/eniac00scot/page/123 123] | isbn = 978-0-8027-1348-3 | url = https://archive.org/details/eniac00scot/page/123 }}</ref><ref>{{Citation |last=Huskey |first=Harry D. |title=EDVAC |date=2003-01-01 |encyclopedia=Encyclopedia of Computer Science |pages=626–628 |url=https://dl.acm.org/doi/10.5555/1074100.1074362 |access-date=2025-04-25 |place=GBR |publisher=John Wiley and Sons Ltd. |isbn=978-0-470-86412-8}}</ref> The [[IBM System/360]] (1964) was a family of computers, each having the same [[instruction set architecture]]. The [[IBM System/360 Model 20|Model 20]] was the smallest and least expensive. Customers could upgrade and retain the same [[application software]].<ref name="sco-ch1-p21">{{cite book | last = Tanenbaum | first = Andrew S. | title = Structured Computer Organization, Third Edition | publisher = Prentice Hall | year = 1990 | page = [https://archive.org/details/structuredcomput00tane/page/n42 21] | isbn = 978-0-13-854662-5 | url = https://archive.org/details/structuredcomput00tane | url-access = registration }}</ref> The [[IBM System/360 Model 195|Model 195]] was the most premium. Each System/360 model featured [[multiprogramming]]<ref name="sco-ch1-p21"/>—having multiple [[Process (computing)|processes]] in [[random-access memory|memory]] at once. When one process was waiting for [[input/output]], another could compute. IBM planned for each model to be programmed using [[PL/1]].<ref name="cpl_3rd-ch2-27">{{cite book | last = Wilson | first = Leslie B. | title = Comparative Programming Languages, Third Edition | publisher = Addison-Wesley | year = 2001 | page = 27 | isbn = 0-201-71012-9 }}</ref> A committee was formed that included [[COBOL]], [[Fortran]] and [[ALGOL]] programmers. The purpose was to develop a language that was comprehensive, easy to use, extendible, and would replace Cobol and Fortran.<ref name="cpl_3rd-ch2-27"/> The result was a large and complex language that took a long time to [[compile]].<ref name="cpl_3rd-ch2-29">{{cite book | last = Wilson | first = Leslie B. | title = Comparative Programming Languages, Third Edition | publisher = Addison-Wesley | year = 2001 | page = 29 | isbn = 0-201-71012-9 }}</ref> [[File:Dg-nova3.jpg|thumb|Switches for manual input on a [[Data General Nova]] 3, manufactured in the mid-1970s]] Computers manufactured until the 1970s had front-panel switches for manual programming.<ref name="osc-ch1-p6">{{cite book | last = Silberschatz | first = Abraham | title = Operating System Concepts, Fourth Edition | publisher = Addison-Wesley | year = 1994 | page = 6 | isbn = 978-0-201-50480-4 }}</ref> The computer program was written on paper for reference. An instruction was represented by a configuration of on/off settings. After setting the configuration, an execute button was pressed. This process was then repeated. Computer programs also were automatically inputted via [[paper tape]], [[punched cards]] or [[9-track tape|magnetic-tape]]. After the medium was loaded, the starting address was set via switches, and the execute button was pressed.<ref name="osc-ch1-p6"/> ===Very Large Scale Integration=== [[Image:Diopsis.jpg|thumb|right|A VLSI integrated-circuit [[die (integrated circuit)|die]] ]] A major milestone in software development was the invention of the [[Very Large Scale Integration]] (VLSI) circuit (1964). [[Robert Noyce]], co-founder of [[Fairchild Semiconductor]] (1957) and [[Intel]] (1968), achieved a technological improvement to refine the [[Semiconductor device fabrication|production]] of [[field-effect transistor]]s (1963).<ref name="digital_age">{{cite book | url=https://books.google.com/books?id=UUbB3d2UnaAC&pg=PA46 | title=To the Digital Age: Research Labs, Start-up Companies, and the Rise of MOS | publisher=Johns Hopkins University Press | year=2002 | isbn=9780801886393 | access-date=February 3, 2022 | archive-date=February 2, 2023 | archive-url=https://web.archive.org/web/20230202181649/https://books.google.com/books?id=UUbB3d2UnaAC&pg=PA46 | url-status=live }}</ref> The goal is to alter the [[electrical resistivity and conductivity]] of a [[semiconductor junction]]. First, naturally occurring [[silicate minerals]] are converted into [[polysilicon]] rods using the [[Siemens process]].<ref name="osti">{{cite web | url=https://www.osti.gov/servlets/purl/1497235 | title=Manufacturing of Silicon Materials for Microelectronics and Solar PV | publisher=Sandia National Laboratories | year=2017 | access-date=February 8, 2022 | last1=Chalamala | first1=Babu | archive-date=March 23, 2023 | archive-url=https://web.archive.org/web/20230323163602/https://www.osti.gov/biblio/1497235 | url-status=live }}</ref> The [[Czochralski process]] then converts the rods into a [[monocrystalline silicon]], [[Boule (crystal)|boule crystal]].<ref name="britannica_wafer">{{cite web | url=https://www.britannica.com/technology/integrated-circuit/Fabricating-ICs#ref837156 | title=Fabricating ICs Making a base wafer | publisher=Britannica | access-date=February 8, 2022 | archive-date=February 8, 2022 | archive-url=https://web.archive.org/web/20220208103132/https://www.britannica.com/technology/integrated-circuit/Fabricating-ICs#ref837156 | url-status=live }}</ref> The [[crystal]] is then thinly sliced to form a [[Wafer (electronics)|wafer]] [[Substrate (materials science)|substrate]]. The [[planar process]] of [[photolithography]] then ''integrates'' unipolar transistors, [[capacitor]]s, [[diode]]s, and [[resistor]]s onto the wafer to build a matrix of [[metal–oxide–semiconductor]] (MOS) transistors.<ref name="anysilicon">{{cite web | url=https://anysilicon.com/introduction-to-nmos-and-pmos-transistors/ | title=Introduction to NMOS and PMOS Transistors | date=4 November 2021 | publisher=Anysilicon | access-date=February 5, 2022 | archive-date=6 February 2022 | archive-url=https://web.archive.org/web/20220206051146/https://anysilicon.com/introduction-to-nmos-and-pmos-transistors/ | url-status=live }}</ref><ref name="britannica_micropressor">{{cite web | url=https://www.britannica.com/technology/microprocessor#ref36149 | title=microprocessor definition | publisher=Britannica | access-date=April 1, 2022 | archive-date=April 1, 2022 | archive-url=https://web.archive.org/web/20220401085141/https://www.britannica.com/technology/microprocessor#ref36149 | url-status=live }}</ref> The MOS transistor is the primary component in ''integrated circuit chips''.<ref name="digital_age"/> Originally, integrated circuit chips had their function set during manufacturing. During the 1960s, controlling the electrical flow migrated to programming a [[Diode matrix|matrix]] of [[read-only memory]] (ROM). The matrix resembled a two-dimensional array of fuses. The process to embed instructions onto the matrix was to burn out the unneeded connections. There were so many connections, [[firmware]] programmers wrote a ''computer program'' on another chip to oversee the burning. The technology became known as [[Programmable ROM]]. In 1971, Intel [[stored-program computer|installed the computer program onto the chip]] and named it the [[Intel 4004]] [[microprocessor]].<ref name="intel_4004">{{cite web | url=https://spectrum.ieee.org/chip-hall-of-fame-intel-4004-microprocessor | title=Chip Hall of Fame: Intel 4004 Microprocessor | publisher=Institute of Electrical and Electronics Engineers | date=July 2, 2018 | access-date=January 31, 2022 | archive-date=February 7, 2022 | archive-url=https://web.archive.org/web/20220207101915/https://spectrum.ieee.org/chip-hall-of-fame-intel-4004-microprocessor | url-status=live }}</ref> [[Image:Slt1.jpg|thumb|right|IBM's System/360 (1964) CPU was not a microprocessor.]] The terms ''microprocessor'' and [[central processing unit]] (CPU) are now used interchangeably. However, CPUs predate microprocessors. For example, the [[IBM System/360]] (1964) had a CPU made from [[IBM Solid Logic Technology|circuit boards containing discrete components on ceramic substrates]].<ref name="ibm_360">{{cite web | url=https://www.computer-museum.ru/books/archiv/ibm36040.pdf |archive-url=https://ghostarchive.org/archive/20221010/https://www.computer-museum.ru/books/archiv/ibm36040.pdf |archive-date=2022-10-10 |url-status=live | title=360 Revolution | publisher=Father, Son & Co. | year=1990 | access-date=February 5, 2022 }}</ref> ===x86 series=== [[File:IBM_PC-IMG_7271_(transparent).png|thumb|right|The original [[IBM Personal Computer]] (1981) used an Intel 8088 microprocessor.]] In 1978, the modern [[software development]] environment began when Intel upgraded the [[Intel 8080]] to the [[Intel 8086]]. Intel simplified the Intel 8086 to manufacture the cheaper [[Intel 8088]].<ref name="infoworld_8-23-82">{{cite web | url=https://books.google.com/books?id=VDAEAAAAMBAJ&pg=PA22 | title=Bill Gates, Microsoft and the IBM Personal Computer | publisher=InfoWorld | date=August 23, 1982 | access-date=1 February 2022 | archive-date=18 February 2023 | archive-url=https://web.archive.org/web/20230218183644/https://books.google.com/books?id=VDAEAAAAMBAJ&pg=PA22 | url-status=live }}</ref> [[IBM]] embraced the Intel 8088 when they entered the [[personal computer]] market (1981). As [[consumer]] [[demand]] for personal computers increased, so did Intel's microprocessor development. The succession of development is known as the [[x86|x86 series]]. The [[x86 assembly language]] is a family of [[backward-compatible]] [[machine instruction]]s. Machine instructions created in earlier microprocessors were retained throughout microprocessor upgrades. This enabled consumers to purchase new computers without having to purchase new [[application software]]. The major categories of instructions are:{{efn|For more information, visit [[X86 assembly language#Instruction types]].}} * Memory instructions to set and access numbers and [[String (computer science)|strings]] in [[random-access memory]]. * Integer [[arithmetic logic unit]] (ALU) instructions to perform the primary arithmetic operations on [[integers]]. * Floating point ALU instructions to perform the primary arithmetic operations on [[real number]]s. * [[Call stack]] instructions to push and pop [[Word (computer architecture)|words]] needed to allocate memory and interface with [[Function (computer programming)|functions]]. * [[Single instruction, multiple data]] (SIMD) instructions{{efn|introduced in 1999}} to increase speed when multiple processors are available to perform the same [[algorithm]] on an [[Array data structure|array of data]]. ===Changing programming environment=== [[File:DEC VT100 terminal transparent.png|thumb|right|The [[Digital Equipment Corporation|DEC]] [[VT100]] (1978) was a widely used [[computer terminal]].]] VLSI circuits enabled the [[programming environment]] to advance from a [[computer terminal]] (until the 1990s) to a [[graphical user interface]] (GUI) computer. Computer terminals limited programmers to a single [[Shell (computing)|shell]] running in a [[command-line interface|command-line environment]]. During the 1970s, full-screen source code editing became possible through a [[text-based user interface]]. Regardless of the technology available, the goal is to program in a [[programming language]].
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)