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 programming
(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== [[File:Ada lovelace.jpg|thumb|[[Ada Lovelace]], whose notes were added to the end of [[Luigi Menabrea]]'s paper included the first [[algorithm]] designed for processing by [[Charles Babbage]]'s [[Analytical Engine]]. She is often recognized as history's first computer programmer.]] {{See also|Computer program#History|Programmer#History|History of programming languages}} [[Program (machine)|Programmable devices]] have existed for centuries. As early as the 9th century, a programmable [[music sequencer]] was invented by the Persian [[Banu Musa]] brothers, who described an automated mechanical [[flute]] player in the ''[[Book of Ingenious Devices]]''.<ref name=Koetsier>{{cite journal |last1=Koetsier |first1=Teun |year=2001 |title=On the prehistory of programmable machines: musical automata, looms, calculators |journal=Mechanism and Machine Theory |volume=36 |issue=5 |pages=589β603 |publisher=Elsevier |doi=10.1016/S0094-114X(01)00005-2 }}</ref><ref>{{cite journal |last1=Kapur |first1=Ajay |last2=Carnegie |first2=Dale |last3=Murphy |first3=Jim |last4=Long |first4=Jason |title=Loudspeakers Optional: A history of non-loudspeaker-based electroacoustic music |journal=[[Organised Sound]] |date=2017 |volume=22 |issue=2 |pages=195β205 |doi=10.1017/S1355771817000103 |publisher=[[Cambridge University Press]] |issn=1355-7718|doi-access=free }}</ref> In 1206, the Arab engineer [[Al-Jazari]] invented a programmable [[drum machine]] where a musical mechanical [[automaton]] could be made to play different rhythms and drum patterns, via pegs and [[Cam (mechanism)|cam]]s.<ref>{{Cite journal|title=The Museum of Music: A History of Mechanical Instruments|first=Charles B.|last=Fowler|journal=Music Educators Journal|volume=54|issue=2|date=October 1967|pages=45β49|doi=10.2307/3391092|jstor=3391092|s2cid=190524140}}</ref><ref name=Sharkey>[[Noel Sharkey]] (2007), [https://web.archive.org/web/20070629182810/http://www.shef.ac.uk/marcoms/eview/articles58/robot.html A 13th Century Programmable Robot], [[University of Sheffield]]</ref> In 1801, the [[Jacquard loom]] could produce entirely different weaves by changing the "program" β a series of [[Card stock|pasteboard]] cards with holes punched in them. [[Code-breaking]] algorithms have also existed for centuries. In the 9th century, the [[Mathematics in medieval Islam|Arab mathematician]] [[Al-Kindi]] described a [[cryptographic]] algorithm for deciphering encrypted code, in ''A Manuscript on Deciphering Cryptographic Messages''. He gave the first description of [[cryptanalysis]] by [[frequency analysis]], the earliest code-breaking algorithm.<ref>{{cite book |last1=Dooley |first1=John F. |title=A Brief History of Cryptology and Cryptographic Algorithms |date=2013 |publisher=Springer Science & Business Media |isbn=9783319016283 |pages=12β3}}</ref> The first [[computer program]] is generally dated to 1843 when mathematician [[Ada Lovelace]] published an [[algorithm]] to calculate a sequence of [[Bernoulli numbers]], intended to be carried out by [[Charles Babbage]]'s [[Analytical Engine]].<ref name="IEEE">{{Cite journal | last1 = Fuegi | first1 = J. | last2 = Francis | first2 = J. | title = Lovelace & Babbage and the Creation of the 1843 'notes' | journal = IEEE Annals of the History of Computing | volume = 25 | issue = 4 | pages = 16 | year = 2003 | doi = 10.1109/MAHC.2003.1253887}}</ref> The algorithm, which was conveyed through notes on a translation of Luigi Federico Menabrea's paper on the analytical engine was mainly conceived by Lovelace as can be discerned through her correspondence with Babbage. However, Charles Babbage himself had written a program for the AE in 1837.<ref name="IEEE2021">{{Cite journal | last1 = Rojas | first1 = R. | title = The Computer Programs of Charles Babbage | journal = IEEE Annals of the History of Computing | volume = 43 | issue = 1 | pages = 6β18 | year = 2021 | doi = 10.1109/MAHC.2020.3045717}}</ref><ref name="IEEE2024">{{Cite journal | last1 = Rojas | first1 = R. | title = The First Computer Program | journal = Communications of the ACM | volume = 67 | issue = 6 | pages = 78β81 | year = 2024 | doi = 10.1145/3624731| doi-access = free | url = https://refubium.fu-berlin.de/bitstream/fub188/44090/1/3624731.pdf }}</ref> Lovelace was also the first to see a broader application for the analytical engine beyond mathematical calculations. [[File:PunchCardDecks.agr.jpg|thumb|Data and instructions were once stored on external [[punched card]]s, which were kept in order and arranged in program decks.]] In the 1880s, [[Herman Hollerith]] invented the concept of storing ''data'' in machine-readable form.<ref>{{cite web|url=http://www.columbia.edu/acis/history/hollerith.html|title=Columbia University Computing History β Herman Hollerith|last=da Cruz|first=Frank|date=2020-03-10|website=Columbia University|publisher=Columbia.edu|url-status=live|archive-url=https://web.archive.org/web/20200429210742/http://www.columbia.edu/cu/computinghistory/hollerith.html|archive-date=2020-04-29|access-date=2010-04-25}}</ref> Later a [[plugboard|control panel]] (plug board) added to his 1906 Type I Tabulator allowed it to be programmed for different jobs, and by the late 1940s, [[unit record equipment]] such as the [[IBM 602]] and [[IBM 604]], were programmed by control panels in a similar way, as were the first [[electronic computer]]s. However, with the concept of the [[stored-program computer]] introduced in 1949, both programs and data were stored and manipulated in the same way in [[computer memory]].<ref>{{cite web |title=Memory & Storage {{!}} Timeline of Computer History {{!}} Computer History Museum |url=https://www.computerhistory.org/timeline/memory-storage/ |website=www.computerhistory.org |access-date=3 June 2021 |archive-date=May 27, 2021 |archive-url=https://web.archive.org/web/20210527071533/https://www.computerhistory.org/timeline/memory-storage/ |url-status=live }}</ref> ===Machine language=== [[Machine code]] was the language of early programs, written in the [[instruction set architecture|instruction set]] of the particular machine, often in [[binary numeral system|binary]] notation. [[Assembly language]]s were soon developed that let the programmer specify instructions in a text format (e.g., ADD X, TOTAL), with abbreviations for each operation code and meaningful names for specifying addresses. However, because an assembly language is little more than a different notation for a machine language, two machines with [[Comparison of instruction set architectures|different instruction sets]] also have different assembly languages. [[File:IBM402plugboard.Shrigley.wireside.jpg|thumb|Wired [[plugboard|control panel]] for an [[IBM 402 Accounting Machine]]. Wires connect pulse streams from the card reader to counters and other internal logic and ultimately to the printer.]] ===Compiler languages=== {{See also|Compiler}} [[High-level language]]s made the process of developing a program simpler and more understandable, and less bound to the underlying [[Computer hardware|hardware]]. The first compiler related tool, the [[A-0 System]], was developed in 1952<ref>{{cite book |last1=Ridgway|first1=Richard|title=Proceedings of the 1952 ACM national meeting (Toronto) on - ACM '52 |chapter=Compiling routines |date=1952|pages=1β5|doi=10.1145/800259.808980|isbn=9781450379250|s2cid=14878552|doi-access=free}}</ref> by [[Grace Hopper]], who also coined the term 'compiler'.<ref name="wikles1968">[[Maurice V. Wilkes]]. 1968. Computers Then and Now. Journal of the Association for Computing Machinery, 15(1):1β7, January. p. 3 (a comment in brackets added by editor), "(I do not think that the term compiler was then [1953] in general use, although it had in fact been introduced by Grace Hopper.)"</ref><ref name="computerhistory.org">[http://www.computerhistory.org/events/lectures/cobol_06121997/index.shtml] The World's First COBOL Compilers {{webarchive|url=https://web.archive.org/web/20111013021915/http://www.computerhistory.org/events/lectures/cobol_06121997/index.shtml|date=13 October 2011}}</ref> [[FORTRAN]], the first widely used high-level language to have a functional implementation, came out in 1957,<ref name = bergstein>{{cite web|url=https://www.nbcnews.com/id/wbna17704662|title=Fortran creator John Backus dies |last=Bergstein|first=Brian|date=2007-03-20|website=NBC News|url-status= live|archive-url=https://web.archive.org/web/20200429211030/http://www.nbcnews.com/id/17704662|archive-date=2020-04-29 |access-date=2010-04-25}}</ref> and many other languages were soon developedβin particular, [[COBOL]] aimed at commercial data processing, and [[Lisp (programming language)|Lisp]] for computer research. These compiled languages allow the programmer to write programs in terms that are syntactically richer, and more capable of [[abstraction (computer science)|abstracting]] the code, making it easy to target varying machine instruction sets via compilation declarations and [[Heuristic (computer science)|heuristics]]. Compilers harnessed the power of computers to make programming easier<ref name = bergstein/> by allowing programmers to specify calculations by entering a formula using [[infix notation]]. ===Source code entry=== {{See also|Computer programming in the punched card era}} Programs were mostly entered using punched cards or [[paper tape]]. By the late 1960s, [[data storage device]]s and [[computer terminal]]s became inexpensive enough that programs could be created by typing directly into the computers. [[Text editor]]s were also developed that allowed changes and corrections to be made much more easily than with [[Punched card sorter|punched cards]].
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)