Title: Olio-ohjelmointikielten historia
1Olio-ohjelmointikielten historia
- Tietojenkäsittelytieteen historia
- Matias Käkelä
- 7.2.2006
2Sisältö
- Ennen olio-ohjelmointikieliä
- Perinteiset ohjelmointikielet
- Olio-ohjelmointikielten syntymä
- Sketchpad
- Simula
- Smalltalk
- Olio-ohjelmoinnin suosion kasvu
- C
- Nykyaikaiset oliokielet
- Java, C
- Muut olioperustaiset ohjelmointikielet
- Yhteenveto
3Suosituimmat ohjelmointikielet
TIOBE Programming Community Index for January
2006 (http//www.tiobe.com/index.htm?tiobe_index)
4Mihin oliokieliä tarvitaan? (1)
- Suosituimmat nykyaikaiset ohjelmointikielet ovat
olioperustaisia - Java, C, C jne.
- Olio-ohjelmointikieliä suositaan sillä ne
tarjoavat kehittyneitä välineitä
ohjelmointiongelmien hallintaan - Kapselointi, koodin uudelleenkäytettävyys,
rakenteellinen selkeys
5Mihin oliokieliä tarvitaan? (2)
- Oliorakenne mahdollistaa joustavamman
reaalimaailman ilmiöiden mallintamisen - Olio-ohjelmointikieliä pidetään helpommin
omaksuttavina
6Ennen oliokieliä
- Tietokoneiden historian alkuvaiheessa
ohjelmoitiin suoraan konekielellä - Pian huomattiin tarve korkeamman tason kielille
- Syntyi mm. Algol ja Fortran
- Kielet pyrkivät helpottamaan ohjelmointiongelmia
jakamalla niitä pienempiin osaongelmiin
aliohjelmiin
7Oliokielten syntymä
- Ensimmäiset viitteet oliokielistä tulivat
Sketchpad ohjelmasta - Ivan Sutherland kehitti 1963 vallan-kumouksellisen
tietokoneohjelman - Sketchpad oli piirto-ohjelma, ja sitä on sanottu
CAD-ohjelmien isäksi - Sketchpad oli samalla myös ensimmäinen graafista
käyttöliittymää hyödyntänyt ohjelma
8Oliokielten syntymä (2)
- Sketchpadissa grafiikkaelementtejä käsiteltiin
olioina ja niiden instansseina - Pääoliota muokattaessa muuttuivat myös kaikki
siitä johdetut instanssit - Käyttäjä pystyi myös muokkaamaan helposti
muokkaamaan piirrosten attribuutteja
9Ivan Sutherland
Ivan Sutherland käyttämässä Sketchpadia TX-2
-tietokoneellaan MITssä
10Simula
- Simula oli ensimmäinen olio-ohjelmointikieli
- Ole-Johan Dahl ja Kristen Nygaard kehittivät
Simulan 1960-luvulla Norjan tietteellisessä
laskentakeskuksessa - Simula luotiin alunperin simulaatioiden tekemistä
varten - Reaalimaaiman ongelmien mallintamisen tarve johti
olioajattelun kehittymiseen
11Simula (2)
- Simula on syntaktisesti lähellä Algol60-kieltä,
mutta lisäsi siihen moderneille oliokielille
tyypilliset rakenteet, kuten luokat ja oliot - Simula I ilmestyi 1965
- Simula I oli olio-ominaisuuksiltaan vielä
puutteellinen
12Simula (3)
- Simula 67 ilmestyi 1967
- Laajennettiin Simulaatioihin erikoistuneesta
kielestä yleiseksi ohjelmointikieleksi - Simula saavutti suosiota myös akateemisten
piirien ulkopuolella ja on yhä käytössä - BETA kieli on Simulan seuraaja
13Simula Hello World
- Begin
- Class Greetings
- Begin
- OutText("Hello World!")
- OutImage
- End
- REF(Greetings) hello
- hello - New Greetings
- End of program
14Smalltalk
- Alan Kay suunnitteli Smalltalkin 1960- ja
1970-lukujen vaiheessa Xerox PARC -keskuksessa - Ensimmäinen Smalltalk-alusta oli ohjelmoitu
Basicilla ja osasi laskea yhteen 3 4. - Smalltalkista ilmestyi ensimmäinen toimiva
toteutus vuonna 1972 - Smalltalk-72 oli silti vielä hyvin kehittymätön
olio-ominaisuuksiltaan
15Smalltalk (2)
- Smalltalk-76 toi mukanaan huomattavia muutoksia
kieleen - Periytyminen, syntaktiset muutokset, uusi
kehitysympäristö, virtuaalikone - Smalltalk-80 oli ensimmäinen Xeroxin ulkopuolella
ilmestynyt versio - Nykyään kaksi suosittua toteutusta, jotka
kummatkin perustuvat Smalltalk-80-kieleen - Avoin Squeak ja Cincomin VisualWorks
- Ruby skriptikieli saanut vaikutteita
16Smalltalk Esimerkki
Collectiongtgtselect aBlock newCollection
newCollection self species new. self do
each (aBlock value each)
ifTrue newCollection add each. newCollection
Koodi läpikäy merkkijonomuuttujan (aBlock) kaikki
kirjaimet ja lisää vokaalit palautettavaan (newCol
lection) merkkijonoon
17(No Transcript)
18C
- Bjarne Stroustrup kehitti vuonna 1983 Bellin
laboratoriossa ATTllä - Stoustrup piti Simulan oliomallista, mutta se oli
liian hidas - BCPL oli nopea, mutta liian laiteläheinen
- Alussa nimi oli C with Classes
- C -koodi käännettiin ensin C-kieleen, joka
käännettiin konekielle (Cfront) - Perustuu C-kieleen ja on pieniä poikkeuksia
lukuun ottamatta täysin yhteensopiva - Yhteensopivuus lisäsi käyttäjäkuntaa, mutta
rikkoi puhtaan oliomallin
19C (2)
- C sisältää mm. luokat, periytymisen, mallit
(templates) ja poikkeukset - Ei sisällä roskienkerääjää
- Saatavilla lisäkirjastona
- Yksi tärkeimmistä kaupallisessa
ohjelmistokehityksessä käytettävistä kielistä yhä
tänä päivänä - Standardoitiin vasta vuonna 1998 ja standardia
päivitettiin 2003 - Kehitys jatkuu edelleen tuoreimmat muutokset
kieleen ovat vuodelta 2005 (Library Technical
Report 1)
20C Hello World
- / g hello.cc -o hello ./hello /
- include ltiostreamgt // stdcout
- int main()
-
- stdcout ltlt "Hei maailma!\n"
- return 0
-
21Java
- Java kehitettiin Sunilla 1990-luvun alussa
- Alkuperäiset kehittäjät olivat James Gosling,
Mike Sheridan ja Patrick Naughton - Tarkoituksena oli luoda työkalu älykkäiden
päätelaitteiden ohjelmointiin - Alussa kehitystiimi alkoi käyttää C -kieltä
- C ei ollut sopiva joten Gosling alkoi kehittää
C -- -nimistä muunnosta - Java lainasi myös Objective-C kielen
ominaisuuksia - Pian muunnos hylättiin ja päätettiin luoda uusi
kieli Oak
22Java (2)
- Oakin ensimmäinen versio valmistui 1992, jolloin
sitä esiteltiin Star7 laitteella - Oakia tarjottiin kaapeli-tv- ja viihdeyhtiöille
päätelaitteiden (set-top box) ohjelmointiin - Asiakkaina mm. Time Warner ja 3DO
- Alustariippumattomuus oli etu
- Oak ei menestyt viihdesektorilla, joten
kehitystiimi suuntasi 1994 sen internet-ohjelmoint
iin - WebRunner (sittemmin HotJava) oli ensimmäinen
Javaa suorittava selain - Java 1.0a ja HotJava olivat ladattavissa jo 1994
- Java ilmestyi ensimmäistä kertaa 23.5.1995
- Tuki myös Netscapen selaimiin
23Java (3)
- Nykyään Java on joidenkin lähteiden mukaan eniten
käytetty ohjelmointikieli - Sovelluksia mm. Eclipse, Azureus, NetBeans
- Nykyään paljon käytetty matkapuhelimissa
- Lähestyy kehitystiimin alkuperäistä tavoitetta
24Java Servlet Hello World
- // Hello.java
- import java.io.
- import javax.servlet.
- public class Hello extends GenericServlet
- public void service(ServletRequest request,
ServletResponse response) - throws ServletException, IOException
- response.setContentType("text/html")
- PrintWriter pw response.getWriter()
- pw.println("Hello, world!")
- pw.close()
25java.sun.com vuonna 1995
26Muut oliokielet
- Oliokieliä olemassa kymmeniä
- Oberon, Eiffel, Ruby, Python
- Monet kielet saaneet myöhemmin olio-ominaisuuksia
- Visual Basic, PHP 3, Ada 95, Delphi, Objective-C
27Muut oliokielet (2)
- Microsoftin .NET ympäristön kielten suosio on
kasvanut viimevuosina - C, J, Visual Basic .NET, C, JScript .NET
- Myös ulkopuolisten valmistamia, kuten FORTRAN,
COBOL, A eli ADA jne. - Sama idea kuin Javassa alustariippumatonta
tavukoodia, joka suoritetaan virtuaalikoneella - Tavukoodi on standardoitu vuonna 2001 (ECMA) ja
2003 (ISO) - MSn oma .NET ympäristö olemassa Windows
käyttöjärjestelmän lisäksi OSXlle sekä
FreeBSDlle - DotGNU ja Mono avoimia suoritusympäristöjä
28Yhteenveto
- Olio-ohjelmointi on suosituin nykyisistä
ohjelmointiparadigmoista - Yhdeksän vuoden 2006 kymmenestä suosituimmasta
ohjelmointikielestä voidaan laskea oliokieliksi - Edut Uudelleenkäytettävyys, helpompi hallinta,
parempi ymmärrettävyys - Joissakin tapauksissa myös siirrettävyys,
virheettömyys
29(No Transcript)