Ohjelmointikielten varhaishistoria - PowerPoint PPT Presentation

About This Presentation
Title:

Ohjelmointikielten varhaishistoria

Description:

Ohjelmointikielten varhaishistoria Esa-Matti Miettinen 14.4.2005 – PowerPoint PPT presentation

Number of Views:25
Avg rating:3.0/5.0
Slides: 41
Provided by: emmietti
Category:

less

Transcript and Presenter's Notes

Title: Ohjelmointikielten varhaishistoria


1
Ohjelmointikieltenvarhaishistoria
  • Esa-Matti Miettinen
  • 14.4.2005

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
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
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
Ensimmäinen korkean tason ohjelmointikieli
  • Milloin oikein tehtiin ensimmäinen oikea korkean
    tason kieli?
  • Miltä sen koodi mahtoi näyttää?

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
Plankalkülin ominaisuuksia
  • Rakenteiset tietotyypit
  • For-lausetta muistuttava toistolause
  • Indeksointi
  • Monipuoliset listojen käsittelyoperaatiot
  • Invarianttien tarkistus

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
TPK-algoritmi Javalla
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ä Vi on suurempi kuin
400, tallennetaan i ja ääretön.
Jos funktion arvo syötteellä Vi on lt 400,
tallennetaan i ja funktion arvo.
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
Ensimmäinen toteutettu kieli
  • Millainen oli ensimmäinen korkean tason kieli,
    joka todella toteutettiin?

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
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
TPK Short Codella
03 Jos y lt 400, siirry kohtaan 1
16
Ensimmäiset kääntäjät
  • Useimmat nykyiset kielet käännetään ennen
    suoritusta. Milloin näin tehtiin ensimmäisen
    kerran?

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
Hopperin varhaiset "kääntäjät"
  • Ohjelmointikielten kehitykseen suuresti
    vaikuttanut Grace Murray Hopper työskenteli
    vuodesta 1949 Univac-tietokoneita valmistaneessa
    Eckert-Mauchly Computer Corporationissa
  • EMCssä hänen ryhmänsä kehitti varsinkin aluksi
    lähinnä makrojen käsittelijöitä muistuttavia
    ohjelmia

Grace Murray Hopper (1906 1992)
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
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 ltcompiled the best short stories
    ever written into one fat bookgt "
  • 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
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
TPK A-2lla(vuoden 1953 versio)
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
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
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
TPK Autocodella
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
TPK-algoritmi Laningin ja Zierlerin kielellä
Tähän tulevat syötteet
SP 4 Ehdoton hyppykäsky kohtaan 4
aivj
CP 1 Jos edellisen lauseen arvo lt 0, siirry
kohtaan 1. Tällä saadaan aikaan silmukka.
F11 laskee itseisarvon, F1 neliöjuuren
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
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
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
Fortranin kehitys
  • Aiemmin muun muassa Speedcodingia kehittänyt John
    Backus ehdotti uuden ohjelmointikielen
    tuottamista 704-tietokoneelle IBMllä loppuvuonna
    1953
  • Kehitykseen vaikuttivat myös mm. Harlan Herrick,
    Irving Ziller ja Ron Nutt
  • Kielen alkuperäinen määrittely oli valmis
    marraskuussa 1954

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
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 26n 704-tietokoneen käyttäjistä käytti
    kieltä suurimmassa osassa ohjelmiaan, ja saman
    vuoden syksyllä yli puolet 66n koneen
    konekielikäskyistä tuotettiin Fortranilla

35
TPK-algoritmi Fortranilla
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
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
Yhteenveto (jatkoa)
  • Vasta Fortran tarjosi mahdollisuuden helpohkon
    ohjelmoinnin ja tehokkaiden ohjelmien välillä, ja
    aloitti siten korkean tason ohjelmointikielten
    läpimurron

39
Aikajana
  • Lorenz-salaus murtuu 1941
  • Plankalkül n. 1945
  • Short Code 1949-1950
  • 1950-luvun alussa TKKlla 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
Kuvien lähteet(13.4.2005)
  • John Backus http//www-groups.dcs.st-and.ac.uk/h
    istory/PictDisplay/Backus.htm
  • Alick Glennie http//hopl.murdoch.edu.au/
    showperson.prx?PeopleID185
  • Grace Hopper http//www-groups.dcs.st-and.ac.uk/
    history/PictDisplay/Hopper.html
  • John Mauchly http//www-etsi2.ugr.es/alumnos/mlii
    /Mauchly.htm
  • Konrad Zuse http//www-groups.dcs.st-and.ac.uk/h
    istory/PictDisplay/Zuse.html
Write a Comment
User Comments (0)
About PowerShow.com