Olio-ohjelmointi
Historia > Ensimmäiset kielet

Terminologia, joka liittyy "olioihin" ja "orientaatioon" modernissa mielessä oliopohjaisessa ohjelmoinnissa, ilmestyi ensimmäisen kerran MIT:ssä 1950- ja 1960-lukujen vaihteessa. Jo vuodesta 1960 lähtien tekoälyä tutkivan ja kehittävän ryhmän yhteydessä "olio" saattoi viitata tunnistettuihin kohteisiin (LISP-atomeihin), joilla oli ominaisuuksia (attribuutteja). Olioperustainen ohjelmointi syntyi Norjassa 1960-luvun jälkipuoliskolla, jolloin norjalaisessa Norsk Regnesentral -laskentakeskuksessa kehitettiin ensimmäinen oliokieli, Simula. Ole-Johan Dahl ja Kristen Nygaard kehittivät kieltä simulointitarkoituksiin. Jo vuonna 1961 kehitetyssä Simula I:ssa käytettiin luokkia ja niistä luotuja olioita, mutta vuonna 1967 Simula I:n seuraaja Simula67 oli ensimmäinen varsinainen olio-ohjelmointikieli. Simulan rungon muodosti Algol60, joka oli laajennettu olio-ohjelmoinnin luokkakäsitteellä. Simulassa oli mukana jo kaikki olio-ohjelmoinnin peruskäsitteet.
Simula ei saanut paljoakaan käyttäjiä yliopistojen ulkopuolelta. Olio-ohjelmointi sai uutta kantavuutta Smalltalkin ja siihen liittyvän graafisen ohjelmointiympäristön myötä. Smalltalk kehitettiin Xeroxin kehityslaboratoriossa, Palo Alto Research Centerissä (PARC). Sitä käytettiin Alan Kayn ideoiman graafisella käyttöliittymällä varustetun henkilökohtaisen tietokoneen Dynabookin hallintaan. Xerox alkoi jakaa Smalltalkia 1980, mutta sekään ei saavuttanut merkittävää asemaa ohjelmistotuotannossa.
Niin kutsutun ohjelmistokriisin takia 1970-luvulla syntyi useita kieliä, joissa ohjelmistojen modularisointi oli keskeisenä ajatuksena. Kielet eivät olleet tiukassa mielessä olioperustaisia, mutta niihin kuului abstraktin tietotyypin käsite, joka on oleellinen myös olio-ohjelmoinnissa. Nämä kielet loivat maaperää olioperustaisen ohjelmoinnin läpimurrolle tuomalla tietoabstraktion ohjelmistokehitykseen.
Vuonna 1981 Goldberg toimitti Byte Magazinen elokuun numeroa esitellen Smalltalkin ja olio-ohjelmoinnin laajemmalle yleisölle. Vuonna 1986, the Association for Computing Machinery järjesti ensimmäisen konferenssin “Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), joka käsitteli olio-ohjelmointia, järjestelmiä ja kieliä. Yllättäen konferenssiin osallistui tuhat ihmistä. 1980-luvun puolivälissä Brad Cox kehitti Objective-C. Hän oli käyttänyt Smalltalkia ITT Inc.:ssä, ja Bjarne Stroustrup, joka oli käyttänyt Simulaa väitöskirjassaan, kehittivät olio-ohjelmointikieli C++:n. Vuonna 1985, Bertnard Meyer myös tuotti ensimmäisen Eiffel kielen mallin. Keskittyen ohjelmiston laatuun, Eiffel oli puhdas olio-ohjelmointikieli ja merkintä tukien koko ohjelmiston elinkaarta. Meyer kuvaili Eiffelin ohjelmistokehitysmenetelmää perustuen pieneen määrään pääideoita ohjelmistosuunnitelusta ja tietokonetieteestä kirjassa Object-Oriented Software Construction. Eiffelin keskittyminen laatuun on olennainen osa Meyerin luotettavuus mekanismia, Design by Contract, joka on olennainen osa molempia, sekä menetelmiä, että kieltä.
1990-luvun alussa ja puolivälissä olio-ohjelmoinnista oli tullut vallitseva tapa ohjelmoida, kun kielet alkoivat tukea tekniikaa. Eri kielet, jotka tukivat olio-ohjelmointia olivat mm. C++ and Delphi. Sen dominointia edisti edelleen graafisten käyttöliittymien suosion kasvu, joka nojaa vahvasti olio-ohjelmoinnin tekniikoihin. Esimerkki läheisesti liittyvästä dynaamisesta käyttöliittymäkirjastosta ja OOP-kielestä löytyy Mac OS X:n Cocoa viitekehyksestä, joka on kirjoitettu Objective-C:llä. Cocoa on dynaaminen oliosuuntautunut viestintälaajennus C:hen, pohjautuen Smaltalkiin. OOP-työkalusarjat lisäsivät myös tapahtumapohjaisen ohjelmoinnin suosiota (vaikkakin tämä konsepti ei rajoitu ainoastaan OOP:iin).
Viime aikoina on myös ilmaantunut useita kieliä, jotka ovat pääosin oliopohjaisia, mutta yhteensopivia proseduraalisten ohjelmointikielien kanssa. Python ja Ruby ovat esimerkkejä tällaisista. Luultavasti kaupallisesti tärkeimmät viimeaikaiset ohjelmointikielet ovat Java, jonka on kehittänyt Sun Microsystems, sekä C# ja Visual Basic.NET (VB.NET), jotka molemmat on kehitetty Microsoftin .NET-alustalle. Kumpikin näistä kahdesta viitekehyksestä osoittaa omalla tavallaan oliopohjaisen ohjelmoinnin käytön edut luomalla abstraktion implementoinnista. VB.NET ja C# tukevat kieltenvälistä periytymistä, jolloin yhdellä kielellä määritellyt luokat voivat siirtyä toisella kielellä määritettyihin aliluokkaluokkiin.