Bittinikkareista ohjelmistotuotannon alkuun
Jukka-Pekka Koskela
Helsinki 12.4.2000
Tietojenkäsittelytieteen historia -seminaari
Esitelmä
HELSINGIN YLIOPISTO
Tietojenkäsittelytieteen laitos
Sisällysluettelo
1. JOHDANTO ………………………….....………………………………………..1
1.1 Ohjelmistotuotannon kehityksen seurantakohteet …………..……….…….1
2. RELETIETOKONEET ………….…………………………...……………………2
3. VARHAISTEN TYHJIÖPUTKITIETOKONEITTEN AIKA .…………………...3
3.1 Laitteisto …………………………….…………………………………………..3
3.2 Käyttäjän näkökulma tietokoneen käyttöön 1950 –luvun alkupuolella …....4
4. 1950 –LUVUN JÄLKIPUOLISKO JA 1960 –LUKU ……………………...……5
4.1 Laitteiston kehitys ………………………………………………………….……5
4.2 Ohjelmoinnin tuki: varhaiset ohjelmointikielet, käyttöjärjestelmät yms. …..6
4.3 Omavaraisuuden tilalle työnjako tietojenkäsittely-yhtiöitten välillä …….…..8
5. NÄKÖKULMIA OHJELMISTOTUOTANTOON 1960 –LUVUN
JÄLKIPUOLELLA ………………………………………………………………...…8
5.1 Ohjelmistotuotannon alku ………………………………………………….…...8
5.2 Tuotannon ohjaus ………………………………………………………….……9
Liite: Tietokonesukupolvet ………………………………………………………….9
LÄHTEET ………………………………….………………………………………...10
1. Johdanto
Ohjelmistotuotannon historia sopii laajuutensa takia pikemminkin koko seminaarin kuin yhden esitelmän aiheeksi (kts. kohta ohjelmistotuotannon kehityksen seurantakohteet). Löytämäni aineiston rajallisuus ja puutteellisuuskin on tehnyt pääosan aihepiirin rajauksesta. Löytämäni lähteet kuvaavat merkittäviä tapahtumia tietojenkäsittelyssä 1930 –luvun loppupuolelta 1960 –luvulle. Tuon ajanjakson aikana päästään laiteläheisestä toiminnasta varsinaisen ohjelmistotuotannon alkuun. Nämä lähteet valitettavasti kattavat vain vaillinaisesti silloin tapahtuneen kehityksen. Mutta niiden avulla on mahdollista kuvata esitelmässä toiminnan luonteen muuttuminen kohtuullisen hyvin.
1.1 Ohjelmistotuotannon kehityksen seurantakohteet
Työkalut. Näissä on tärkeää suoritusteho, hinta ja käytön helppous. Varsinaisena työkaluna on tietokone, jonka suoritustehossa on tärkeää prosessorin nopeus ja muistin koko. Oheislaitteitten kohdalla on oleellista tietokoneen I/O. Siinä on tärkeää datansiirtonopeus ja kuinka lähellä käyttäjän pitää olla tietokonetta. (Jälkimmäinen kohta menetti lähes merkityksensä vasta henkilökohtaisten tietokoneitten aikana.) I/O -laitteet ovat tilanteesta riippuen olleet osa fyysistä tietokonetta tai sitten siitä erillään. Fyysisen tietokoneen käsitettä on hämärtänyt lisää myöhempien aikojen tietokoneverkot ja sulautetut järjestelmät.
Perustyö eli ohjelmoiminen. Eri tilanteisiin sopivat ohjelmointityylit: laite- ja tehtäväläheinen ohjelmointi sekä eri ohjelmointiparadigmat (olio-, proseduraalinen jne. ohjelmointi). Ohjelmoinnin tukena on apuohjelmia (kääntäjät, käyttöjärjestelmät jne.), suunnittelukäsitteistö (tietorakenteet, oliot, kerrosmallit (esim. OSI -pino) jne.), piirrosohjelmia suunnittelutekniikan (esim. UML) käyttöä varten jne.
Ohjelmistotuotannon perustaan kuuluu em. lisäksi: ohjelmien koko (muistinkulutus, vaadittu työmäärä), työn tehokkuus ja työn ositus eri henkilöille tai työtyypeille (arkkitehtuuri, koodaus, asiakasdokumentit, ohjelmaversioitten hallinta jne.).
Varsinaiseen ohjelmistotuotantoon kuuluu tuotteen valmistus ja sen yhteys yhtiön muuhun toimintaan. Siinä on tärkeää mm. tuotteen suunnittelu, ohjelmistoprojektin hallinta ja tuotannon yhteys yhtiön kokonaistoimintaan (perusprosessit: tilaus/toimitus, asiakastarpeesta tuotteeksi, uutta teknologiaa yhtiöön).
Ohjelmistotuotantoon kuuluu myös resurssien hallinta. Fyysisinä resursseina on työvälineet, apuvälineet, toimitilat. Henkisiin resursseihin kuuluu mm. henkilöstön osaamisen kehittäminen, heidän kehittymisensä huomioonotto (oppimisvauhti, opitut asiat) ja urasuunnittelu. Resurssien käytön kannalta on tärkeää tuntea työn, siihen liittyvän työkulttuurin ja työntekijän luonteen välinen yhteys.
Ohjelmistotuotannon historiassa työkalujen antamat mahdollisuudet ovat vaikuttaneet voimakkaasti työn luonteeseen ja tuotteen kokoon ja sen tuottamisen vaatimiin resursseihin. Tuotteen vaatimat resurssit on perinteisesti ollut tuotannonsuunnittelun perusta. Myös tuotteen fyysinen koko on tärkeä tekijä tuotannonsuunnittelussa. Tuotannonsuunnittelulla ja työn luonteella on vahva keskinäinen vuorovaikutus. Näistä syistä ohjelmistotuotannon eri osatekijöitä pitäisi tarkastella yhdessä ja seurata, miten ne ovat muuttuneet ja vaikuttaneet toisiinsa historian aikana.
2. Reletietokoneitten aika [HB82]
Reletietokoneita valmistettiin 1930 -luvun lopulla ja 1940 -luvulla. Ensimmäinen Bell Labsissä suunniteltu oli Model I, joka valmistui 1939. Se oli ensimmäinen elektroninen tietokone, joka suoritti aritmeettiset operaatiot pohjimmiltaan binaarimuodossa. Viimeinen merkittävä reletietokone oli ilmeisesti Bell Labsissa suunniteltu Model VI. (Käytettiin Bell Labsissä 1950 - 56.) Niitä käytettiin vielä useita vuosia sen jälkeen, kun tehokkaammat tyhjiöputkitietokoneet olivat syrjäyttäneet ne, koska uuden tietokoneen hankkiminen oli kallista. (Vanhentuneet tietokoneet usein lahjoitettiin oppilaitoksiin, joissa käytettiin näin saatuja reletietokoneita vielä 1960 -luvulla.) Tietokoneita tehtiin harvakseltaan: tyyppiä kohti muutama, usein vain yksi.
Ensimmäiset reletietokoneet olivat varsin tehottomia. Esim. Model I sisälsi 450 relettä, se kykeni käsittelemään 8 -numeroisia lukuja ja sen sisäinen laskentatarkkuus oli 10 numeroa. Myöhemmissä malleissa teho lisääntyi ja ne olivat luotettavia. Bell Labsin kaksi Model V -tietokonetta toimivat usein niin, että jompikumpi koneista työskenteli viikossa 167 tuntia 168 mahdollisesta. Sen mallin koneissa oli noin 9000 relettä ja kaksi erillistä prosessoria. Suorituskyvyltään mallin kone vastasi 200 - 250 pöytälaskukoneen käyttäjää. Bell Labsin Model V ja VI sekä Aikenin suunnittelema Mark II olivat kooltaan ja suorituskyvyltään verrattavissa toisiinsa. Kertolaskuun meni noin sekunti, jakamiseen 2.7 sekuntia, neliöjuuren laskemiseen 4.5 sekuntia ja logaritmin laskemiseen 15 sekuntia.
Bell Labsin ensimmäisessä reletietokoneessa Model I:ssä oli etä- ja moniasemalaitteisto, jonka avulla tietokoneeseen voitiin lähettää työ tai saada työn lopputulos eri kerrokseen kuin missä tietokone oli. Model I oli ensimmäinen tietokone, jossa oli toteutettu tämä ominaisuus. Etätyölaitteisto joutui varsinaiseen testiin American Mathematical Societyn kokouksessa 1940. Pääteasema sijaitsi Hanoverissä, New Hampshiressä ja tietokone New Yorkissa. Vastaus saatiin alle minuutissa. Etätyömenetelmää ei otettu muualla käyttöön kymmeneen vuoteen. Ohjelmistotuotannon kannalta keksintö oli merkittävä, sillä toiminnan tehokkuus kärsii selvästi, jos työntekijät joutuvat viemään kaukaa ohjelmansa tietokoneelle tai muuten odottamaan, että saavat ohjelmansa suoritettavaksi tietokoneella. Mutta isojen, monia henkilöitä työllistävien ohjelmistojen aika oli vuosien päässä, joten oli luonnollista, että tämä keksintö jäi sivuun pitkäksi aikaa.
Tavallisesti reletietokoneissa käytettiin reikänauhaa ohjelman ja sen datan antamiseen tietokoneelle. Nämä voitiin jättää myöhemmissä reletietokoneissa odottamaan suoritusvuoroaan odotusasemalle (problem position), joita oli useita (Model V:ssä kolme tai neljä).
Ohjelmointimahdollisuus tuli hyvin varhain reletietokoneisiin. (Bell Labsin suunnittelemissa koneissa viimeistään Model II:een, joka otettiin käyttöön 1943. Valitettavasti lähteessä [HB82] siitä ei kuitenkaan kerrota selkeästi.)
Jo Model I:ssä oli apurutiineja, jotka suorittivat varsinaisen toiminnan (esim. kerto- ja jakolaskun). Model VI:ssa ajatusta oli viety pitkälle. Sen sisäiseen muistiin mahtui useita satoja puolikiinteitä alirutiineja, jotka muodostivat kuusi hierarkiatasoa. Reikänauhakäsky tavallaan käännettiin näitten hierarkiatasojen läpi konekäskyiksi. On makuasia, pitääkö tätä ensimmäisenä alkeellisena kääntäjänä.
Hintatietoja ([Ros91] s. 11 – 12 ):
U.S. National Bureau of Standards (NBS) sai tarjouksia 1948: Raytheonin hinta oli 4000 sanan muistin koneelle 650 000 $ ja 425 000 – 595 000 $ pienemmälle muistille. Eckert ja Mauchly tarjoutuivat rakentamaan koneen 150 000 $:lla.
EMCC tarjosi 1948 yksittäistä Univacia Census Bureaulle (väestörekisteri) 169000 $:lla. EMCC arvioi kehityskustannuksiksi 400 000 $.
Lähteessä ei mainittu, millaisia tietokoneita ne olivat. Tuskinpa ne olivat reletietokoneita, koska ne käyttivät tähän aikaan jo vanhahtavaa tekniikkaa.
Vertailuksi ([Nash90] s. 257 –258):
U.S. National Bureau of Standards (NBS) muodosti 1947 Applied Mathematics Divisionin. Sille suunniteltiin vuotuista 360 000 $:n budjettia ja suunnilleen 100 ihmisen henkilökuntaa. NBS:n tehtävänä oli mm. valmistaa sovelletun tilastotieteen taulukkoja ja käsikirjoja.
3. VARHAISTEN TYHJIÖPUTKITIETOKONEITTEN AIKA
3.1 Laitteisto
Lähteinä on käytetty ENIACin ja EDVACin kohdalla [HB82]:ä ja [Häm00]:ä. EDSACin ja ILLIACin tietojen kuvauksessa on käytetty [Nash90] s. 96 ja s. 269 – 279. Taustatietojen lähteenä on [Ros91].
Uusi tyhjiöputkitekniikka toi kertaluokan tehonlisäyksen aikaisempaan reletekniikkaan verrattuna. Tyhjiöputkikiikku (flip–flop) keksittiin jo 1919, mutta sitä hyödynnettiin laskentaan vasta 1946, kun ENIAC valmistui. Ja sitä hyödynnettiin ohjelmointiin vasta, kun EDVAC valmistui ([Häm00]: 1949, [HB82]: 1950). Aikakausi vuorollaan korvaantui uudella, kun isot, nopeat ja luotettavat magneettirengasmuistit (magneettiset ydinmuistit) otettiin käyttöön 1950 –luvun puolivälissä.
ENIAC sisälsi noin 18 000 tyhjiöputkea. Se laski 5 000 yhteenlaskua sekunnissa ja jakolaskuun meni käytetystä yksiköstä riippuen 2.8 tai 24 millisekuntia. Koneen sisäinen laskunopeus oli niin paljon suurempi kuin I/O:n, että tiedot luettiin reikäkortilta relemuistiin. Se käytti ulkoisena muistina IBM:n reikäkortteja ja oli käytössä 1946 – 55. Koneen viemä lattiapinta-ala oli n. 160 m2 ja sen hinta oli n. 750 000 $.
EDVACin elohopeasylintereillä toteutettu muisti sisälsi 1024 44 –bittistä sanaa. Koneen viemä lattiapinta-ala oli n. 45 m2 ja sen hinta oli n. 467 000 $.
EDSAC aloitti toimintansa Cambridgen matemaattisessa laboratoriossa 1949. Sen muistin koko oli 512 sanaa, kussakin 17 bittiä. Sen tehoa lisättiin sen elinaikana. Datan syöttönopeus kasvoi 7:stä 50 merkkiin sekunnissa. Tulostusnopeus kasvoi 7:stä 35 merkkiin sekunnissa. Myöhemmin käytettiin magneettinauhoja lisämuistina.
ILLIAC otettiin käyttöön 1952 Urbanassa, Illinoisissa. Ensimmäisen ILLIACin muistin koko oli 1024 sanaa, kussakin 40 bittiä.
Näihin aikoihin (1945) Neumann kirjoitti kuuluisan raporttinsa, jossa hän jakoi tietokoneen viiteen osaan: laskentayksikköön (central arithmetical organ, CA), kontrolliyksikköön (central control organ, CC tai C), muistiin (memory, M), syötelaitteeseen (input, I) ja tulostuslaitteeseen (output, O).
3.2 Käyttäjän näkökulma tietokoneen käyttöön 1950 –luvun alkupuolella
Tietolähteenä on David J. Wheelerin artikkeli ([Nash90] s. 269 – 279) kokemuksistaan tietokoneen käyttämisestä Cambridgen (1949 – 51, 1953 - ) ja Illinoisin (1951 –53) yliopistoissa.
1950 –luvulla siirryttiin käsityömäisestä laskukoneitten käytöstä laskentaan digitaalisten tietokoneitten avulla. Siihen aikaan tietokoneet olivat hitaita ja epäluotettavia, mutta suhteellisen nopeita verrattuna laskukoneitten avulla laskemiseen. Suunnilleen joka sadas käsin laskettu tulos oli väärä, mutta vain noin joka miljoonas automaattisesti tietokoneella laskettu oli väärä 1950 –luvun alkupuolella. Käsin kirjoitetuissa ohjelmissa virheasteena oli muutama virhe sataa käskyä kohti. Ohjelmavirheet olivat ilmeisempiä kuin käsin laskiessa. Päättymättömät silmukat, varhainen pysähtyminen ja täysin väärät tulokset oli helppo havaita.
Ohjelmien saaminen moitteettomiksi oli hallitseva ongelma tietokoneitten varhaisessa käytössä. Käyttäjien näkökulmaa tietokoneisiinsa määräsi kääntäminen (turn-around) ja menetelmät, joilla poistettiin virheitä ohjelmista. Ongelmien numeerinen analyysi jäi toiselle sijalle. Toinen tärkeä tekijä oli ohjelmien koko. Kiinnostavat ongelmat pyrkivät olemaan tietokoneen rajojen lähellä. Niinpä ohjelman koko ja suoritustehokkuus olivat tärkeitä.
Myöhemmin luotettavuus tuli tärkeämmäksi kuin tilankulutus ja uutta välineistöä voitiin ottaa mukaan.
Kirjastorutiinien luotettavuus oli merkittävä tekijä. Hyvin varhaisina aikoina oli taipumusta hyväksyä kaikki kirjastoon. Tästä tuli pian ongelmia. Ennen kuin saatiin vahva kuri testaamalla alirutiinit ja hylkäämällä sopimattomat niistä, käyttäjien oli vaikea löytää hyödyllisiä alirutiineja. Tämä kuri piti löytää uudelleen monta kertaa useissa toimipaikoissa.
4. 1950 –LUVUN JÄLKIPUOLISKO JA 1960 –LUKU
4.1 Laitteiston kehitys [HB82]
1950 –luvun puolivälistä lähtien puolistabiilia magneettirengasta (magnetic core) alettiin käyttää nopeaksi, tiheäksi, ja suhteellisen halvaksi luku/kirjoitusmuistiksi sekä kidediodeja alettiin käyttää useimpiin yksityiskohtaisiin loogisiin operaatioihin, joita tarvittiin laskennassa ja ohjauksessa. Eniten käytettiin AND ja OR –portteja, jotka oli keksitty vuosikymmen aikaisemmin Bell Labsissä. Magneettirengas ja diodi kuitenkin vaativat tyhjiöputkipulssivahvistimen käyttöä varastoimaan signaalin taso. Mutta tyhjiöputkien määrä oli huomattavasti vähennyt yhdessä putkien koon ja tehovaatimusten (watteina) kanssa. Tämän tuloksena tietokoneitten koko pieneni ja suorituskyky parani merkittävästi. 1950 –luvun jälkipuolen kaupalliset tietokoneet perustuivat tyypillisesti puolijohdelogiikkaan (solid-state logic) ja tyhjiöputkivahvistukseen.
Tietokoneen toinen sukupolvi perustui transistoriin. Transistori-ilmiön keksivät J. Bardeen, W.H. Brattain ja W. Schockley Bell Labsissä 1947. Transistori teki mahdolliseksi 1960 –luvun puolijohdetietokoneet (all-solid-state).
1960 –luvun jälkipuoliskolla alkoi käydä ilmeiseksi, että yksittäisten keskustietokonekokonaisuuksien aika alkoi olla ohi. Paikallisiin tarpeisiin alettiin käyttää suhteellisen halpoja minitietokoneita. Isojen keskustietokoneitten osaksi jäi vaativat tehtävät.
4.2 Ohjelmoinnin tuki: varhaiset ohjelmointikielet, käyttöjärjestelmät yms. [HB82]
Tehtäväsuuntautuneet kielet
Model VI reletietokonetta oli melko helppo ohjelmoida, koska kirjastoalirutiinien käyttö vähensi laiteläheisen ohjelmoinnin tarvetta. Kun IBM 650 –tietokoneet saapuivat (ensimmäinen 1955 ja toinen 1956) Bell Labsiin, haluttiin vastaava järjestelmä niihinkin. Toinen syy tehtäväsuuntautuneen (problem-oriented) kielen kehittämiseen oli, että tähän aikaan alkoi jo olla paljon (tieteentekijöitä ja insinöörejä) ohjelmoijia, jotka ei tunteneet kunnolla eikä heitä edes kiinnostanut tietokoneen oma kieli. Tehtäväsuuntautuneen kielen piirteinä oli huomattavasti yksinkertaistettu datan osoittaminen muistissa ja hyödyllinen diagnostiikkainformaatio ohjelman virhetoiminnasta. Näitten kielten (L1 ja L2) käyttö levisi Bell Labsin ulkopuolelle niin, että 1950 –luvun loppupuolella ainakin puolessa IBM 650:lla tehdystä tieteellisestä tai insinöörityöstä käytettiin L1:tä ja L2:ta. L1 ei kuitenkaan ollut koneriippumaton kieli, sillä jouduttiin vaikeuksiin, kun yritettiin kirjoittaa L1 –tulkkia IBM 1401:lle.
Vielä tähänkin aikaan yleisenä käytäntönä oli, että käyttäjät tekivät ohjelmansa itse. Käyttäjät pitivät tätä parempana, koska he saivat vastauksen nopeammin, tiesivät, mitä tapahtuu eikä tarvinnut huolehtia, ymmärsikö ohjelmoija tehtävää, joka piti muuttaa ohjelmaksi.
Vuodesta 1957 lähtien IBM 650 –koneet eivät riittäneet. Se ei johtunut vain suoritettavien ohjelmien määrästä, vaan myös ohjelmien koon kasvusta. Vanhat koneet korvattiin IBM 704:llä. L1 ja L2 korvattiin IBM:n tarjoamalla FORTRANilla (FORmula TRANslation), joka oli näitä selvästi parempi. Sen ensimmäinen versio tuli markkinoille 1950 –luvun puolivälissä. Saatiin myös symbolinen konekieli (SAP), joka huomattavasti vähensi konekielisen ohjelmoinnin rasitusta.
1950 –luvun loppupuolella useita symbolisia konekieliä (esim. SAP) oli saatu käyttöön. 1957 joihinkin niistä (esim. IBM:n SCAT ja SAP 704 –koneeseen) tehtiin mahdollisuus, että käyttäjä voi määritellä käskymakroja. 1959 M.G McIlroy ja D.E. Eastwood Bell Labsissä lisäsivät ehto- ja rekursiomakrot SAPiin.
1960 –luvun alkupuolella D.J. Farber, R.E. Griswold ja I.P. Polonsky huomasivat tarpeen paremmalle merkkijonojen käsittelyvälineistölle, ja kehittivät SNOBOLin (StriNg Oriented symBOlic language). Se osoittautui hyödylliseksi ja suosituksi, koska sillä oli uusi lähestymistapa kuvioitten löytämiseen. Sitä käytettiin laajasti Bell Labsissä ja muualla – alueilla dokumenttien muotoilusta teorioitten testaamiseen. Kielen vahvana puolena oli asennettavuus erilaisiin ympäristöihin. Se toteutettiin makrojen avulla.
Korkeamman tason ohjelmointikielten (FORTRAN, SNOBOL jne.) ominaisuuksien muuttumisesta on pidetty oma esitelmä tässä seminaarissa.
Käyttöjärjestelmä
IBM 704:n paljon suuremman nopeuden hyödyntäminen vaati magneettinauhojen käyttämistä I/O:ssa. Huomattavasti lisääntynyt suoritusnopeus vaati ohjelmistoa, joka teki monia tehtäviä, jonka operaattorit olivat tehneet reletietokoneissa tai IBM 650:ssä. Näitä ohjelmia nimitettiin monitoreiksi tai käyttöjärjestelmiksi. Bell Labs oli uranuurtaja niitten varhaisessa kehittämisessä.
Käyttöjärjestelmät olivat isoja ja mutkikkaita ohjelmistoja. Niitten ensimmäinen tehtävä oli toimia automaattisena operaattorina, esim. työn vaihtaminen toiseen nopeammin kuin kukaan ihmisoperaattori pystyisi. Edelleenkin tarvittiin operaattoria sellaisissa tehtävissä, joihin kone ei kyennyt, esim. magneettinauhojen paikoilleen asetus ja poisto tai tehtävät, joissa tarvittiin harkintaa rutiinimaisen toiminnan sijaan. Käyttöjärjestelmät tarjosivat käyttäjille mahdollisuuden päästä käsiksi standardisiin kielenkääntäjiin, I/O –rutiineihin, kirjastorutiineihin (esim. matemaattiset funktiot) ja joustavaan virheenjäljitysvälineistöön, joka mahdollisti ohjelman debuggauksen ja testauksen.
Ensimmäisen Bell Labsin käyttöjärjestelmän, BESYS-2, kirjoittivat IBM 704:lle G.H. Mealy ja G.J. Hansen 1957 – 58. Se kehitettiin, koska saatavilla olleita alkeellisia käyttöjärjestelmiä ei ollut Bell Labsissä. Samaa perusjärjestelmää, joka sovitettiin tarvittaessa, käytettiin myöhemmässä IBM 700/7 000 –luokan laitteistossa Bell Labsissä. Tätä käyttöjärjestelmää käytettiin myös muualla vastaavissa IBM:n koneissa. Sillä oli huomattava vaikutus useisiin myöhempiin käyttöjärjestelmiin.
BESYS –käyttöjärjestelmän kehitys. BESYS-3 ohjasi IBM 7090 –koneen toimintaa, ja se valmistui 1960. BESYS-4 sisälsi ensimmäisen I/O –järjestelmän, jossa oli täysin automaattinen blokkaus ja puskurointi, sekä ainoalaatuinen tietokoneohjattu nauhanvaihtolaitteisto. Valmistui 1962. BESYS-5 muokattiin sellaiseksi, että se voi olla levytiedostossa (1963). BESYS-7 sisälsi varhaisen version käyttäjätiedostojärjestelmästä (1964).
Emulaattori
Ohjelmia piti sovittaa, kun tietokonemalli vaihtui. Siitä koitui paljon työtä, jonka välttämiseksi R.E. Drummond, G.J. Hansen ja F.T. Grampp kehittivät 7094 –emulaattorin, nimeltään BE90. Sitä käytettiin ajamaan IBM 360/65:ssa ohjelmia, jotka oli suunniteltu sopiviksi IBM 7094 –koneeseen ja BESYS-7 –käyttöjärjestelmään. Sitä käytettiin Holmdelin ja Indian Hillin laboratorioissa 1968 – 72.
Moniajojärjestelmä käyttöjärjestelmään
MITissä (Massachusetts Institute of Technology) kehitettiin varhainen aikajakojärjestelmä CTSS (Compatible Time Sharing Service) IBM 7094:lle 1964.
1964 Bell Labs, MIT ja General Electric yhdistivät voimansa uuden käyttöjärjestelmän kehittämiseksi. Sen nimi oli MULTICS (MULTiplexed Information and Computing Service). Siinä oli tärkeää saada tiedostojärjestelmä laajalle käyttäjäkunnalle, jotka käyttivät erillisiä etäkonsoleita.
Samoihin aikoihin Bell Labs oli mukana muitten IBM:n avainasiakkaitten kanssa, kun IBM kehitti TSS:n (Time Sharing System), joka valmistui 1970.
MULTICS ja TSS –projektien aikaan tuli jatkuvasti selvemmäksi, että mikään yksittäinen keskustietokonekokonaisuus (complex) ei voinut täyttää laajan tutkimus- ja kehitysorganisaation tarpeita. Niinpä Bell Labsin tutkijat olivat uranuurtajia suhteellisen halpojen minitietokoneitten käytössä tutkimuksen apuna.
Minitietokoneitten käytön kasvaessa tietojenkäsittelytieteilijät kiinnostuivat kovasti pienestä, yksinkertaisesta ja elegantista aikajakojärjestelmästä. Muista erottuva esimerkki oli UNIX –käyttöjärjestelmä, jonka K. Thompson teki 1969 Bell Labsissä Digital Equipment Corporationin PDP-7:lle. Uusina piirteinä siinä oli laiteriippumaton I/O –järjestelmä (esim. putket) ja elegantti tiedostojärjestelmä, joka käsitteli kaikkia tiedostoja samoin riippumatta niitten muodosta tai sisällöstä.
4.3 Omavaraisuuden tilalle työnjako tietojenkäsittely-yhtiöitten välillä [HB82]
Bell Labs on hyvä esimerkki työnjaon kehittymisestä tietokoneisiin liittyvässä toiminnassa. Bell –konserni oli taloudellisesti vahva ja sen osa, Bell Labs, oli teknisesti taitava. Tämän takia Bell Labs olisi voinut olla omavarainen tietokoneisiin liittyvässä toiminnassa. Mutta voimavarojen keskittäminen tai puhelintoiminnan monopolin tuottojen muualle käytön paheksuminen esti sitä hankkimasta taloudellisesti merkittävää markkinaosuutta. Se jäi jälkeen tuotekehityksessä, ja siksi sen oli ajan mittaan kannattavampaa hankkia tuotteet muualta kuin tehdä ne itse.
Bell Labs oli vahvasti mukana reletietokoneitten valmistuksessa. Mutta sodan jälkeen sen suunnattava runsaasti voimavaroja puhelinlaitteiston kehittämiseen, joka oli laiminlyöty, koska henkilökunta oli ollut sidottu USA:n sotaponnistelujen tukemiseen. Uusi tietokoneitten valmistustekniikka, tyhjiöputket, olisi sitonut runsaasti erikoisasiantuntijoita, rahaa jne. Yhtiön johto arvioi, että voimavarat eivät riitä molempiin. Niinpä yhtiö osti seuraavan sukupolven tietokoneet ulkopuolelta.
Bell Labs oli mukana tehtäväsuuntautuneitten kielten kehittämisessä tavallaan jo reletietokoneitten aikana (Model VI). L –kielillä yhtiö saavutti melko vahvan aseman. Mutta näitten kielten kehittäminen loppui siihen yhtiössä. Lähde [HB82] ei kerro syytä nopeaan luopumiseen.
Bell Labs valmisti BESYS –käyttöjärjestelmiä 1950 –luvun jälkipuoliskolla ja 1960 –luvun alkupuolella. Niillä oli kohtalainen asema. Yhtiö oli mukana MULTICS –kehitysprojektissa 1960 luvun jälkipuolella. Yhtiön sisällä kehitettiin UNIX 1960- ja 1970 –lukujen vaihteessa. Emokonserni hajoitettiin osiin 1970 –luvulla eikä mikään seuraajayhtiö ollut enää vahvoilla käyttöjärjestelmien kehittämisessä.
5. NÄKÖKULMIA OHJELMISTOTUOTANTOON 1960 –LUVUN JÄLKIPUOLELLA
Lähteenä [Nau69] on raportti NATO:n tiedekomitean sponsoroimasta konferenssista Saksassa 1968. Konferenssiin osallistui yli 50 henkeä 11 maasta. He kaikki olivat työnsä puolesta tekemisissä ohjelmiston kanssa: käyttäjinä, valmistajina tai yliopiston opettajina.
5.1 Ohjelmistotuotannon alku
1960 –luvun mittaan ohjelmistoja valmistavien yhtiöitten ohjelmistohenkilökunta ja ohjelmistoprojektien koko oli kasvanut niin paljon, että varsinainen ohjelmistotuotanto oli alkanut monin paikoin. Aika yleisesti uskottiin, että alan silloiset ongelmat johtuvat alan nuoruudesta: muilla toimialoilla tunnettuja ja käytettyjä menetelmiä ei ollut siirretty ja sovitettu alan tarpeisiin eikä alan omiakaan menetelmiä ollut vielä löydetty.
5.2 Tuotannon ohjaus
Liite: Tietokonesukupolvet ([Ros91] s. 6 – 7)
Tietokoneitten 0. sukupolvi oli elektromekaaniset koneet. Ne olivat käytännössä reletietokoneita. Muitakin menetelmiä yritettiin, esim. ([HB82] s. 12 – 13) Zuse Saksassa 1938. Mutta hänen Z1 –koneensa toimi huonosti.
Tietokoneitten ensimmäinen sukupolvi perustui tyhjiöputkiin. Se voidaan jakaa varhaiseen ja myöhäiseen vaiheeseen muistijärjestelmän teknologian perusteella. Isojen, nopeitten ja luotettavien magneettirengasmuistien (magnetic core memory) käyttöönotolla 1950 –luvun puolivälissä oli oleellinen vaikutus tietokoneitten alueella.
Tietokoneitten toinen sukupolvi perustui transistoreihin.
Tietokoneitten kolmannella sukupolvella ei ollut yhtä ainoaa hallitsevaa teknologiaa. Yleensä käytettiin integroituja piirejä. Mutta monissa merkittävissä ison kokoluokan tietokoneissa käytettiin muita ratkaisuja. Esim. IBM 360 käytti hybridipiirejä ja Control Datan 6000 ja 7000 sarjoissa käytettiin erillisiä komponentteja. (Jälkimmäiset hallitsivat ison kokoluokan tieteellisiä tietokoneita 1960 –luvun puolivälistä 1970 –luvun puoliväliin.) Rosen ehdottaa, että ison kokoluokan tietokoneissa 3. sukupolven tunnusmerkkinä olisi, että ne kykenivät tukemaan levypohjaista käyttöjärjestelmää, joka piti yllä moniajoympäristöä.
LÄHTEET
[HB82] Holbrook, Bernard D., Brown, W. Stanley: "A History of Computing Research at Bell Laboratories (1937 – 1975)", Computing Science Technical Report No. 99., Bell Telephone Laboratories 1982
[Häm00] Hämäläinen, Kimmo: "ENIAC ja EDVAC, ensimmäiset elektroniset ja digitaaliset tietokoneet", seminaariesitelmä Tietojenkäsittelytieteen historia –seminaarissa, Helsingin yliopiston tietojenkäsittelytieteen laitos 2000
[Nash90] Nash, Stephen G.: "A History of Scientific Computing", pp. 251 – 268 and pp. 269 – 279, History Series, ACM Press 1990
[Nau69] Naur, Peter, Randell, Brian: "Software Engineering", Report on a conference sponsored by the NATO SCIENCE COMMITTEE, Garmisch, Germany, 1968
[Ros91] Rosen, Saul: "A Purdue University Course in the History of Computing", Department of Computer Science at Purdue University 1991