Sunday, August 15, 2021

Reikäkortteja ja eräajoja

Olen 70 v tietotekniikka-ammattilainen. Olen aloittanut tietotekniikan opinnot 1972 Turun Yliopiston tietotekniikan approbatur kurssilla. Turun Yliopiston oli hankittu IBM 1130. Laite koostui keskusyksiköstä, jossa oli 0,64 Mb keskusmuisti, kovalevy-yksikkö jossa oli 1 Mb vastaava levytila, rivikirjoitin ja reikänauhan lukija. Installaatiossa oli Fortran III ja Cobol kääntäjät. 


Approbatur kurssin syyskausi opiskeltiin Fortran kieltä ja kurssiin kuului kolme harjoitustyötä. 


Ohjelmat kirjoitettiin paperille ja sen jälkeen ohjelma kirjoitetiin korteille. Opiskelijoilla oli käytössä kolme kortilävistäjää. Pitää muistaa, että opiskelijoita oli todella vähän.


opiskelijoiden käytössä olleet kortiläsitimet


             IBM 1130 ohjauspaneeli            

kortinlävistystä :   https://www.youtube.com/watch?v=YnnGbcM-H8c

                                               

    

 Fortran ohjelmaa reikäkortilla

Fortran kieltä

  Cobol Ohjelmaa reikä korteilla

Opiskelija eivät päässeet tietokonehuoneeseen, vaan sitä hoitivat osaston opettajat.

Oppilaat jättivät valmiit korttipakat ajolaatikkoon ja operaattorit ajoivat työ. Ajoja oli kerran aamupäivällä

ja kerran iltapäivällä. Tulostukset voi noutaa tulostuslaatikosta. Kääntäjä yritti käännöstä ja jos

ohjelmassa ei ollut syntaksivirheitä se suoritti eräajon. Jos se kohtasi syntaksivirheen se lopetti

virheilmoitukseen. Jos siis ohjelmassa oli sanokaamme kolme syntaksivirhettä, meni puhtaaseen

käännökseen ja eka testiajoon kaksi työpäivää!


Muutamia aikakauden kovia faktoja,


Aluksi sekä keskusmuistit, että levymuistit olivat kovin pienet.

1985 saakka suurimmassa osassa tietokoneita ei ollut virtuallimuistitekniikka, Käytännössä tämä

tarkoitti sitä, että KOKO suoritettavan ohjelmaan koodi piti mahtua fyysiseen keskusmuistiin.

Tämä rajoitti huomattavasti sitä, mitä ohjelmat voivat tehdä. Toisaalta ohjelma mahtui printattuna aina

muutamalle sivulle, jollain koodi oli helppo tarkastaa, vaikka siinä ei käytännössä ollut mitään

rakennetta.


Kun sitten virtuaalimuistit otettiin käyttöön, ohjelmointi joutui  ensimmäiseen globaallin kriisiin. Kun

ohjelmien koolla ei enää käytännössä ollut ylärajaa ja toisaalta ei ollut mitään ohjelmointia tukevia

kielten rakenteita, isot ohjelmat muodostuivat niin sotkuisiksi, että niitä ei saatu ikinä toimiviksi.

Dijkstra kirjoitti kirja Structured Programming, joka jää historiaan. kesti kuitenkin ainakin

vuosikymmenen, ennen kuin nämä rakenteet oli saatu edes osittain kääntäjien osaksi.



Aluksi kaikki tietokoneet olivat eräajokoneita. Ohjelma siis käynnistettiin ja sen kulkuun ei
suoritusaikana voinut mitenkään puuttua. Ensimmäiset osituskäyttöjärestelmällä varustetut tietokoneet tulivat 70-luvun aikana. Niinpä Turun Yliopistokin sai 1973 uuden tietokoneen, joka oli Digitalin DEC-10. Meille koitti uusi aika ja reikäkortin lävistimet vaihtuivat Teletype paperisiin on-line päätteisiin. Nyt Teletypellä otettiin istunto tietokoneeseen ja ohjelmat voitiin kirjoittaa suoraan omaan levytilaan ja kääntää ja ajaa sieltä. Uudistus oli maata mullistava. Mukaan tuli myös uusi Pascal-kääntäjä. Se mahdollisti rakenteisen ohjelmoinnin.

Laajalti suomalaista yrityskenttää hallitsi isot IBM mainframe koneen ja niissä ajettiin lähes pelkästään eräajo-ohjelmia. Globaalisti - ja myös Suomessa - pankkimaailmaa on piinannut IBM mainframet ja eräajo Cobol ja sen varjoja lienee vieläkin pankkimaailmassa.

Kun laudaturkurssit oli suoritettu, ryhdyin hakemaan ensimmäistä vakinaista työpaikkaan. Kotikaupungistani sitä ei löytynyt, joten laajensin haun PK-seudulle ja lopulta sain paikan Yleisradion ATK-osastolta. Tehtäväni oli juuri valmistuneen ( oikeasti valmistumassa olevan) uuden palkanlaskentajärjestelmä ylläpito. Tämä sovellus oli suuri ja kunnianhimoinen. Oletettavasti silloisen Suomen paras ja monipuolisin palkanlaskentajärjestelmä. Järjestelmä oli kokonaan eräajo järjestelmä. Yle työajat olivat silloinkin eräs Suomen erikoisimmat. Palkkaa laskettiin yhdentoista työehtosopimuksen mukaan. Järjestelmä oli sellainen, että se osasi laskea kaikki palkat 6 kk taannehtivasti uudelleen. Ohjelmiston toteutus oli venynyt kaksinkertaiseksi suunnitellusta ja lopuksi kaikki osaajat oli irtisanottu.


Ohjelmiston läpiajo kesti n. 2 tuntia ja siinä oli 5 tai 6 ajovaihetta. Silloisessa IBM 360 ei ollut kovalevyjä eikä niin muodoin mitään tietokantaa edes etäisesti muistuttavaa, vaan kaikki tieto oli mg-nauhoilla ja ohjelmiston yksi keskeinen haaste oli syöttötiedostojen tahdistaminen, sillä tiedostoja ei voinut peruuttaa.


Palkat laskettiin kaksi kertaa kuussa ja palkka-ajot tehtiin pari kolme päivää ennen palkanmaksua, joka sekin tehtiin 15. ja viimeinen päivä.
Kuten totesin ohjelmisto oli keskeneräinen ja niinpä ensimmäisen 7 - 9 kk työni oli seuraava. Kun ohjelma ajon aikana kaatui sain seuraavan päivänä Tietokoneen muistivedoksen ( memory dump). Se oli n. 20 cm korkea pino tulostettua ketjulomaketta. Muistivedoksesta löytyi se muistipaikka, johon ohjelma oli kaatunut. Tämän jälkeen tehtäväni oli etsiä tulostetusta paperikoodista (Cobol) se ohjelman käsky, joka oli aiheuttanut kaatumisen. Samalla selvisi mitä syöttötietoa ohjelma oli käsittelemässä. Seuraavaksi syöttöaineistosta poistettiin tuo pulmallinen syöte ja yritettiin uudelle. useimmiten ajo meni tämän jälkeen läpi ja palkat saatiin maksuun. Sitten mulla oli noin kaksi viikkoa aikaa selvittää ohjelmointivirhe ja korjata se. Ohjelmisto oli pari hyllymetriä tulostettu cobol-koodia.

Liiketoimintaa tukevan tietojenkäsittelyn kulminaatiopisteet ja harppauskohdat ovatkin olleet eräajosovellusten muuttuminen päätekäyttöisiksi ja tietokantojen synty. Vielä siis 80-luvulla elettiin tuossa vanhassa maailmassa. Päätekäyttöiset tietojärjestelmät edellyttävä tietojen tallennusta tietokantoihin. Ennen tätä aikaa tiedot tallennettiin mg-nauhoille.

Tietokannat ja päätekäyttö ovat yksinkertaistaneet ohjelmalogiikkaa, kun tietojen käsittelyjärjestys vapautui ja näytöt osittivat ohjelmalogikan näyttökohtaiseksi. Sammalla laitteiden kapasiteetit ja tehot kasvavat eksponentiaalisesti ja tämä toi taas esiin uusia suunnittelun ja toteutuksen puutteita.

Viimeinen suuri harppaus tapahtui vuosituhannen vaihteessa, kun olioanalyysi ja olio-ohjelmointi syntyivät, mutta tämä onkin sitten jo ihan omia tarinan aihe.