Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

1 Ohjelmointikielten varhaishistoria Esa-Matti Miettinen 14.4.2005.

Samankaltaiset esitykset


Esitys aiheesta: "1 Ohjelmointikielten varhaishistoria Esa-Matti Miettinen 14.4.2005."— Esityksen transkriptio:

1 1 Ohjelmointikielten varhaishistoria Esa-Matti Miettinen 14.4.2005

2 2 Johdanto Ohjelmoinnin historian voi katsoa lähteneen liikkeelle jo 1800-luvun puolivälistä Babbagen kehittäessä ensimmäisiä tietokoneen piirustuksia Tässä keskitytään korkean tason kielten syntyyn 1940- ja 1950-luvuilla Koko ajanjakson käsittelyn sijaan tarkastellaan muutamia tärkeitä merkkipaaluja

3 3 Ohjelmointi 1940- ja 1950-luvuilla Ohjelmia kirjoitettiin pääasiassa konekielillä Tietokoneet olivat hitaita, kalliita ja vaikeakäyttöisiä. 1950-luvun alkupuolella alkoi olla tarjolla alkeellisia ja hitaita tulkattavia kieliä, joihin viitattiin termillä automaattinen koodaus Ohjelmointikielten kehittäjien yhteydet toisiinsa olivat huonot, ja keksintöjä tehtiin usein toisista tietämättä

4 4 Käsiteltäviä kieliä Plankalkül, ensimmäinen korkean tason ohjelmointikieli Short Code, ensimmäinen toteutettu korkean tason kieli Ensimmäiset kääntäjät Fortran, korkean tason kielten läpimurron aloittanut kieli

5 5 Ensimmäinen korkean tason ohjelmointikieli Milloin oikein tehtiin ensimmäinen oikea korkean tason kieli? Miltä sen koodi mahtoi näyttää?

6 6 Plankalkül Konrad Zuse suunnitteli korkean tason ohjelmointikielen jo 1940-luvun puolivälissä Zuse kehitti myös ensimmäisiä tietokoneita, joista tosin melkein kaikki tuhoutuivat liittoutuneiden pommituksissa Plankalkül julkaistiin vasta vuonna 1972 ja toteutettiin vuonna 2000, joten sen vaikutus toteutettuihin kieliin jäi pieneksi Konrad Zuse (1910-1995)

7 7 Plankalkülin ominaisuuksia Rakenteiset tietotyypit For-lausetta muistuttava toistolause Indeksointi Monipuoliset listojen käsittelyoperaatiot Invarianttien tarkistus

8 8 Esimerkkialgoritmi Käytetään kielen piirteiden havainnollistamiseen Knuthin ja Pardon TPK-algoritmia Algoritmi ei tee mitään oikeasti hyödyllistä, mutta esittelee kielen ominaisuuksia hyvin Algoritmi saa syötteenään joukon lukuja, ja tulostaa (tai palauttaa) erään funktion arvot syöteluvuilla käänteisessä järjestyksessä. Jos funktion arvo syötteellä on yli 400, tulostetaankin "liian iso"

9 9 TPK-algoritmi Javalla

10 10...ja sama Plankalkülilla Määritellään kokonaislukutyyppinen muuttuja. Määritellään proseduurin 1 syötteiden ja palautusarvon tyyppi. Lasketaan funktion arvo annetulla parametrilla. Määritellään proseduurin 2 syötteiden ja paluuarvon tyyppi. Tästä alkaa W2-silmukka, jota toistetaan 11 kertaa. Silmukan alussa (R1(V)) kutsutaan proseduuria 1 parametrina taulukko V. Jos funktion arvo syötteellä V i on suurempi kuin 400, tallennetaan i ja ääretön. Jos funktion arvo syötteellä V i on <= 400, tallennetaan i ja funktion arvo.

11 11 Plankalkülin tyypeistä Ainoa perustyyppi on yksi bitti Muut tyypit rakennetaan yhdistelemällä muita tyyppejä Näin voidaan luoda esimerkiksi listoja, parilistoja, taulukoita, henkilötunnuksia... Taulukoista saattoi esimerkiksi tehdä vaihtuvanpituisia Periaatteessa kaikkia tyyppejä voitiin yhdistellä vapaasti Valmiiksi määriteltyinä ovat esimerkiksi kokonaisluvut, liukuluvut ja kompleksiluvut

12 12 Ensimmäinen toteutettu kieli Millainen oli ensimmäinen korkean tason kieli, joka todella toteutettiin?

13 13 Short Code Myös Eniacia rakentamassa olleen John Mauchlyn suunnittelema Short Code on luultavasti ensimmäinen toteutettu korkean tason kieli William Schmitt teki ensimmäisen toteutuksen Binacilla vuonna 1949 Schmitt ja Albert Tonik kehittivät Univac-toteutuksen loppuvuodesta 1950 John W. Mauchly (1907-1980)

14 14 Short Code (jatkoa) Osasyy kielen tuntemattomuuteen lienee, että tuolloin ohjelmoijan vaivannäköä ei arvostettu aivan samalla tavalla Miksi tietokoneen laskenta-aikaa pitäisi tuhlata johonkin sellaiseen, jonka ohjelmoija voi itsekin tehdä? Short Code-tulkkaus saattoi myös olla jopa viisikymmentä kertaa hitaampaa kuin konekielisten käskyjen suoritus

15 15 TPK Short Codella 03: Jos y <= 400, siirry kohtaan 1

16 16 Ensimmäiset kääntäjät Useimmat nykyiset kielet käännetään ennen suoritusta. Milloin näin tehtiin ensimmäisen kerran?

17 17 Kääntäjät (jatkoa) Ensimmäisen kääntäjän tittelistä on useita kilpailijoita Esiin nostetaan usein Hopperin A-0, A-1 ja A-2, Glennien Autocode ja Laningin ja Zierlerin kieli Voittaja riippuu näkökulmasta

18 18 Hopperin varhaiset "kääntäjät" Ohjelmointikielten kehitykseen suuresti vaikuttanut Grace Murray Hopper työskenteli vuodesta 1949 Univac- tietokoneita valmistaneessa Eckert-Mauchly Computer Corporationissa EMC:ssä hänen ryhmänsä kehitti varsinkin aluksi lähinnä makrojen käsittelijöitä muistuttavia ohjelmia Grace Murray Hopper (1906 – 1992)

19 19 Hopperin varhaiset "kääntäjät" (jatkoa) Myöhemmin lähestyttiin jo uutta kieltä ja kääntäjiä sanan nykyisessä merkityksessä Vanha Mark I-tietokone suoritti kolme yhteenlaskua sekunnissa. Univac laski jo lähteestä riippuen tuhansia tai kymmeniä tuhansia laskutoimitusta sekunnissa, joten sen työllistämiseksi ohjelmia piti saada tuotettua nopeammin.

20 20 Hopperin varhaiset "kääntäjät" (jatkoa) Merriam-Websterin määritelmä sanalle compile: "to bring together from several sources into a single volume or list " Lokakuun 1951 ja toukokuun 1952 välillä valmistunut A-0 oli sanakirjamääritelmän mukainen "compiler", eli kokosi ohjelman liittämällä konekielisen ohjelman merkittyihin kohtiin eräänlaisen makron

21 21 Hopperin varhaiset "kääntäjät" (jatkoa) Tammikuussa 1953 valmistunut A-1 ja lokakuussa toteutettu A-2 olivat parannettuja versiota "kääntäjästä" Niiden koodia saattoi joutua täydentämään koneen omalla konekielellä Vuonna 1955 A-2 oli jo kehittynyt niin pitkälle, ettei koneen omaa kieltä tarvinnut käyttää lainkaan

22 22 TPK A-2:lla (vuoden 1953 versio)

23 23 Hopperin ryhmän myöhempiä tuotoksia Hopperin ryhmä kehitti vuonna 1956 Math- Matic-nimellä (aluksi AT-3) tunnetuksi tulleen lausekielen Math-Matic-kielen kääntäjä tuotti hidasta koodia jo muutenkin hitaalle Univac-tietokoneelle, joten kieli ei noussut kovin merkittävään asemaan Vuonna 1955 toteutettu Flow-Matic-kieli perustui vahvasti englannin kielen käyttöön, ja oli suunniteltu erityisesti liiketoiminnallisten ohjelmien tuottamiseen Flow-Matic (aluksi B-0) vaikutti suuresti Cobol- kielen kehitykseen

24 24 Autocode Alick Glennie kehitti Royal Armaments Research Establishmentissä työskennellessään Autocode- kielen ja sille kääntäjän vuoden 1950 lopulla Glennie ei koskaan julkaissut kieltä, eikä siitä tullut kovin suosittu Alick Glennie

25 25 Autocode (jatkoa) Kieli ei ollut kovin alustariippumaton, eikä ratkaissut ongelmia, joita sen kanssa tekemisissä olleet ohjelmoijat pitivät työnsä kannalta vaikeimpina Autocode oli kuitenkin luultavasti ensimmäinen täysiverinen kieli, jolle oli toteutettu sanan nykyistä merkitystä vastaava kääntäjä

26 26 TPK Autocodella

27 27 Laning ja Zierler Laning ja Zierler kehittivät noin vuonna 1953 Autocodea korkeammalla abstraktiotasolla toimivan kielen Whirlwind-tietokoneelle Ohjelmia suoritettiin tulkkaamalla kääntäjän tuottamaa välimuotokieltä Kieli oli lähes täysin alustariippumaton, ja suhteellisen helppokäyttöinen

28 28 TPK-algoritmi Laningin ja Zierlerin kielellä a i =v j CP 1: Jos edellisen lauseen arvo < 0, siirry kohtaan 1. Tällä saadaan aikaan silmukka. Tähän tulevat syötteet F 11 laskee itseisarvon, F 1 neliöjuuren SP 4: Ehdoton hyppykäsky kohtaan 4

29 29 Korkean tason kielten läpimurto Ihan hyvä. Mutta milloin joku sai kaiken tämän oikein toimimaan? Milloin korkean tason kieliä alettiin käyttämään laajemmassa mitassa?

30 30 Fortran 1950-luvun lopulla kehitetty Fortran aloitti korkean tason kielten voittokulun Tulkeilla ja kääntäjillä saavutettiin yleensä vain murto-osa taitavan ohjelmoijan kehittämien ohjelmien suorituskyvystä Yleisesti ei uskottu, että voitaisiin kehittää helppokäyttöinen korkean tason kieli, jolla voitaisiin tuottaa tehokkaita konekieliohjelmia John Backus (1911-1988)

31 31 Fortranin tehtävä Fortranin-projektin ensisijaisena tavoitteena oli tuottaa tehokas, ihmisohjelmoijan suorituskykyyn verrannollinen kääntäjä 704 osasi käsitellä liukulukuja, joten liukulukukäsittelyn hitaus ei enää kätkenyt kielten tehottomuutta

32 32 Fortranin kehitys Aiemmin muun muassa Speedcodingia kehittänyt John Backus ehdotti uuden ohjelmointikielen tuottamista 704-tietokoneelle IBM:llä loppuvuonna 1953 Kehitykseen vaikuttivat myös mm. Harlan Herrick, Irving Ziller ja Ron Nutt Kielen alkuperäinen määrittely oli valmis marraskuussa 1954

33 33 Otteita vuoden 1954 väliraportista "...FORTRAN should virtually eliminate coding and debuggin..." "...an automatically coded problem... will be executed in about the same time that would be required had [it] been laborously hand coded" "...after an hour course in FORTRAN notation, the average programmer can fully understand... a procedure stated in FORTRAN language..." "... each such [IBM] calculator should have a system similar to FORTRAN..."

34 34 Fortranin valmistuminen Vuonna 1955 kääntäjän uskottiin valmistuvan puolen vuoden kuluessa Todellisuudessa Fortran julkaistiin bugisena huhtikuussa 1957 Fortran levisi kuitenkin nopeasti Huhtikuussa 1958 tehdyn tutkimuksen mukaan yli puolet 26:n 704-tietokoneen käyttäjistä käytti kieltä suurimmassa osassa ohjelmiaan, ja saman vuoden syksyllä yli puolet 66:n koneen konekielikäskyistä tuotettiin Fortranilla

35 35 TPK-algoritmi Fortranilla

36 36 Yhteenveto Ohjelmoinnin alkuaikoina ohjelmointi tarkoitti useimmiten hankalaa koodausta konekielillä Korkean tason kielten kehitykselle antoi alkusysäyksen yritys saada käyttöön konekielistä puuttuvia ominaisuuksia ja helpottaa ohjelmointia Tietokoneiden kehitys vauhditti myös ohjelmointikielten kehitystä tekemällä ohjelmoijasta pullonkaulan Tiedonkulun ongelmat johtivat useiden keksintöjen tekemiseen uudelleen

37 37 Yhteenveto (jatkoa) Ensimmäinen korkean tason ohjelmointikieli Plankalkül sisälsi monia edistyksellisiä piirteitä, kuten erittäin kehittyneen tyyppijärjestelmän. Kielestä ei kuitenkaan tullut aikanaan tunnettua. Ensimmäinen toteutettu korkean tason kieli oli luultavasti Short Code. Se kärsi osin saman kohtalon. Ensimmäisen kääntäjän tittelistä kilpailevat ainakin Hopperin varhaiset "kääntäjät", Glennien Autocode ja Laningin ja Zierlerin kieli

38 38 Yhteenveto (jatkoa) Vasta Fortran tarjosi mahdollisuuden helpohkon ohjelmoinnin ja tehokkaiden ohjelmien välillä, ja aloitti siten korkean tason ohjelmointikielten läpimurron

39 39 Aikajana Lorenz-salaus murtuu 1941 Plankalkül n. 1945 Short Code 1949-1950 1950-luvun alussa TKK:lla rakennetaan analogiatietokonetta Univac 1951 A-0 1951-1952 Autocode 1952 Laningin ja Zierlerin kieli 1952 A-2 1953 ESKOa rakennetaan 1954-1960 Tekoäly-nimitys keksitään Darthmoutissa 1956 Fortran n. 1957 Nasa perustetaan 1958 Relaatiomalli 1969 Ensimmäinen tietokonevirus 1970-luvun alussa

40 40 Kuvien lähteet (13.4.2005) John Backus: http://www-groups.dcs.st- and.ac.uk/~history/PictDisplay/Backus.htmhttp://www-groups.dcs.st- and.ac.uk/~history/PictDisplay/Backus.htm Alick Glennie: http://hopl.murdoch.edu.au/ showperson.prx?PeopleID=185http://hopl.murdoch.edu.au/ showperson.prx Grace Hopper: http://www-groups.dcs.st- and.ac.uk/~history/PictDisplay/Hopper.htmlhttp://www-groups.dcs.st- and.ac.uk/~history/PictDisplay/Hopper.html John Mauchly: http://www- etsi2.ugr.es/alumnos/mlii/Mauchly.htmhttp://www- etsi2.ugr.es/alumnos/mlii/Mauchly.htm Konrad Zuse: http://www-groups.dcs.st- and.ac.uk/~history/PictDisplay/Zuse.html


Lataa ppt "1 Ohjelmointikielten varhaishistoria Esa-Matti Miettinen 14.4.2005."

Samankaltaiset esitykset


Iklan oleh Google