C++ vs. Haskell
Oinonen, Anssi (2020)
Oinonen, Anssi
2020
Tieto- ja sähkötekniikan kandidaattiohjelma - Bachelor's Programme in Computing and Electrical Engineering
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2020-12-04
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202012068532
https://urn.fi/URN:NBN:fi:tuni-202012068532
Tiivistelmä
C++ ja Haskell ovat ohjelmointikieliä, joiden kehitys alkoi 1980-luvulla ja jotka edustavat kahta erilaista ohjelmointiparadigmaa. C++ perustuu imperatiiviselle ja Haskell funktionaaliselle ohjelmointiparadigmalle ja kumpikin paradigma perustuu 1930-luvulla kirjoitetuille tieteellisille tutkimuksille.
Työssä käydään läpi kummankin kielen historiaa sekä kielten kehitykseen johtaneita syitä ja niiden seurauksia kielten rakenteille tutkimalla kielten edeltäjiä, niiden synnyistä kirjoitettuja artikkeleita ja niiden määrittelyjä. C++:sta haluttiin tehokas ohjelmointikieli, jolla kirjoitetut ohjelmat olisivat helposti siirrettävissä tietokoneiden välillä, ja joka tarjoaisi ohjelmoijille korkean tason abstrahointitapoja, joiden avulla ohjelmia olisi helpompi suunnitella. Haskellin tapauksessa haluttiin kehittää puhdas ja laiska funktionaalinen kieli sovellusten kehittämis-, opetus- ja tutkimus-tarkoitukseen sekä yhdistää hajautunutta funktionaalisten kielten kehitystä.
C++ kehitettiin C-kielen pohjalta lisäämällä C:hen tuki Simula-tyyppisille luokille. C:n ja Simulan edeltäjät voidaan jäljittää ALGOL 60 -kieleen, mikä on osaltaan vaikuttanut C++:n ominaisuuksiin. ALGOL 60 kieli kehitettiin komiteayhteistyössä samoin kuin Haskell. Historioidensa takia C++ on kehittynyt tarjoamaan paljon hyödyllisiksi katsottuja ominaisuuksia olio-ohjelmoinnin ja imperatiivisen ohjelmointiparadigman ulkopuoleltakin, kun taas Haskellin uusien ominaisuuksien on pitänyt pystyä toimimaan laiskasti ja puhtaasti, mikä on rajoittanut uusien ominaisuuksien lisäyksiä, mutta on myös tarjonnut tilaisuuksia kehittää ohjelmointikielten toiminnallisuuksia uusilla tavoilla, kuten tyyppiluokilla ja monadeilla.
Kielten eri lähtökohdat ja tavoitteet ovat mahdollistaneet kahden erilaisen kielen kehittymisen samaan aikaan vastaamaan kasvavien ohjelmien tuomiin ongelmiin. Ne ovat tuoneet ohjelmia lähemmäs sovellusalueita ja kauemmas monimutkaisemmiksi muuttuvista tietokoneista.
Työssä käydään läpi kummankin kielen historiaa sekä kielten kehitykseen johtaneita syitä ja niiden seurauksia kielten rakenteille tutkimalla kielten edeltäjiä, niiden synnyistä kirjoitettuja artikkeleita ja niiden määrittelyjä. C++:sta haluttiin tehokas ohjelmointikieli, jolla kirjoitetut ohjelmat olisivat helposti siirrettävissä tietokoneiden välillä, ja joka tarjoaisi ohjelmoijille korkean tason abstrahointitapoja, joiden avulla ohjelmia olisi helpompi suunnitella. Haskellin tapauksessa haluttiin kehittää puhdas ja laiska funktionaalinen kieli sovellusten kehittämis-, opetus- ja tutkimus-tarkoitukseen sekä yhdistää hajautunutta funktionaalisten kielten kehitystä.
C++ kehitettiin C-kielen pohjalta lisäämällä C:hen tuki Simula-tyyppisille luokille. C:n ja Simulan edeltäjät voidaan jäljittää ALGOL 60 -kieleen, mikä on osaltaan vaikuttanut C++:n ominaisuuksiin. ALGOL 60 kieli kehitettiin komiteayhteistyössä samoin kuin Haskell. Historioidensa takia C++ on kehittynyt tarjoamaan paljon hyödyllisiksi katsottuja ominaisuuksia olio-ohjelmoinnin ja imperatiivisen ohjelmointiparadigman ulkopuoleltakin, kun taas Haskellin uusien ominaisuuksien on pitänyt pystyä toimimaan laiskasti ja puhtaasti, mikä on rajoittanut uusien ominaisuuksien lisäyksiä, mutta on myös tarjonnut tilaisuuksia kehittää ohjelmointikielten toiminnallisuuksia uusilla tavoilla, kuten tyyppiluokilla ja monadeilla.
Kielten eri lähtökohdat ja tavoitteet ovat mahdollistaneet kahden erilaisen kielen kehittymisen samaan aikaan vastaamaan kasvavien ohjelmien tuomiin ongelmiin. Ne ovat tuoneet ohjelmia lähemmäs sovellusalueita ja kauemmas monimutkaisemmiksi muuttuvista tietokoneista.
Kokoelmat
- Kandidaatintutkielmat [10747]
