TIE542 Ohjelmointikielten periaatteet, syksy Antti-Juhani Kaijanaho. 6. syyskuuta 2010

Samankaltaiset tiedostot
Ohjelmoinnin peruskurssien laaja oppimäärä

Johdanto Meta Kielten jaotteluja Historia. Aloitusluento. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä

815338A Ohjelmointikielten periaatteet

Ohjelmoinnin peruskurssien laaja oppimäärä

Scheme-kesäkurssi luento 3

Ohjelmoinnin peruskurssien laaja oppimäärä

1. Olio-ohjelmointi 1.1

Ohjelmoinnin peruskurssien laaja oppimäärä

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Johdatus ohjelmointiin

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

.NET ajoympäristö. Juha Järvensivu 2007

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä

TIEA255 Tietotekniikan teemaseminaari ohjelmointikielet ja kehitysalustat. Antti-Juhani Kaijanaho. 16. helmikuuta 2011

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä

Imperatiivisten ohjelmien organisointiparadigmojen. historia

Imperatiivisten ohjelmien organisointiparadigmojen historia

Ohjelmoinnin peruskurssien laaja oppimäärä

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. joulukuuta 2015

Ohjelmoinnin peruskurssien laaja oppimäärä

Varhaiset oliokielet Modula, CLU ja Smalltalk. T : Seminar on the History of Programming Languages Kari Koskinen Otaniemi 29.9.

Johdantoa ohjelmointikielten periaatteisiin

Ohjelmointikielten kehityshistoriaa

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä

DATA-vaiheen ohjelmoijan yleissivistys helposti unohtuvia asioita

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Common Lisp Object System

4. Lausekielinen ohjelmointi 4.1

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

Ruby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages

Scheme-kesäkurssi luento 5

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

Ohjelmoinnin peruskurssien laaja oppimäärä

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

JOHDATUS TEKOÄLYYN TEEMU ROOS

4. Lausekielinen ohjelmointi 4.1

812336A C++ -kielen perusteet,

JOHDATUS TEKOÄLYYN TEEMU ROOS

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

TIE Principles of Programming Languages. Seminaariesityksen essee. Ryhmä 18: Heidi Vulli, Joni Heikkilä

Luento 5. Timo Savola. 28. huhtikuuta 2006

Scheme-kesäkurssi luento 4

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

RINNAKKAINEN OHJELMOINTI A,

Ohjelmoinnin peruskurssien laaja oppimäärä

Scheme-kesäkurssi luento 1

Ohjelmoinnin peruskurssien laaja oppimäärä

Makrojen mystinen maailma lyhyt oppimäärä

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

ADA. Ohjelmointikieli. Ryhmä 5 Henna Olli, Päivi Hietanen

Ohjelmointi 1 C#, kevät 2013, 2. tentti

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

812341A Olio-ohjelmointi, I Johdanto

.NET ja C# Virtuaalikone. Common Language Infrastructure (CLI) Periaate. Etuja. Haittoja. Mikä on CLI. CLI standardin merkitys (CLS, Ecma)

Alternative DEA Models

Nykyisten ohjelmointikielten esi-isä: Algol60

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 8. maaliskuuta 2012

Ohjelmoinnin peruskurssien laaja oppimäärä

Information on Finnish Language Courses Spring Semester 2018 Päivi Paukku & Jenni Laine Centre for Language and Communication Studies

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

samalla seuraavaan puoliavaruuteen (sukupolveen), jota siivotaan harvemmin.

7/20: Paketti kasassa ensimmäistä kertaa

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

11/20: Konepelti auki

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Prolog kielenä Periaatteet Yhteenveto. Prolog. Toni ja Laura Fadjukoff. 9. joulukuuta 2010

TIES542 kevät 2009 Tyyppijärjestelmän laajennoksia

Luento 1 Tietokonejärjestelmän rakenne

Tällä kurssilla tarkastellaan ohjelmointikieliä. Lienee tarpeen yrittää rajata, mitä

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki

Ohjelmoinnin peruskurssien laaja oppimäärä

815338A Ohjelmointikielten periaatteet

Java-kielen perusteet

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Haskell ohjelmointikielen tyyppijärjestelmä

Capacity Utilization

Scheme-kesäkurssi luento 6

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnista. Ohjelmien toteutukseen tarjolla erilaisia välineitä:

Luento 4 Aliohjelmien toteutus

Efficiency change over time

Rinnakkaisuus. parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa. TTY Ohjelmistotekniikka

Transkriptio:

TIE542 periaatteet, syksy 2010 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 6. syyskuuta 2010

Sisällys Esia

Oppimistavoitteet arvolauseelle 1 Kurssin suorittanut opiskelija kykenee vertailemaan ohjelmointikieliä toisiinsa; selostamaan käsky-, funktio-, olio- ja logiikkakielten pääperiaatteet; toistamaan ohjelmointikielten n pääkohdat; ja lukemaan keskeisiä ohjelmointikielten kuvaamisessa käytössä olevia formalismeja.

Oppimistavoitteet arvolauseille 4 5 Kurssin erinomaisin arvolausein suorittanut opiskelija kykenee lisäksi arvioimaan ohjelmointikieliä tieteellisesti ja kriittisesti; analysoimaan käsky-, funktio-, olio- tai logiikkakielen periaatteita; ja käyttämään jotakin formalismia ohjelmointikielen kuvaamiseen.

Lähiopetus luennot (suomeksi) 6.9. 9.11. (18 luentokertaa) ma klo 12 ja ti klo 10 saatan joutua perumaan 1 2 luentoa kurssin aikana käräjäoikeuden lautamiehen tehtävän vuoksi aikataulu sisältää varauksen 2 korvaavalle luentokerralle demot 14.9. 9.11. klo 12 (9 kertaa) tarkista sali aina Korpista! lähiopetus 36 h + 18 h = 54 h (eli 41 %)

Kotitehtävät luentojen kertaus ja demojen teko 54 h (eli 6 h/vko) osaamisnäytön (tentti tai essee) valmistelu 25 h kotitehtävät yhteensä 79 h (59 %)

Suoritustavat essee deadline 23.11.2010 n. 10 sivua rajoitetusti vapaasta aiheesta tarkoituksena harjoitella kurssin ensimmäistä oppimistavoitetta samalla osoitetaan kurssin tietosisällön hallinta tarkemmat ohjeet kurssin nettisivuilla tentti 19.11.2010 3.12.2010 11.2.2011

Sisällys Esia Esia

Esillisia ohjelmointivälineitä Välineitä, joilla ohjelmoitavia koneita ohjelmoitiin ennen yleiskäyttöisten tietokoneiden käyttöönottoa: Jacquardin kangaspuiden ohjelmakortit (1801) Babbagen analyyttisen koneen ohjelmakortit (1837) Ada Augustan, Lovelacen kreivittären, huomautukset (1942 3) automaattipianoiden rullat (1883) Esia Formaaleja kieliä, joilla esitettiin algoritmeja ennen yleiskäyttöisten tietokoneiden käyttöönottoa: lambda-laskento (1936) Turingin kone (1936)

Plankalkül Konrad Zusen Saksassa 1943 5 kehittämä kieli ei saanut juurikaan huomiota ennen 1970-lukua kirjoitustapa on erikoinen muuten yllättävän moderni kieli Tarkemmin: F. L. Bauer & H. Wössner: The Plankalkül of Konrad Zuse: A Forerunner of Today s Programming Languages. Communications of the ACM, 15 (7), 1972. Esia

Konekielet 1940-luvulta alkaen alun perin: kieli, jota tietokoneen laitteisto käyttää toimintaohjeiden saamiseksi koostuu tavallisesti tavujonoista (käskyistä) kukin tavujono koodaa yhden primitiivisen käskyn, kuten yhteenlaskun tai hypyn ohjelmointi on erittäin työlästä ja virhealtista Esia

Assembly eli symbolinen konekieli 1940-luvulta alkaen (käsin käännettynä), 1951 (koneellisesti käännettynä) konekielen symbolinen esitystapa kukin konekielen käsky esitetään yhtenä rivinä hyppyjen kohteille ja muistipaikoille voidaan antaa nimet käännettävä joko käsin tai automaattisesti konekielelle joka koneella omansa Esia

Makroassembly alkaen 1955 assembly, jossa ohjelmoija voi määritellä makroja nimettyjä, parametrisoituja käskyjonoja makron nimi käskyn paikalla korvataan ko. käskyjonon kopiolla Esia

Sisällys Esia Esia

Fortran 1 2 3 4 C PROGRAM FOR FINDING THE LARGEST VALUE C 1 ATTAINED BY A SET OF NUMBERS DIMENSION A(999) FREQUENCY 30(2,1,10), 5(100) READ 1, N, (A(I), I = 1,N) 1 FORMAT (I3/(12F6.2)) BIGA = A(1) 5 DO 20 I= 2,N 30 IF (BIGA-A(I)) 10,20,20 10 BIGA = A(I) 20 CONTINUE PRINT 2, N, BIGA 2 FORMAT (22H1THE LARGEST OF THESE I3, 1 12H NUMBERS IS F7.2) STOP 77777 1. (columns 1 5) statement number (C for comment) 2. (column 6) continuation 3. (columns 7 72) Fortran statement 4. (columns 73 80) identification Esia Lähde: Fortran automatic coding system for the IBM 704 programmer s reference manual, 1956.

Fortran kehitetty 1954 1956 julkaistu 1956, 1958 (FORTRAN II) osoitti että ohjelmallisesti käännettävät ohjelmointikielet ovat käyttökelpoisia kontribuutioita: symboliset muuttujat aritmeettiset lausekkeet taulukot, joiden koko on tiedossa käännösaikana silmukat ja ehtorakenteet erilliset (ei-rekursiiviset) aliohjelmat edelleen käytössä merkittävästi muuttuneena Esia

FLOW-MATIC 0) INPUT INVENTORY FILE=A PRICE FILE=B, OUTPUT PRICED-INV FILE=C UNPRICED-INV FILE=D, HSP D. 1) COMPARE PRODUCT-NO(A) WITH PRODUCT-NO(B) IF GREATER GO TO OPERATION 10; IF EQUAL GO TO OPERATION 5; OTHERWISE GO TO OPERATION 2. 2) TRANSFER A TO D. 3) WRITE ITEM D. 4) JUMP TO OPERATION 8. Esia 5) TRANSFER A TO C. 6) MOVE UNIT-PRICE(B) TO UNIT-PRICE(C). 7) WRITE ITEM C. 8) READ ITEM A; IF END OF DATA GO TO OPERATION 14. 9) JUMP TO OPERATION 1. 10) READ ITEM B; IF END OF DATA GO TO OPERATION 12. 11) JUMP TO OPERATION 1. 12) SET OPERATION 9 TO GO TO OPERATION 2. 13) JUMP TO OPERATION 2. 14) TEST PRODUCT-NO(B) AGAINST ZZZZZZZZZZZZ; IF EQUAL GO TO OPERATION 16; OTHERWISE GO TO OPERATION 15. 15) REWIND B. 16) CLOSE-OUT FILES C, D. 17) STOP. (END)

FLOW-MATIC kehitystyö 1950 1957 teollisessa käytössä viimeistään vuonna 1958 ensimmäinen kaupalliseen laskentaan käytetty kieli ensimmäinen kieli, jossa mahdollista kuvata tietueiden rakenne erillään ohjelman toiminnallisesta kuvauksesta ei nykyään käytössä perillinen COBOL (1960 ) Esia

Algol procedure Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k); value n, m; array a; integer n, m, i, k; real y; comment The absolute greatest element of the matrix a, of size n by m is transferred to y, and the subscripts of this element to i and k; begin integer p, q; y := 0; i := k := 1; for p:=1 step 1 until n do for q:=1 step 1 until m do if abs(a[p, q]) > y then begin y := abs(a[p, q]); i := p; k := q end end Absmax Esia Lähde: Naur (ed.), Backus, et al.: Revised report on the algorithmic language Algol 60. CACM, 6 (1), 1963

Algol kehitetty 1957 1960 julkaistu 1958 (Algol 58), 1960 (Algol 60), 1963 (Algol 60 revised) myös Algol 68, mutta se kaatui omaan monimutkaisuuteensa tarkoituksena luoda maailmanlaajuisesti käytössä oleva kieli algoritmien kuvaamiseen kontribuutioita: sisäkkäiset lohkot rekursiiviset aliohjelmat arvo- ja nimivälitys eksplisiittiset tyyppimäärittelyt taulukot, joiden koko on tiedossa vasta ajon aikana ei nykyään käytössä perillisiä: C, Pascal, C++, C#, Java,... Esia

LISP apply [f;args] = eval [cons [f; appq [args]]; NIL] appq [m] = [ null [m] T ] NIL; cons [list [QUOTE; car[m]]; appq[cdr [m]]] Esia eval [e;a] = [ atom [e] assoc [e;a] eq [car [e]; QUOTE] cadr [e]; eq [car [e]; ATOM] atom [eval [cadr [e]; a]]; eq [car [e]; EQ] [eval [cadr [e]; a] = eval [caddr [e]; a]] eq [car [e]; COND] evcon [cdr [e]; a] eq [car [e]; CAR] car [eval [cadr [e]; a]] eq [car [e]; CDR] cdr [eval [cadr [e]; a]] eq [car [e]; CONS] cons [eval [cadr [e]; a]] atom [car [e]] eval [cons [assoc [car [e]; a]; evlis [cdr [e],a ]]; a]; eq [caar [e]; LABEL] eval [cons [caddar [e]; cdr [e]]; cons [list [cadar [e]; car [e]; a]]]; eq [caar [e]; LAMBDA] eval [caddar [e]; append [pair [cadar [e]; evlis [cdr [e]; a]; a]]] ] evcon [e;a] = [ eval [caar [e]; a] eval [cadar [e]; a] T evcon [cdr [e]; a] ] evlis [m;a] = [ null[m] NIL; T cons [eval [car [m]; a]; evlis [cdr [m]; a]]] ] John McCarthy: Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I. Communications of the ACM 3 (4), 1960.

LISP kehitetty 1956 1960 julkistus 1960 John McCarthyn tekoälytutkimusta varten kehittämä kieli kontribuutioita: rekursiiviset aliohjelmat ohjelma on dataa eval-funktio muistinsiivous (roskienkeruu) edelleen käytössä merkittävästi muuttuneena perillisiä: Scheme, ML, Haskell, F# Esia

SIMULA class point (x,y); real x, y; begin ref (point) procedure plus (P); ref (point) P; plus :- new point (x+p.x, y.p.y); end point; Esia point class polar; begin real r, v; ref (polar) procedure plus (P); ref (point) P; plus :- new polar (x+p.x, y+p.y); r := sqrt (x 2+y 2); v := arctg (x,y); end polar; Ole-Johan Dahl & Bjørn Myhrhaug & Kristen Nygaard: Common Base Language. Authorized by SIMULA Standards Group as the Common Base from May 19th 1970. Norwegian Computing Center S-22, 1970. Page 23.

SIMULA 1961 1967 julkaisut 1964 (SIMULA I) ja 1967 (SIMULA 67) Kristen Nygaard ja Ole-Johan Dahl kehittivät Simulan diskreettien simulaatioiden ohjelmointia varten pohjakielenä Algol 60 kontribuutioita (SIMULA 67): luokat perintä virtuaalimetodit perillisiä kaikki oliokielet, mutta erityisesti C++ Esia

In the spring of 1967 a new employee at the NCC in a very shocked voice told the switchboard operator: "Two men are fighting violently in front of the blackboard in the upstairs corridor. What shall we do?" The operator came out of her office, listened for a few seconds and then said: "Relax, it s only Dahl and Nygaard discussing SIMULA". The story is true. Esia Kristen Nygaard & Ole-Johan Dahl: The development of the SIMULA languages. In History of Progamming Languages, Academic Press, 1981, p. 476.

PROLOG $ cat foo.pl suoralinja(mattilanniemi,keskusta,5). suoralinja(keltinmaki,keskusta,27). suoralinja(kortepohja,keskusta,18). suoralinja(keskusta,x,y) :- suoralinja(x,keskusta,y). Esia paasee(x,y,[z]) :- suoralinja(x,y,z). paasee(x,y,[z1 Z2]) :- suoralinja(x,z,z1), paasee(z,y,z2). $ gprolog --entry-goal [foo] GNU Prolog 1.3.0 By Daniel Diaz Copyright (C) 1999-2007 Daniel Diaz compiling foo.pl for byte code... foo.pl compiled, 8 lines read - 1362 bytes written, 29 ms?- paasee(kortepohja,mattilanniemi,x). X = [18,5]? yes?-

PROLOG kehitys 1971 1973 käytössä 1973 alkaen kieli luonnollisen kielen käsittelyyn taustalla formaali logiikka ja Robinsonin resoluutioperiaate (1965) lähtökohtana ei ollut mikään olemassa ollut ohjelmointikieli kontribuutio: ohjelmointikieli voi olla radikaalisti erilainen edelleen käytössä Esia

Smalltalk linecount "Answer the number of lines represented by the receiver, where every cr adds one line. 5/10/96 sw" Esia cr count cr := Character cr. count := 1 min: self size.. 1 to: self size do: [:i (self at: i) = cr iftrue: [count := count + 1]]. ^ count Squeak v. 4.0, String-luokan metodi linecount

Smalltalk kehitys 1971 1980 julkaisu 1980 keskeisimmät edeltäjät LISP ja SIMULA ensimmäinen paradimaattinen oliokieli (yhtenä) tarkoituksena kieli, jolla lapsetkin voivat ohjelmoida edelleen käytössä Esia

Sisällys Esia Esia

C, C++, Java, C# edeltäjiä: CPL (1963), BCPL (1966), B (1969) muilla kuin C:llä lisäksi SIMULA kehitys alkanut: C 1971, C++ 1979, Java 1991, C# 199x julkaisut: C 1978, C++ 1982, Java 1996, C# 2000 Esia

BASIC kehitettiin 1964 suunniteltu opiskelijoiden (muut kuin luonnontieteet) käyttöön pohjana FORTRAN ja ALGOL, mutta yksinkertaistaen merkittävästi muuttunut nykyversioissa (Visual Basic ym.) Esia

Perl kehitys alkoi 1986 1 julkaisu 1987 alun perin tekstuaalisessa muodossa esitetyn datan raportointiin taustalla C, awk, sed Esia 1 Andrew Leonard: The Joy of Perl. Salon (technology feature) 13.10.1998 http://www.salon.com/21st/feature/1998/10/cov_13feature2.html

Python kehitys alkoi 1989 2 julkaistu 1991 alkuaan Amoeba-käyttöjärjestelmän apuohjelmaohjelmointiin taustalla ABC ja sen kautta ALGOL 68 Esia 2 Guido van Rossum: Personal History - part 1, CWI. The History of Python 20.1.2009. http://python-history.blogspot.com/2009/01/personal-history-part-1-cwi.html

Ruby kehitys alkoi 1993 3 julkaisu 1995 tarkoituksena olla Pythonia ja Perliä parempi olioskriptikieli Esia 3 Bruce Stewart: An Interview with the Creator of Ruby. O Reilly Linux devcenter 29.11.2001. http://linuxdevcenter.com/pub/a/linux/2001/11/29/ruby.html

PHP kehitys alkaa 1995 (PHP/FI), 1997 (PHP 3.0) julkaisu 1995 (PHP/FI), 1998 (PHP 3.0) alkujaan WWW-sivunrakennuskieli, joka kasvanut orgaanisesti Esia

O Caml, Haskell, F# taustalla LISP, ISWIM (1966), SASL (1972), ML (1973), FP (1977) innokkaat: O Caml (1996), F# (2002) taustalla lisäksi Standard ML eli SML (1990) laiska: Haskell (1987 1990) taustalla lisäksi Orwell (1984), Miranda (1985) funktiokieliä Esia

Sisällys Esia Esia

Konrad Zuse (1910-1995) saksalainen rakensi varhaisia tietokoneita: Z1 (1936), Z2 (1939), Z3 (1941), Z4 (1942 1950) suunnitteli Plankalkül-kielen sotien jälkeen toimi tietokonealan yrittäjänä Esia

John Backus (1924 2007) amerikkalainen johti IBM:n FORTRAN-projektia, oli FORTRANin pääsuunnittelija osallistui ALGOL-kehitystyöhön loi kielioppien BNF-notaation (Backus Naur Form) piti Turing-palkinnon vastaanottopuheenaan palopuheen perinteistä ohjelmointityyliä vastaan ja esitteli FP-kielen Esia

Grace Hopper (1906 1992) FLOW-MATICin pääkehittäjä sanotaan luoneen sanan bug tietokonemerkityksen myöhemmin Yhdysvaltain ensimmäinen kenraalikuntaan ylennetty nainen (commodore / lippueamiraali) vastoin yleistä luuloa Hopper ei osallistunut COBOLin määrittelyyn Esia

Peter Naur (1928 ) tanskalainen osallistui ALGOLin kehitykseen oli ALGOL 60 -kielen alkuperäisen määrittelydokumentin toimittaja popularisoi Backusin luoman BNF-notaation Esia

John McCarthy (1927 ) Esia amerikkalainen popularisoi termin artificial intelligence loi LISP-kielen

Niklaus Wirth (1934 ) sveitsiläinen osallistui ALGOL 68:n kehitykseen ja jätti kielestä eriävän mielipiteen kehitti kielet Euler (1966) ALGOL W (1968) Pascal (1970) Modula (1977) Modula 2 (1979) Oberon (1986) Oberon 2 (1991) Esia

Ole-Johan Dahl (1931 2002) Esia norjalainen kehitti SIMULAn yhdessä Kristen Nygaardin kanssa

Kristen Nygaard (1926 2002) Esia norjalainen kehitti SIMULAn yhdsessä Ole-Johan Dahlin kanssa osallistui myös BETAn kehitykseen

Alan Kay (1940 ) amerikkalainen johti henkilökohtaisen tietokoneen tutkimusprojektia Xeroxin Paolo Alton tutkimuskeskuksessa (PARC) loi Smalltalk-kielen loi object orientation -termin Esia