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 ohjel-mointiparadigmalle ja kumpikin paradigma perustuu 1930-luvulla kirjoitetuille tieteellisille tutki-muksille.
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 ar-tikkeleita 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 ha-luttiin 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 Simu-lan edeltäjät voidaan jäljittää ALGOL 60 -kieleen, mikä on osaltaan vaikuttanut C++:n ominai-suuksiin. ALGOL 60 kieli kehitettiin komiteayhteistyössä samoin kuin Haskell. Historioidensa ta-kia C++ on kehittynyt tarjoamaan paljon hyödyllisiksi katsottuja ominaisuuksia olio-ohjelmoinnin ja imperatiivisen ohjelmointiparadigman ulkopuoleltakin, kun taas Haskellin uusien ominaisuuk-sien on pitänyt pystyä toimimaan laiskasti ja puhtaasti, mikä on rajoittanut uusien ominaisuuk-sien 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 ar-tikkeleita 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 ha-luttiin 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 Simu-lan edeltäjät voidaan jäljittää ALGOL 60 -kieleen, mikä on osaltaan vaikuttanut C++:n ominai-suuksiin. ALGOL 60 kieli kehitettiin komiteayhteistyössä samoin kuin Haskell. Historioidensa ta-kia C++ on kehittynyt tarjoamaan paljon hyödyllisiksi katsottuja ominaisuuksia olio-ohjelmoinnin ja imperatiivisen ohjelmointiparadigman ulkopuoleltakin, kun taas Haskellin uusien ominaisuuk-sien on pitänyt pystyä toimimaan laiskasti ja puhtaasti, mikä on rajoittanut uusien ominaisuuk-sien 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 [8253]