6 Silmaring: Katkeid programmeerimise ajaloost

Ühelt poolt on programmeerimise ajalugu küllaltki lühike, eriti võrreldes mõnede teiste valdkondadega. Teiselt poolt on aga siingi juhtunud palju huvitavaid sündmusi, on olnud erinevaid ajajärke ja tegutsenud värvikaid persoone. Siin saame tutvustada vaid vähest, aga loodetavasti mingi (küll väga fragmentaarse) taustapildi siiski saab.

Programmeerimise ajalugu algab juba enne seda, kui arvutid füüsiliselt valmis said. Nimelt leidis inglise matemaatik Charles Babbage 1812. aastal, et teatud arvutusi võiks teha hoopis masin. Aastakümnete jooksul tegeles ta selle mõtte realiseerimisega. 1842. aastal tutvustas ta loengus universaalse mehaanilise arvuti – analüütilise masina ideed. Teatud eeskujuks olid automaatsed kangasteljed. Varasematest ideedest eristas seda masinat just see, et protsessi pidi juhitama varemkoostatud juhiste järgi. C. Babbage püüdis seda masinat ka valmis ehitada, aga tolleaegsete tehniliste võimaluste piiratuse tõttu see ei õnnestunud. Masina lihtsam kuju tehti valmis aastaid hiljem. Mitmed tema põhimõtted aga leidsid rakendamist hilisemates arvutites.

Analüütilise masina loengu põhjal avaldati artikkel, mille C. Babbage palus inglise keelde tõlkida Ada Lovelace’il, kes oli luuletaja lord Byroni tütar. Lisaks tõlkimisele lisas A. Lovelace artiklile ka kommentaare, mille hulgas olid ka juhised, kuidas selle masina abil leida Bernoulli arve. Hiljem on neid juhiseid hakatud pidama ajaloo esimeseks programmiks ja Ada Lovelace’i esimeseks programmeerijaks. Rohkem programme ta teadaolevalt ei kirjutanud ja ei saanud seda ainsatki masinal reaalselt testida. See, et esimene programmeerija oli naine, on vahel olnud inimestele üllatav. Tegelikult saab programmeerimisega muidugi tegeleda soost sõltumata.

Saladused

Hüppame nüüd ajas umbes sada aastat edasi. Vahepeal oli masina abil näiteks edukalt analüüsitud USA rahvaloenduse andmeid, kusjuures masina kasutamine andis tohutu ajavõidu. Perfokaarte oli kasutatud näiteks raamatupidamises. Teise maailmasõja eel ja ajal oli suur osa tegevusest seotud sõjandusega. Võib-olla isegi sõja lõpptulemust oluliselt mõjutanud saaga on seotud saksa šifreerimisaparaadi Enigma koodi lahtimurdmisega. (Sellest on juttu ka filmides, nt Imiteerimismäng (The Imitation Game).) Nimelt vahetasid saksa staabid, allveelaevad jm omavahel sõnumeid Enigmaga šifreeritult. Selle koodi lahtimurdmisega tegeles spetsiaalne töörühm Londoni lähistel Bletchley Parkis. Töörühmal dešifreerimine õnnestuski ja nende töö andis ka impulsi inglise elektronarvuti Colossus loomiseks. Sakslaste sõnumitest arusaamine võimaldas oma tegevust paremini planeerida ja kui see polnudki põhiline põhjus, miks sõda sedapidi lõppes, siis olulise panuse see kindlasti andis. Bletchley Parki saab ka külastada.

Üks Bletchley Parki töörühma liidreid oli kahtlemata värvikas isiksus Alan Turing. Ühelt poolt oli tegemist kindlasti äärmiselt andeka matemaatiku ja informaatikuga. Tema tööd on arvutiteaduses fundamentaalse tähtsusega: Turingi masin ja Turingi test kannavad lausa tema nime.

Teiselt poolt oli tegu innustunud pikamaajooksjaga, kes võis Bletchley Parkist üle 60 km kaugusele Londonisse koosolekule joosta. Tema maratonijooksu rekord oli üsna arvestataval tasemel. Kuna ta kannatas heinapalaviku all, siis teatud perioodidel sõitis ta jalgrattaga tööle, gaasimask peas. Isiklik elu oli A. Turingil traagiline. 1952. aastal mõisteti ta süüdi ebasündsuse paragrahvi alusel, mille alla homoseksuaalsus tol ajal käis. 1954. aastal leiti Alan Turing tsüaniidimürgituse tagajärjel surnuna, käeulatuses pooleldisöödud õun. Kuninganna Elisabeth II tühistas süüdimõistva otsuse 2013. aastal.

Programmeerimiskeeled

Räägime nüüd ka natuke sellest, kuidas aegade jooksul arvutile oma soove on teada antud. Juba mehaanilistest masinatest peale on olulisel kohal olnud suhteliselt kahevalentne lähenemine nii programmide kui andmete osas. Nii on näiteks perfokaardil või perfolindil mingis konkreetses kohas auk või seda ei ole, mingi lamp põleb või ei põle, mingis pesas on midagi või pole. Arvude kujul on seda mõistlik kirja panna vaid kahe numbri, 1 ja 0 abil.

Programmeerimiskeeled võib (mõnevõrra tinglikult) jaotada põlvkondadesse. Nii saab eristada näiteks:

1. põlvkond – masinkood
2. põlvkond – assemblerkeeled
3. põlvkond – kõrgtasemekeeled

Masinkoodis programmid koosnevad tinglikult ainult ühtedest ja nullidest, näiteks

00000000001000100011000000100000

võib tähendada “liita aadressidel 1 ja 2 olevad arvud ning salvestada resultaat aadressile 6“. Sellist programmi on inimesel raske lugeda ja kirjutada, masinale on see aga hästi “seeditav”. Assemblerkeeles programmitekst on juba inimesele natuke paremini mõistetav, näiteks

add $1, $2, $3

Siiski loetakse assemblerkeeles kirjutatud programme madalatasemeliseks. See tähendab siinkohal arvutilähedust – assemblerkeelt valdavad programmeerijad on ise reeglina (oskuste poolest) just kõrgetasemelised.

Kõrgtaseme keeles programmi suudab ettevalmistunud inimene hästi kirjutada ja lugeda, masina jaoks tuleb seda aga transleerida. (Transleerimine ongi konkreetne termin, kuigi olemuselt see muidugi tõlkimist tähendabki.) Järgmiste põlvkondade programmeerimiskeeled peaksid olema veelgi rohkem programmeerijasõbralikumad ja tehisintellekti abil ülesandeid pigem ülesande (inimkeelse?) kirjelduse kui juba etteantud lahendussammude järgi lahendama.

Litsents

Icon for the Creative Commons Attribution 4.0 International License

Programmeerimine on loodud Eno Tõnisson, Tauno Palts, Merilin Säde, Kaarel Tõnisson jt poolt Creative Commons Attribution 4.0 International License litsentsi alusel, kui pole teisiti märgitud.

Jaga seda raamatut