ALGOL 60
Tipus | versió, edició o traducció i llenguatge de programació |
---|---|
Versió inicial | |
Versió estable | |
Epònim | 1960 |
Equip | |
Desenvolupador(s) | Backus, Bauer, Green, Katz, McCarthy, Naur, Perlis, Rutishauser, Samelson, van Wijngaarden, Vauquois, Wegstein, Woodger |
Dissenyador | John W. Backus |
← ALGOL 58 ALGOL 68 → |
ALGOL 60 (abreviatura de Algorithmic Language 1960 ) és un membre de la família ALGOL de llenguatges de programació informàtica. Va seguir l'ALGOL 58 que havia introduït els blocs de codi i els parells begin
i end
per delimitar-los, la qual cosa representa un avenç clau en l'auge de la programació estructurada. ALGOL 60 va ser un dels primers llenguatges que va implementar definicions de funcions (que es podien invocar de forma recursiva). Les definicions de funcions d'ALGOL 60 es podrien imbricar entre si (que va ser introduïda per primera vegada per qualsevol llenguatge de programació), amb abast lèxic. Va donar lloc a molts altres llenguatges, incloent CPL, PL/I, Simula, BCPL, B, Pascal i C. Pràcticament tots els ordinadors de l'època tenien un llenguatge de programació de sistemes basat en conceptes ALGOL 60.[1]
Niklaus Wirth va basar el seu propi ALGOL W en ALGOL 60 abans de passar a desenvolupar Pascal. Algol-W estava pensat per ser la propera generació d'ALGOL, però el comitè ALGOL 68 va decidir un disseny més complex i avançat en lloc d'un ALGOL 60 simplificat net. Les versions oficials d'ALGOL reben el nom de l'any en què es van publicar per primera vegada. ALGOL 68 és substancialment diferent d'ALGOL 60 i va ser criticat parcialment per ser-ho, de manera que en general "ALGOL" fa referència als dialectes d'ALGOL 60.
Normalització
[modifica]ALGOL 60 –amb COBOL– van ser els primers idiomes a buscar l'estandardització.
- ISO 1538:1984 Llenguatges de programació - ALGOL 60 (estabilitzat)
- ISO/TR 1672:1977 Representació de maquinari dels símbols bàsics ALGOL... (ara retirat)
Història
[modifica]ALGOL 60 va ser utilitzat principalment per investigadors informàtics als Estats Units i a Europa. El seu ús en aplicacions comercials es va veure obstaculitzat per l'absència d'instal·lacions estàndard d'entrada/sortida en la seva descripció i la manca d'interès per l'idioma per part dels grans venedors d'ordinadors. Tanmateix, ALGOL 60 es va convertir en l'estàndard per a la publicació d'algorismes i va tenir un efecte profund en el desenvolupament futur del llenguatge.
John Backus va desenvolupar el mètode de forma normal de Backus per descriure llenguatges de programació específicament per a ALGOL 58. Va ser revisat i ampliat per Peter Naur per a ALGOL 60, i per suggeriment de Donald Knuth va canviar el nom de Backus–Naur form.[2]
Peter Naur: "Com a editor del Butlletí ALGOL, em vaig atreure als debats internacionals sobre la llengua i vaig ser seleccionat per ser membre del grup europeu de disseny lingüístic el novembre de 1959. En aquesta qualitat vaig ser l'editor de l'informe ALGOL 60, elaborat com a resultat de la reunió ALGOL 60 a París el gener de 1960".
Propietats
[modifica]L'ALGOL 60, tal com es va definir oficialment, no tenia instal·lacions d'E/S; les implementacions definien les seves pròpies de maneres que poques vegades eren compatibles entre si. En canvi, ALGOL 68 oferia una àmplia biblioteca d'instal·lacions de transput (parla d'ALGOL 68 per a entrada/sortida).
ALGOL 60 va proporcionar dues estratègies d'avaluació per passar paràmetres: la trucada per valor comú i la trucada per nom. La declaració de procediment especificada, per a cada paràmetre formal, que s'havia d'utilitzar: valor especificat per a la trucada per valor i omès per a la trucada per nom. La trucada per nom té certs efectes en contrast amb la trucada per referència. Per exemple, sense especificar els paràmetres com a valor o referència, és impossible desenvolupar un procediment que intercanvii els valors de dos paràmetres si els paràmetres reals que es passen són una variable entera i una matriu que està indexada per aquesta mateixa variable entera.[3] Penseu a passar un punter per canviar (i, A[i]) a una funció. Ara que cada vegada que es fa referència a l'intercanvi, es reavalua. Digues jo := 1 i A[i] := 2, de manera que cada vegada que es fa referència a l'intercanvi retornarà l'altra combinació dels valors ([1,2], [2,1], [1,2], etc.). Una situació similar es produeix amb una funció aleatòria passat com a argument real.
Call-by-name és conegut per molts dissenyadors de compiladors pels interessants " thunks " que s'utilitzen per implementar-lo. Donald Knuth va idear la " prova de l'home o del nen " per separar els compiladors que implementaven correctament la " recursivitat i les referències no locals". Aquesta prova conté un exemple de trucada per nom.[4]
Referències
[modifica]- ↑ Speed, Richard. «ALGOL 60 at 60: The greatest computer language you've never used and grandaddy of the programming family tree» (en anglès). [Consulta: 22 octubre 2023].
- ↑ Knuth, Donald E. Communications of the ACM, 7, 12, 12-1964, pàg. 735–6. DOI: 10.1145/355588.365140 [Consulta: lliure].
- ↑ Aho, Alfred V. Compilers: Principles, Techniques, and Tools. 1st. Addison-Wesley, 1986. ISBN 978-0-201-10194-2., Section 7.5, and references therein
- ↑ «[http://archive.computerhistory.org/resources/text/algol/ACM_Algol_bulletin/1064048/frontmatter.pdf A C O U R S E O F A L G O L 6 0 P R O G R A M M I N G]» (en anglès). [Consulta: 22 octubre 2023].