Share to: share facebook share twitter share wa share telegram print page

 

ALGOL 60

ALGOL 60

Tipusversió, edició o traducció i llenguatge de programació Modifica el valor a Wikidata
Versió inicial
1960 Modifica el valor a Wikidata
Versió estable
ISO 1538:1984 (15 octubre 1984) Modifica el valor a Wikidata
Epònim1960 Modifica el valor a Wikidata
Equip
Desenvolupador(s)Backus, Bauer, Green, Katz, McCarthy, Naur, Perlis, Rutishauser, Samelson, van Wijngaarden, Vauquois, Wegstein, Woodger
DissenyadorJohn W. Backus Modifica el valor a Wikidata

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ó

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

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

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

  1. 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].
  2. Knuth, Donald E. Communications of the ACM, 7, 12, 12-1964, pàg. 735–6. DOI: 10.1145/355588.365140 [Consulta: lliure].
  3. Aho, Alfred V. Compilers: Principles, Techniques, and Tools. 1st. Addison-Wesley, 1986. ISBN 978-0-201-10194-2. , Section 7.5, and references therein
  4. «[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].
Kembali kehalaman sebelumnya


Index: pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve 
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9