Information Processing Language - Information Processing Language
| Paradigme | montage |
|---|---|
| Designet af | Allen Newell , Cliff Shaw , Herbert A. Simon |
| Udvikler | Allen Newell, Cliff Shaw, Herbert A. Simon |
| Første gang dukkede op | 1956 |
| Stabil udgivelse | IPL-VI
|
| OS | På tværs af platforme : JOHNNIAC , IBM 650 , IBM 704 , IBM 7090 |
| Påvirket | |
| Lisp | |
Information Processing Language ( IPL ) er et programmeringssprog, der blev skabt af Allen Newell , Cliff Shaw og Herbert A. Simon ved RAND Corporation og Carnegie Institute of Technology omkring 1956. Newell havde jobbet som sprogspecifikator-applikationsprogrammerer, Shaw var systemet programmør, og Simon havde jobbet som applikationsprogrammerer-bruger.
Koden indeholder funktioner, der er beregnet til at hjælpe med programmer, der udfører enkle problemløsningshandlinger, såsom lister, dynamisk hukommelsestildeling , datatyper , rekursion , funktioner som argumenter, generatorer og kooperativ multitasking . IPL opfandt begrebet listebehandling, omend i en samlingssproget stil.
Grundlæggende om IPL
En IPL -computer har:
- Et sæt symboler . Alle symboler er adresser og navneceller. I modsætning til symboler på senere sprog består symboler af et tegn efterfulgt af et tal og skrives H1, A29, 9-7, 9-100.
- Cellenavne, der begynder med et bogstav, er regionale og er absolutte adresser.
- Cellenavne, der begynder med "9-", er lokale og er meningsfulde inden for rammerne af en enkelt liste. En lists 9-1 er uafhængig af en anden lists 9-1.
- Andre symboler (f.eks. Rene tal) er interne .
- Et sæt celler . Lister er lavet af flere celler, herunder gensidige referencer. Celler har flere felter:
- P, et 3-bit felt, der bruges til en operationskode, når cellen bruges som en instruktion, og ubrugt, når cellen er data.
- Q, et felt med 3 værdier, der bruges til indirekte reference, når cellen bruges som en instruktion, og ubrugt, når cellen er data.
- SYMB, et symbol, der bruges som værdien i cellen.
- Et sæt primitive processer , som ville blive betegnet primitive funktioner på moderne sprog.
Datastrukturen for IPL er listen, men lister er mere indviklede strukturer end på mange sprog. En liste består af en enkeltstående sekvens af symboler, som det kan forventes - plus nogle beskrivelseslister , som er subsidiære enkeltstående links, der tolkes som skiftevis attributnavne og værdier. IPL giver primitiver til at få adgang til og mutere attributværdi ved navn. Beskrivelseslisterne får lokale navne (i form 9-1). Så en liste ved navn L1 indeholdende symbolerne S4 og S5 og beskrevet ved at knytte værdien V1 til at tilskrive A1 og V2 til A2, vil blive gemt som følger. 0 angiver slutningen på en liste; cellenavne 100, 101 osv. genereres automatisk interne symboler, hvis værdier er irrelevante. Disse celler kan spredes i hele hukommelsen; kun L1, der bruger et regionalt navn, der skal være globalt kendt, skal bo et bestemt sted.
| Navn | SYMB | LINK |
|---|---|---|
| L1 | 9-1 | 100 |
| 100 | S4 | 101 |
| 101 | S5 | 0 |
| 9-1 | 0 | 200 |
| 200 | A1 | 201 |
| 201 | V1 | 202 |
| 202 | A2 | 203 |
| 203 | V2 | 0 |
IPL er et samlingssprog til manipulation af lister. Det har et par celler, der bruges som registre til specielle formål. H1 er f.eks. Programtælleren. SYMB -feltet i H1 er navnet på den aktuelle instruktion. H1 tolkes imidlertid som en liste; LINKET til H1 er i moderne termer en pegepind til begyndelsen af opkaldsstakken. For eksempel skubber subroutinopkald SYMB for H1 på denne stak.
H2 er gratis-listen. Procedurer, der skal allokere hukommelsesgrabceller fra H2; procedurer, der er færdige med hukommelse, sæt den på H2. Ved indtastning af en funktion angives listen over parametre i H0; ved exit skal resultaterne returneres i H0. Mange procedurer returnerer et boolsk resultat, der angiver succes eller fiasko, som sættes i H5. Ti celler, W0-W9, er reserveret til offentlig arbejdsopbevaring. Procedurer er "moralsk bundet" (for at citere CACM -artiklen) for at gemme og gendanne værdierne for disse celler.
Der er otte instruktioner, baseret på værdierne for P: subroutine call, push/pop S to H0; skub/pop symbolet i S til listen vedhæftet S; kopiværdi til S; betinget gren. I disse instruktioner er S målet. S er enten værdien af SYMB -feltet hvis Q = 0, symbolet i cellen navngivet af SYMB hvis Q = 1 eller symbolet i cellen navngivet af symbolet i cellen navngivet af SYMB, hvis Q = 2. I alle tilfælde undtagen betinget gren fortæller LINK -feltet i cellen, hvilken instruktion der skal udføres næste gang.
IPL har et bibliotek med omkring 150 grundlæggende operationer. Disse omfatter operationer som:
- Test symboler for lighed
- Find, indstil eller slet en attribut for en liste
- find det næste symbol på en liste; indsæt et symbol på en liste; slette eller kopiere en hel liste.
- Aritmetiske operationer (på symbolnavne).
- Manipulation af symboler; f.eks. test om et symbol betegner et helt tal, eller lav et symbol lokalt.
- I/O -operationer
- "generatorer", som svarer til iteratorer og filtre i funktionel programmering. For eksempel kan en generator acceptere en liste med tal og producere listen over deres firkanter. Generatorer kunne acceptere passende designede funktioner - strengt taget adresserne på koden for passende designede funktioner - som argumenter.
Historie
IPL blev først brugt til at demonstrere, at sætningerne i Principia Mathematica, som blev påvist møjsommeligt for hånd, af Bertrand Russell og Alfred North Whitehead , faktisk kunne bevises ved beregning . Ifølge Simons selvbiografi Models of My Life blev denne applikation oprindeligt udviklet først ved håndsimulering ved hjælp af hans børn som beregningselementer, mens han skrev på og holdt notekort som de registre, der indeholdt programmets tilstandsvariabler.
IPL blev brugt til at gennemføre flere tidlige kunstig intelligens -programmer, også ved de samme forfattere: den logik Theorist (1956), den generelle Problemløsning (1957), og deres computer skak -program NSS (1958).
Flere versioner af IPL blev oprettet: IPL-I (aldrig implementeret), IPL-II (1957 for JOHNNIAC ), IPL-III (eksisterede kortvarigt), IPL-IV, IPL-V (1958, for IBM 650 , IBM 704 , IBM 7090 , Philco model 212 , mange andre. Meget brugt), IPL-VI.
Men sproget blev hurtigt fortrængt af Lisp , som havde meget mere kraftfulde funktioner, en enklere syntaks og fordelen ved automatisk skraldespand .
Arv til computerprogrammering
IPL introducerede uden tvivl flere programmeringssprogsfunktioner:
- Liste manipulation - men kun lister over atomer, ikke generelle lister.
- Ejendomslister - men kun når de er knyttet til andre lister.
- Funktioner i højere orden- undtagen at samlingsprogrammering altid har været i stand til at beregne med adresser på funktioner, der skal kaldes; IPL var et tidligt forsøg på at generalisere denne egenskab ved samlingssprog og på en principiel måde
- Beregning med symboler - undtagen at symbolerne er bogstav+tal, ikke fulde ord.
- Virtuel maskine .
Mange af disse funktioner blev generaliseret, rationaliseret og inkorporeret i Lisp og derfra i mange andre programmeringssprog i løbet af de næste årtier.
Referencer
Yderligere læsning
- Newell, A. og FC Shaw. "Programmering af Logic Theory Machine." Februar 1957. Proceedings of the Western Joint Computer Conference, s. 230–240.
- Newell, Allen og Fred M. Tonge. 1960. "En introduktion til informationsbehandlingssprog V." CACM 3 (4): 205-211.
- Newell, Allen. 1964. Information Processing Language-V Manual; Anden udgave . Rand Corporation [Allen Newell], Englewood Cliffs, NJ: Prentice-Hall.
- Samuel, Arthur L .: Programmering af computere til at spille spil. I: Advances in Computers, bind. 1, 1960, s. 165–192 (især 171-175).