ALGOL: Paras kieli, josta et ole koskaan kuullutkaan

Julkistaminen: Tukesi auttaa pitämään sivuston yllä! Ansaitsemme suosittelupalkkion joistakin tällä sivulla suosittelemistamme palveluista. Lue lisää

ALGOL on luultavasti vaikutusvaltaisin kieli, josta et ole koskaan kuullutkaan.

Muut saman aikakauden tärkeät kielet – Fortran, COBOL, Lisp – saavat yhä paljon käyttöä (suhteellisesti ottaen).

ALGOL oli tärkeä omalla alallaan, erityisesti akateemisessa ja matemaattisessa maailmassa. Mutta sen suurin vaikutus on ollut muiden kielten kehitykseen. Useimmat nykyään käytössä olevat kielet ovat jotakin velkaa ALGOLille

Algolin lyhyt historia

ALGOL keksittiin alun perin 1950-luvun lopulla Zürichissä kokoontuneen amerikkalaisten ja eurooppalaisten tietojenkäsittelytieteilijöiden yhteiskomitean toimesta. Heidän työnsä julkaistiin kielenä, joka nyt tunnetaan nimellä ALGOL 58.

Ryhmän toisesta versiosta, joka tunnettiin nimellä ALGOL 60, tuli kielen standardiversio, joka on yleisessä käytössä.

Tällä versiolla, joka on kuvattu nykyään kuuluisassa ALGOL 60 -raportissa, oli suuri vaikutus ohjelmointikielten suunnitteluun. ALGOL 68, kielen viimeinen ”virallinen” versio, ei saanut hyvää vastaanottoa ALGOL-yhteisössä.

ALGOL ei koskaan oikein vakiinnuttanut asemaansa liike-elämän ohjelmoinnissa, lukuun ottamatta joitakin rahoitusalan käyttämiä matemaattisia analyysisovelluksia.

Kieltä käytettiin kuitenkin laajasti akateemisessa tietojenkäsittelytieteessä ja matematiikassa, ja se oli algoritmisen kuvailun standardikieli pitkälle 1980- ja 90-luvuille.

ALGOLin vaikutus muihin kieliin

ALGOLin syntaksi ja rakenne vaikuttivat suoraan useisiin muihin kieliin, joita on alettu kutsua ”Algolin kaltaisiksi” kieliksi.

Tällaisia kieliä ovat esimerkiksi Simula, C, Pascal ja Ada. Jotkut näistä yhteyksistä ovat melko suoria: Esimerkiksi Pascalin kehitti Niklaus Wirth, joka oli aiemmin kehittänyt ALGOL-johdannaisen nimeltä ALGOL W.

Tämän ryhmän tunnetuin jäsen on C, joka on synnyttänyt oman perheensä johdannaisia ja jälkeläisiä: C++, C#, Objective-C ja D – vain muutamia mainitakseni. Myös PHP:n syntaksi perustuu C:hen, mikä tarkoittaa, että internetin käytetyin palvelinpuolen kieli juontaa juurensa ALGOL:iin.

Syvällisemmin ALGOL vaikutti tapaan, jolla ohjelmointikielet käsitetään ja kuvataan.

Tietokonetieteilijä John Backus ehdotti ALGOL:lle kielioppikuvausta (PDF), jota käytettiin Peter Naurin toimittamassa ALGOL 60 -raportissa. Tämä kuvauskieli tuli tunnetuksi nimellä Backus-Naur Form (BNF). BNF, ja EBNF (”extended”), on nykyään vakiintunut tapa kuvata formaalin kielen kielioppi.

ALGOL-resurssit

ALGOL on vanha, enimmäkseen vanhentunut kieli, ja siksi voi olla hyvin vaikeaa löytää resursseja ja luotettavaa tietoa siitä. Onneksesi sinun ei tarvitse. Olemme haravoineet Internetiä tuodaksemme sinulle tärkeimmät resurssit ALGOLin oppimiseen.

Historialliset opetusohjelmat

Kaikki varteenotettavat opetusohjelmat ALGOLista on kirjoitettu kauan sitten. Onneksi parhaat niistä on skannattu ja asetettu saataville verkkoon.

  • A Course of Algol 60 Programming (PDF) on alkuperäisen ALGOL 60 -raportin (ks. alla)

  • Lindseyn ja Meulenin kirjoittama Informal Introduction to ALGOL 68, Revised Edition (PDF) julkaistiin alun perin vuonna 1977, ja on nyt saatavilla ilmaiseksi verkossa

  • Programming Algol 68 Made Easy (PDF) by Sian Leitch, on toinen klassikkokirja

  • A Tutorial on Algol 68 (PDF) on vuodelta 1976 peräisin oleva aikakauslehtiartikkeli, joka tarjoaa sekä johdatuksen Algol 68-kieleen että välähdyksen tietojenkäsittelyn historiaan.

Kääntäjät

  • Algol 68 Genie on nykyaikainen, alustarajat ylittävä ALGOL-kääntäjä – luultavasti helpoin tapa aloittaa työskentely ALGOLin parissa tietokoneella; älä missaa Marcel van der Veerin kirjoittamaa Learning Algol 68 Genie (PDF), joka sisältää kielen opetusohjelman ja esimerkkiohjelmia

  • Toteuta Algol Online Tutorials Pointin selaimessa olevalla Algol-tulkilla

  • Algol-68:sta C:hen on siirrettävä kääntäjä/kääntäjä, jonka avulla voit ajaa ALGOL 68:a missä tahansa ympäristössä, jossa on C-kääntäjä

  • Z80 ALGOL Compiler virtuaalikoneella, jolla voit ajaa ALGOLia MS-DOS:ssa.

Esimerkki ALGOL-ohjelmista

  • Hello World! ja Compute the Mean, kirjoitettu ALGOLilla Unisysin (Burroughs) A-sarjan suurtietokoneelle

  • 99 pulloa olutta seinällä, ohjelmoitu ALGOL 68:lla ja ALGOL 60:lla

  • Eratosthenesin seula ALGOL 60:lla näyttää esimerkkiohjelman alkulukujen etsimiseen ALGOLilla.

Historiallisia resursseja

  • Peter Naurin toimittama raportti algoritmikielestä ALGOL 60 (PDF) on kielen alkuperäinen määrittelydokumentti – pakollinen lukemisto kaikille ALGOL-tutkijoille; tarkistettu raportti (PDF) sisältää kielen lopullisen, virallisen määritelmän; tarkistettu raportti on saatavilla myös nykyaikaisena kriittisenä painoksena korjattuine virheineen (PDF)

  • Algol68.org on kielelle omistettu verkkosivusto, jolla on runsaasti lisäresursseja ja -materiaalia

  • Software Preservation Groupin History of ALGOL -projekti sisältää runsaasti ALGOL-materiaalia, mukaan lukien alkuperäiset paperit, kääntäjät, artikkelit, sovellukset ja paljon muuta.

Kirjat ALGOLista

  • Daniel McCrackenin kirjoittama A Guide to ALGOL Programming (1962) on kirja, joka käsittelee ALGOL 60:tä

  • D J Malcolme-Lawesin kirjoittama Ohjelmointi – ALGOL (1969) on varhainen yleiskäyttöön suunnattu käsikirja ALGOLista, ja sisältää historiallisesti kiehtovan johdannon tietotekniikkaan

  • Programming and Problem-Solving in Algol 68 (1978), kirjoittanut Andrew JT Colin, on aloittelevalle tasolle tarkoitettu kirja, joka esittelee sekä tietokoneohjelmointia yleensä että ALGOLia erityisesti

  • An Introduction to Algol 68 Through Problems (2014), kirjoittaneet Learner ja Powell, esittelee niin ikään tietokoneohjelmointia ALGOLin avulla, käyttäen sarjaa käytännön tietojenkäsittelyongelmia

  • Programming by Case Studies: An Algol Primer (1969), kirjoittaneet Chedzoy ja Ford, on toinen johdatus ohjelmointiin ALGOLin avulla, mutta siinä painotetaan matematiikkaa.

ALGOL and Other Languages

  • Handbook and Guide for Comparing and Selecting Computer Languages (1990), jonka on kirjoittanut James Ogden, tarjoaa mielenkiintoisen vertailun Basicin ominaisuuksista, vahvuuksista ja heikkouksista, FORTRANin, Pascalin, COBOLin, PL/1:n, APL:n, ALGOL-60:n ja C:n

  • Numerical Methods of Mathematical Optimization (1968), jonka ovat toimittaneet Kunzi ym. käsittelee matemaattista tietojenkäsittelyä sekä FORTRANilla että ALGOLilla

  • Data Structures of Pascal, ALGOL 68, PL/1 ja Ada (1986), toimittaneet Lewi ja Paredaens, käsittelee peruskäsitteitä, ei käytännön ohjelmointiesimerkkejä, mukana olevissa kielissä

  • FORTRAN, PL/I and the Algols (1979), kirjoittanut Brian Meek, vertaa näitä kolmea tärkeää kieliperhettä keskenään

  • Expertti C-ohjelmointi: Deep C Secrets (1994), jonka on kirjoittanut Peter van der Linden, sisältää mielenkiintoisia yksityiskohtia ALGOLin vaikutuksesta C:n kehitykseen

  • Algol-like Languages Volume 1 (1996) ja Volume 2 (1997), jonka ovat toimittaneet O’Hearn ja Tennent, on esseekokoelma, jossa tarkastellaan ALGOLin historiaa ja sen vaikutusta muiden ohjelmointikielten kehitykseen.

Yhteenveto

ALGOL ei ole kieli, joka sinun on opittava saadaksesi työpaikan tai ollaksesi menestyvä kehittäjä. Se vaikutti kuitenkin valtavasti sekä tietokoneohjelmoinnin käytäntöön että teoriaan.

Jos olet kiinnostunut kielten suunnittelusta tai tietojenkäsittelytieteen historiasta, ALGOL on tärkeä koetinkivi, johon kannattaa tutustua.

Lisälukemista ja resursseja

Meiltä löytyy lisää koodaukseen ja kehitykseen liittyviä oppaita, opetusohjelmia ja infografiikkaa:

  • Fortran-resursseja: Yksi ensimmäisistä korkean tason kielistä, jota käytetään yhä laajalti tieteelliseen ohjelmointiin.

  • COBOL Johdanto ja resurssit: klassinen liike-elämän ohjelmointikieli.

  • Prolog Resurssit: Prolog oli varhainen logiikkaohjelmointikieli.

Mitä koodia kannattaa opetella?

Epätietoinen siitä, millä ohjelmointikielellä kannattaa opetella koodaamaan? Tutustu infograafiimme, Mitä koodia sinun pitäisi oppia? Se ei ainoastaan käsittele kielten eri näkökohtia, vaan vastaa myös tärkeisiin kysymyksiin, kuten: ”Kuinka paljon rahaa saan elääkseni ohjelmoimalla Javaa?”

Jätä kommentti