Autokod

Autocode är namnet på en familj av "förenklade kodningssystem", senare kallade programmeringsspråk , utarbetade på 1950- och 1960-talen för en serie digitala datorer vid universiteten i Manchester , Cambridge och London . Autokod var en generisk term; autokoderna för olika maskiner var inte nödvändigtvis nära besläktade, vilket till exempel är de olika versionerna av det enda språket Fortran .

Idag används termen för att hänvisa till familjen av tidiga språk som härstammar från Manchester Mark 1- autokodarsystemen, som i allmänhet var lika. På 1960-talet användes termen autokodare mer allmänt som för att hänvisa till alla högnivåprogrammeringsspråk som använder en kompilator . Exempel på språk som kallas autokoder är COBOL och Fortran .

Glennies autokod

Den första autokoden och dess kompilator utvecklades av Alick Glennie 1952 för Mark 1-datorn vid University of Manchester och anses av vissa vara det första kompilerade programmeringsspråket. Hans främsta mål var ökad begriplighet i programmeringen av Mark 1-maskiner, som var kända för sin särskilt abstruerade maskinkod. Även om det resulterande språket var mycket tydligare än maskinkoden, var det fortfarande mycket maskinberoende.

Nedan är ett exempel på Glennies Autokod-funktion som beräknar formeln: . Exemplet utelämnar nödvändig skalningsinstruktion som behövs för att placera heltal i variabler och antar att resultat av multiplikation passar in i lägre ackumulator.

c@VA t@IC x@½C y@RC z@NC HELTAL +5 →c # Sätt 5 i c →t # Ladda argument från lägre ackumulator # till variabel t +t TESTA Z # Sätt |t| in i nedre ackumulator -t ENTRY Z SUBRUTIN 6 →z # Kör kvadratrotssubrutinen på # lägre ackumulatorvärde # och sätt resultatet i z +tt →y →x # Beräkna t^3 och sätt det i x +tx →y →x +z+cx STÄNG SKRIV 1 # Sätt z + (c * x) i # nedre ackumulator # och returnera

Användarmanualen för Glennies Autocode Compiler nämnde att "förlusten av effektivitet är inte mer än 10%".

Effekten av Glennies Autocode på andra Manchester-användares programmeringsvanor var försumbar. Det nämndes inte ens i Brookers papper från 1958 som heter "Autokodprogrammen utvecklade för Manchester University Computers".

Markera 1 Autokod

Den andra autokoden för Mark 1 planerades 1954 och utvecklades av RA Brooker 1955 och kallades "Mark 1 Autocode". Språket var nästan maskinoberoende och hade flyttalsaritmetik, till skillnad från det första. Å andra sidan tillät den bara en operation per rad, erbjöd få mnemoniska namn och hade inget sätt att definiera användarsubrutiner.

En exempelkod som laddar array av storlek 11 av flyttalsnummer från ingången skulle se ut så här

n1 = 1 1 vn1 = I läser indata till v[n[1]] n1 = n1 + 1 j1,11 ≥ n1 hoppar till 1 om n[1] ≤ 11

Brookers Autocode tog bort två huvudsvårigheter hos Mark 1:s programmerare: skalning och hantering av tvånivålagring. Till skillnad från sin föregångare var den flitigt använd.

Senare autokoder

Brooker utvecklade också en autokod för Ferranti Mercury på 1950-talet i samarbete med University of Manchester. Mercury Autocode hade en begränsad repertoar av variabler az och a'-z' och liknade på vissa sätt tidiga versioner av det senare Dartmouth BASIC- språket. Den daterades före ALGOL , utan begrepp om stackar och därför ingen rekursion eller dynamiskt allokerade arrayer . För att övervinna den relativt lilla butiksstorleken som finns tillgänglig på Mercury, skrevs stora program som distinkta "kapitel", som vart och ett utgjorde ett överlägg . Viss skicklighet krävdes för att minimera tidskrävande överföringar av kontroll mellan kapitel. Detta koncept med överlägg från trumma under användarkontroll blev vanligt tills virtuellt minne blev tillgängligt i senare maskiner. Något olika dialekter av Mercury Autocode implementerades för Ferranti Atlas (till skillnad från den senare Atlas Autocode ) och ICT 1300 och 1900 -serien.

Versionen för EDSAC 2 utarbetades av David Hartley från University of Cambridge Mathematical Laboratory 1961. Känd som EDSAC 2 Autocode, var den en rak utveckling från Mercury Autocode anpassad för lokala förhållanden, och var känd för sin objektkodsoptimering och källkod. språkdiagnostik som var avancerad för tiden. En version utvecklades för efterföljaren Titan (prototypen Atlas 2-dator) som ett tillfälligt stopp medan ett mer avancerat språk känt som CPL utvecklades. CPL fullbordades aldrig men gav upphov till BCPL (utvecklat av M. Richards), vilket i sin tur ledde till B och slutligen C . En samtida men separat tråd av utveckling, Atlas Autocode utvecklades för University of Manchester Atlas 1- maskin.

Källor

  • Campbell-Kelly, Martin (1980). "Programmering av märket 1: Tidig programmeringsaktivitet vid University of Manchester". Annals of the History of Computing . IEEE. 2 (2): 130–167. doi : 10.1109/MAHC.1980.10018 .
  • Garcia Camarero, Ernesto (1961). AUTOCODE un system simplificado de codificacion para la computadora MERCURY (på spanska). Universidad de Buenos Aires. sid. 70.
  • London, Keith (1968). Introduktion till datorer . sid. 261.
  • Knuth, Donald E.; Pardo, Luis Trabb (1976). "Tidig utveckling av programmeringsspråk". Stanford University, Institutionen för datavetenskap.

Vidare läsning