Ero sivun ”Haskell” versioiden välillä

Wikipediasta
Siirry navigaatioon Siirry hakuun
[arvioimaton versio][arvioimaton versio]
Poistettu sisältö Lisätty sisältö
Rei-bot (keskustelu | muokkaukset)
p Botti lisäsi: gl:Haskell
+kh
Rivi 10: Rivi 10:
|uutisryhmä=comp.lang.haskell
|uutisryhmä=comp.lang.haskell
}}
}}
'''Haskell''' on standardoitu, puhtaasti [[funktionaalinen ohjelmointi|funktionaalinen]] [[ohjelmointikieli]]. Se on nimetty matemaatikon [[Haskell Curry]]n mukaan. Sitä on kehitetty vuodesta [[1987]]. Päästandardi on Haskell 98, joka määrittelee kielen ytimen, jossa on kaikki perustoiminnallisuus, joka on siirrettävä ja joka on sopiva opetuskäyttöön. Lähes kaikki kielen toteutukset tuovat näiden päälle omia laajennuksiaan. Pääasiallisia de facto-standardeja ovat siis '''GHC''' (Glasgow Haskell Compiler) ja '''Hugs''' (interaktiivinen tulkki).
'''Haskell''' on standardoitu, puhtaasti [[funktionaalinen ohjelmointi|funktionaalinen]] [[ohjelmointikieli]]. Se on nimetty matemaatikkon [[Haskell Curry]]n mukaan. Sitä on kehitetty vuodesta [[1987]]. Päästandardi on Haskell 98, joka määrittelee kielen ytimen, jossa on kaikki perustoiminnallisuus, joka on siirrettävä ja joka on sopiva opetuskäyttöön. Lähes kaikki kielen toteutukset tuovat näiden päälle omia laajennuksiaan. Tunnetuimpia toteutuksia ovat '''GHC''' (Glasgow Haskell Compiler) ja '''Hugs''' (interaktiivinen tulkki).


Joitain kielen tärkeitä ominaispiirteitä ovat kaavantunnistus, currying, listankäsittely, vartiolausekkeet ja määriteltävät operaattorit. Kieli myös tukee [[rekursio|rekursiivisia]] funktioita, algebraisia tietotyyppejä ja [[Laiska suoritus|laiskaa]] laskemista. Erityisiä piirteitä ovat [[monadi]]t ja tyyppiluokat. Näiden ansiosta Haskellilla on helppo kirjoittaa ohjelmia, jotka olisivat äärimmäisen vaikeita kirjoittaa [[Proseduraalinen ohjelmointi|proseduraalisilla ohjelmointikielillä]].
Joitain kielen tärkeitä ominaispiirteitä ovat mallinsovitus (engl. pattern matching), currying, listankäsittely, vartiolausekkeet ja määriteltävät operaattorit. Kieli myös tukee [[rekursio|rekursiivisia]] funktioita, algebraisia tietotyyppejä ja [[Laiska suoritus|laiskaa]] laskemista. Erityisiä piirteitä ovat [[monadi]]t ja tyyppiluokat. Näiden ansiosta Haskellilla on helppo kirjoittaa tietyntyyppisiä ohjelmia, joiden kirjoittaminen olisi huomattavasti vaikeampaa [[Proseduraalinen ohjelmointi|proseduraalisilla ohjelmointikielillä]].


Tällä hetkellä Haskell on saanut suosiota lähinnä akateemisissa piireissä, ja on ainakin [[Yhdysvallat|Yhdysvalloissa]] yksi suosituimpia tutkimuskäytössä olevia kieliä ja kansainvälisesti yksi tärkeimmistä akateemisista ohjelmoinnin opetukseen käytettävistä kielistä. Vaikka Haskell onkin pääasiallisesti akateemiseen käyttöön tarkoitettu kieli käytetään sitä myös jonkin verran kaupallisilla aloilla (mm. [[Credit Suisse]] ja [[Linspire]] <ref>{{Verkkoviite | Nimeke=CUFP 2006 Abstracts | Osoite=http://cufp.galois.com/2006Abstracts.html | Luettu = 25.6.2007 | Kieli = {{en}}}}</ref>). [[Avoin lähdekoodi|Avoimen lähdekoodin]] projekteissa sitä käytetään hyvin vähän, mutta korkean profiilinkin esimerkkejä on: Audrey Tangin Pugs on [[Perl 6]]:n kääntäjä, ja [[Darcs]] on tärkeä versionhallintajärjestelmä.
Tällä hetkellä Haskell on saanut suosiota lähinnä akateemisissa piireissä, ja se on ainakin [[Yhdysvallat|Yhdysvalloissa]] yksi suosituimpia tutkimuskäytössä olevia kieliä sekä kansainvälisesti yksi tärkeimmistä akateemisista ohjelmoinnin opetukseen käytettävistä kielistä. Tästä huolimatta kieltä käytetään jonkin verran myös kaupallisilla aloilla (mm. [[Credit Suisse]] ja [[Linspire]] <ref>{{Verkkoviite | Nimeke=CUFP 2006 Abstracts | Osoite=http://cufp.galois.com/2006Abstracts.html | Luettu = 25.6.2007 | Kieli = {{en}}}}</ref>). [[Avoin lähdekoodi|Avoimen lähdekoodin]] projekteissa sitä käytetään hyvin vähän, joskin muutama merkittävä poikkeus löytyy, kuten Audrey Tangin ''Pugs'' ([[Perl 6]]:n kääntäjä) sekä [[Darcs]] (hajautettu versionhallintajärjestelmä).


== Esimerkki ==
== Esimerkki ==

Versio 14. kesäkuuta 2008 kello 17.26

Haskell
Paradigma funktionaalinen
Tyypitys vahva, staattinen
Muistinhallinta Automaattinen
Merkittävimmät toteutukset GHC, Hugs
Vaikutteet Miranda, ML
Murteet Helium
Käyttöjärjestelmä alustariippumaton
Verkkosivu haskell.org
Uutisryhmä comp.lang.haskell

Haskell on standardoitu, puhtaasti funktionaalinen ohjelmointikieli. Se on nimetty matemaatikkon Haskell Curryn mukaan. Sitä on kehitetty vuodesta 1987. Päästandardi on Haskell 98, joka määrittelee kielen ytimen, jossa on kaikki perustoiminnallisuus, joka on siirrettävä ja joka on sopiva opetuskäyttöön. Lähes kaikki kielen toteutukset tuovat näiden päälle omia laajennuksiaan. Tunnetuimpia toteutuksia ovat GHC (Glasgow Haskell Compiler) ja Hugs (interaktiivinen tulkki).

Joitain kielen tärkeitä ominaispiirteitä ovat mallinsovitus (engl. pattern matching), currying, listankäsittely, vartiolausekkeet ja määriteltävät operaattorit. Kieli myös tukee rekursiivisia funktioita, algebraisia tietotyyppejä ja laiskaa laskemista. Erityisiä piirteitä ovat monadit ja tyyppiluokat. Näiden ansiosta Haskellilla on helppo kirjoittaa tietyntyyppisiä ohjelmia, joiden kirjoittaminen olisi huomattavasti vaikeampaa proseduraalisilla ohjelmointikielillä.

Tällä hetkellä Haskell on saanut suosiota lähinnä akateemisissa piireissä, ja se on ainakin Yhdysvalloissa yksi suosituimpia tutkimuskäytössä olevia kieliä sekä kansainvälisesti yksi tärkeimmistä akateemisista ohjelmoinnin opetukseen käytettävistä kielistä. Tästä huolimatta kieltä käytetään jonkin verran myös kaupallisilla aloilla (mm. Credit Suisse ja Linspire [1]). Avoimen lähdekoodin projekteissa sitä käytetään hyvin vähän, joskin muutama merkittävä poikkeus löytyy, kuten Audrey Tangin Pugs (Perl 6:n kääntäjä) sekä Darcs (hajautettu versionhallintajärjestelmä).

Esimerkki

Funkitionaalisten ohjelmointikielien vastine hei maailma -ohjelmalle on kertomafunktio. Haskell-versio:

kertoma :: Integer -> Integer
kertoma 0 = 1
kertoma n = n * kertoma (n - 1)

Ensimmäisellä rivillä täsmennetään, että "kertoma" on funktio, joka tarvitsee argumenttinaan kokonaisluvun ja palauttaa kokonaisluvun. Seuraavilla riveillä määritellään kaksi erilaista funktion määritelmää: nollan kertoma on 1, ja :n kertoma on . Se, kumpaa funktiota kutsutaan, määräytyy kaavantunnistuksen avulla.

Lähteet

  1. CUFP 2006 Abstracts cufp.galois.com. Viitattu 25.6.2007. (englanniksi)

Aiheesta muualla

Tämä tietotekniikkaan liittyvä artikkeli on tynkä. Voit auttaa Wikipediaa laajentamalla artikkelia.