Speedcoding: Difference between revisions

Content deleted Content added
added infobox
MOS:HEAD
 
(46 intermediate revisions by 38 users not shown)
Line 1:
{{Short description|High-level programming language}}
{{Use dmy dates|date=July 2022|cs1-dates=y}}
{{Use list-defined references|date=July 2022}}
{{Infobox programming language
| name = Speedcoding
| logo =
| caption =
| paradigm = [[structured programming|structured]], [[Object-oriented programming|object-oriented]], [[Generic programming|generic]]
| year = {{Start date and age|1953|df=yes}}
| designer = [[John Backus]]
| developer = [[John Backus]] &and [[IBM]]
| latest release version =
| latest release date =
Line 12 ⟶ 15:
| implementations =
| dialects =
| influenced_by = [[Assembly language]], [[Machinemachine code]]
| influenced = [[Fortran]], [[ALGOL 58]], [[BASIC]], [[C (programming language)|C]], [[Fortran]], [[PL/I]], [[PACT I]], [[MUMPS]], [[Ratfor]]
| operating_system =
| license =
Line 19 ⟶ 22:
| file_ext =
}}
{{notelist}}
 
'''Speedcoding''', '''Speedcode''' or Speedcode'''SpeedCo''' was the first higher[[high-level programming language]]{{efn|Meaning createdsymbolic forand anaimed IBMat computer.<ref>[[natural {{citelanguage]] journalexpressiveness |last=Allen|first=F.E.|title=Theas Historyopposed ofto Language[[machine Processorlanguage|machine]] Technologyor inhardware IBM|journal=IBMinstruction Journaloriented ofcoding.}} Researchcreated Development|volume=25|issue=5,for Septemberan 1981}}[[IBM]] computer.</ref name="Allen_1981"/> The language was developed by [[John W. Backus]] in 1953 for the [[IBM 701]] to support computation with [[floating point| floating point numbers]].<ref>{{cite book |title=Out of their Minds: The Lives and Discoveries of 15 Great Computer Scientists |lastname="Shasha |first=Dennis |coauthors=Cathy Lazere |year=1998 |publisher=Springer-Verlag New York, Inc. |___location=New York |isbn=0-387-98269-8 }}<Lazere_1998"/ref>
 
The idea arose from the difficulty of programming the [[IBM SSEC]] machine when Backus was hired to calculate astronomical positions in early 1950.<ref name="Booch-Backus_2006"/>
The system was an interpreter and focused on ease of use at the expense of system resources. It provided pseudo-instructions for common mathematical functions: logarithms, exponentiation, and trigonometric operations. The resident software analyzed pseudo-instructions one by one and called the appropriate subroutine. Other programmer-friendly features were decimal input/output operations. Although it substantially reduced the effort of writing many jobs, the running time of a program that was written with the help of Speedcoding was usually ten to twenty times that of machine code.<Ref>Emerson W. Pugh, Lyle R. Johnson, John H. Palmer, ''IBM's 360 and early 370 systems'', MIT Press, 1991, ISBN 0262161230, p. 38</ref> The interpreter took 310 memory words, about 30% of the memory available on a 701.<ref>F. E. Allen, ''[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.84.5616&rep=rep1&type=pdf The history of language processor technology in IBM]'', IBM Journal of Research and Development, Volume 25, Issue 5 (September 1981), p. 536</ref>
The speedcoding system was an [[Interpreter (computing)|interpreter]] and focused on ease of use at the expense of system resources. It provided pseudo-instructions for common mathematical functions: logarithms, exponentiation, and trigonometric operations. The resident software analyzed pseudo-instructions one by one and called the appropriate subroutine. Speedcoding was also the first implementation of decimal input/output operations. Although it substantially reduced the effort of writing many jobs, the running time of a program that was written with the help of Speedcoding was usually ten to twenty times that of machine code.<ref name="Pugh-Johnson-Palmer_1991"/> The interpreter took 310 memory words, about 30% of the memory available on a 701.<ref name="Allen_1981"/>
 
== History and development ==
In August 1952, several dozen IBM engineers and [[IBM 701]] customers met in [[Poughkeepsie, New York]] to exchange ideas and best practices on programming the new machines in assembly. Several attendees expressed frustration with the slow nature of assembly programming and debugging, and questioned the utility of the 701 in applications where solutions to problems were needed quickly, or when the value of a solution justified the expense of computation time but not the cost of programming and debugging. Attendees likewise complained with issues with "scaling", or the need to religiously track the decimal point in arithmetic operations.<ref name="bashe-johnson-ibm"/>
 
John W. Sheldon, a supervisor of IBM's Technical Computing Bureau attending the meeting, and others felt that an "interpretive" programming system that utilized floating point operations was the best solution to this problem. Sheldon asked John Backus, who had previously worked on a [[IBM CPC|CPC]] to [[IBM SSEC|SSEC]] code translator, to supervise the creation of a new floating-point interpretive programming language for use internal to IBM. Backus himself had previously expressed interest in improving programming methods, and observed that computing costs were roughly equally split between the cost of computation and cost of programming personnel, and that the additional expense of testing made labor the considerably larger expense. Starting in 1953, Backus and five colleagues designed this new language and named it "Speedcoding", where its use soon spread outside of IBM to customer installations of the 701 system.<ref name="bashe-johnson-ibm"/>
 
==Syntax and semantics==
Speedcoding programs are organized as a series of instructions, each of which are stored in memory as a single 72-bit data word. An instruction generally consists of two operations (OP<sub>1</sub> and OP<sub>2</sub>) and 4 memory addresses. The first operation (OP<sub>1</sub>) is a mathematical or input/output operation that has 3 associated memory addresses, one or more of which can be modified depending on the nature of the operation. Mathematical operations include basic arithmetic, square root, and trigonometry functions. The logical operations include functionality for reading, writing, skipping, and rewinding [[magnetic-tape data storage|magnetic tape]], as well as operations for interacting with data stored in [[drum memory]]. The second operation (OP<sub>2</sub>) is a logical operation that has the remaining 1 associated memory address. Logical operations allow instructions to be carried out in a different order from which they are written allowing for implementations of gotos, conditionals, loops, and other advanced behavior.<ref name="ibm-speedcoding-system-1954"/>
 
Reserved Arithmetic and Input/Output Operation Keywords<ref name="ibm-speedcoding-system-1954"/>
{{columns-list
| colwidth=5em;
| {{bulleted list
|ADD
|SUB
|ADDAB
|ABADD
|SUBAB
|ABSUB
|MPY
|NGMPY
|DIV
|NGDIV
|SQRT
|SINE
|ARTAN
|EXP
|LN
|MOVE
|WRTPJ
|WRTPK
|WRTPL
|WRTPM
|RFTPJ
|RFTPL
|RFTPM
|RBTPJ
|RBTPK
|RBTPL
|RBTPM
|SFTPJ
|SFTPK
|SFTPL
|SFTPM
|SBTPJ
|SBTPK
|SBTPL
|SBTPM
|RWTPJ
|RWTPK
|RWTPL
|RWTPM
|EFTPJ
|EFTPK
|EFTPL
|EFTPM
|WRDRP
|WRDRQ
|RFDRP
|RFDRQ
|PRINT
|EJECT
|NOOP
}}
}}
 
Reserved Logical Keywords<ref name="ibm-speedcoding-system-1954"/>
{{columns-list
| colwidth=5em;
| {{bulleted list
|TR
|TRPL
|TRMN
|TRZ
|SNTRP
|SNTRQ
|TIA
|TIB
|TIC
|TIBC
|TIAC
|TIABC
|TDA
|TDC
|TDAB
|TDBC
|TDAC
|TDABC
|SETRA
|SETRB
|SETRC
|SKRA
|SKRB
|SKRC
|RADDA
|RADDB
|RADDC
|RADDD
|ADDA
|ADDB
|ADDC
|ADDD
|SUBA
|SUBB
|SUBC
|SUBD
|STA
|STB
|STC
|STD
|SKIP
|PRCH
|STCH
|ECHTR
}}
}}
 
==See also==
* [[FortranPACT (compiler)]]
* [[Short Code (computer language)]]
*[[History of programming languages]]
 
*[[PACT]]
==Notes==
*[[Short Code]]
{{notelist}}
 
== References ==
{{reflist}}|refs=
<ref name="Allen_1981">{{cite journal |title=The History of Language Processor Technology in IBM |author-first=Frances "Fran" Elizabeth |author-last=Allen |author-link=Frances Elizabeth Allen |journal=[[IBM Journal of Research and Development]] |volume=25 |issue=5 |date=September 1981 |doi=10.1147/rd.255.0535 |pages=535–548}}</ref>
<ref name="Shasha-Lazere_1998">{{cite book |title=Out of their Minds: The Lives and Discoveries of 15 Great Computer Scientists |author-last1=Shasha |author-first1=Dennis Elliot |author-link1=Dennis Elliot Shasha |author-first2=Cathy |author-last2=Lazere |date=1998 |publisher=[[Copernicus (imprint)|Copernicus]], [[Springer-Verlag New York, Inc.]] |___location=New York, USA |lccn=98-16911 |isbn=0-387-98269-8 |id=SPIN 10693423}}</ref>
<ref name="Booch-Backus_2006">{{cite web |title=Oral History of John Backus |author-first=John W. |author-last=Backus |author-link=John W. Backus |editor-first=Grady |editor-last=Booch |editor-link=Grady Booch |type=Interview |date=2006-09-05 |work=Reference number: X3715.2007 |publisher=[[Computer History Museum]] |___location=Ashland, Oregon, USA |url=http://archive.computerhistory.org/resources/text/Oral_History/Backus_John/Backus_John_1.oral_history.2006.102657970.pdf |access-date=2011-04-23 |url-status=live |archive-url=https://web.archive.org/web/20220408163653/http://archive.computerhistory.org/resources/text/Oral_History/Backus_John/Backus_John_1.oral_history.2006.102657970.pdf |archive-date=2022-04-08}} (42 pages)</ref>
<ref name="Pugh-Johnson-Palmer_1991">{{cite book |title=IBM's 360 and early 370 systems |author-first1=Emerson W. |author-last1=Pugh |author-first2=Lyle R. |author-last2=Johnson |author-first3=John H. |author-last3=Palmer |publisher=[[MIT Press]] |date=1991 |isbn=0-262-16123-0 |page=38}}</ref>
<ref name="ibm-speedcoding-system-1954">{{cite book |title=IBM speedcoding system for the type 701 electronic data processing machines |date=1954 |orig-date=1953-09-10 |publisher=[[International Business Machines Corporation]] |___location=New York, USA |id=Form 24-6059-0 (5-54:2M-W) |url=https://archive.computerhistory.org/resources/access/text/2018/02/102678975-05-01-acc.pdf |access-date=2022-07-04 |url-status=live |archive-url=https://web.archive.org/web/20220704164350/https://archive.computerhistory.org/resources/access/text/2018/02/102678975-05-01-acc.pdf |archive-date=2022-07-04}}</ref>
<ref name="bashe-johnson-ibm">{{cite book |last1=Bashe |first1=Charles |last2=Johnson |first2=Lyle |last3=Palmer |first3=John |last4=Pugh |first4=Emerson |title=IBM's Early Computers |date=March 17, 1986 |publisher=MIT Press |isbn=9780262523936 |pages=332–338 |url=https://mitpress.mit.edu/9780262523936/ibms-early-computers/ |access-date=25 August 2023}}</ref>
}}
 
== Further reading ==
* {{cite book |title=IBM speedcoding system for the type 701 electronic data processing machines |date=1954 |orig-date=1953-09-10 |publisher=[[International Business Machines Corporation]] |___location=New York, USA |id=Form 24-6059-0 (5-54:2M-W) |url=https://archive.computerhistory.org/resources/access/text/2018/02/102678975-05-01-acc.pdf |access-date=2022-07-04 |url-status=live |archive-url=https://web.archive.org/web/20220704164350/https://archive.computerhistory.org/resources/access/text/2018/02/102678975-05-01-acc.pdf |archive-date=2022-07-04}} (48 pages)
*[[John Backus|Backus, John]], [http://www.softwarepreservation.org/projects/FORTRAN/paper/p4-backus.pdf "The IBM 701 Speedcoding System"], Journal of the ACM (JACM), Volume 1, Issue 1 (January 1954), pp. 4-6,
* {{cite journal |title=The IBM 701 Speedcoding System |author-first=John W. |author-last=Backus |author-link=John W. Backus |journal=[[Journal of the ACM]] |volume=1 |issue=1 |date=January 1954 |pages=4–6 |url=http://www.softwarepreservation.org/projects/FORTRAN/paper/p4-backus.pdf |access-date=2022-07-04 |url-status=live |archive-url=https://web.archive.org/web/20220516175128/http://www.softwarepreservation.org/projects/FORTRAN/paper/p4-backus.pdf |archive-date=2022-05-16}}
*{{cite conference |last=Backus|first=John W.|coauthors=Harlan, Herrick|title=IBM 701 Speedcoding and Other Automatic-programming Systems|booktitle=Proc. Symp. on Automatic Programming for Digital Computer|___location=Washington DC, The Office of Naval Research|date=May 1954|pages=106–113}}
* {{cite conference |title=IBM 701 Speedcoding and Other Automatic-programming Systems |book-title=Proceedings of the Symposium on Automatic Programming for Digital Computer |author-last1=Backus |author-first1=John W. |author-link1=John W. Backus |author-last2=Harlan |author-first2=Herrick |___location=Washington DC, USA |publisher=[[The Office of Naval Research]] |date=13–14 May 1954 |pages=106–113 |url=https://books.google.com/books?id=6AkgAAAAIAAJ&pg=PA106 |access-date=2022-07-04}}
*{{cite book |last=Sammet|first=Jean E.|title=Programming Languages: History and Fundamentals|publisher=Prentice-Hall|date=1969}}
* {{cite book |title=Programming Languages: History and Fundamentals |author-last=Sammet |author-first=Jean E. |author-link=Jean E. Sammet |publisher=[[Prentice-Hall]] |date=1969}}
 
{{Soft-eng-stub}}
 
[[Category:Procedural programming languages]]
[[Category:Numerical programming languages]]
[[Category:IBM software]]
[[Category:Programming languages created in 1953]]