Scheme

Scheme
Paradigma funktionaalinen
Julkaistu 1970
Kehittäjä Guy L. Steele, Gerald Jay Sussman
Vaikutteet Lisp
Murteet Racket
Käyttöjärjestelmä alustariippumaton
Infobox OK

Scheme on funktionaalinen ohjelmointikieli ja eräs Lisp-murteista.[1] Schemen kehittivät Guy L. Steele ja Gerald Jay Sussman 1970-luvulla. Schemen alkuperäinen nimi oli "Schemer", mutta käytetty ITS-käyttöjärjestelmä rajoitti tiedostojen nimet kuuteen merkkiin, joten lyhyempi nimi jäi käyttöön.

Scheme keskittyy minimaalisuuteen. Kielessä itsessään on mahdollisimman vähän toimintoja ja kaikki muu jätetään kirjastoille. Tätä kuvastaa hyvin se, että Schemen spesifikaatio, Revised5 th Report on the Algorithmic Language Scheme (R5RS), on noin 50 sivua verrattuna Common Lisp -spesifikaatioon, joka on noin 1 300 sivua.

Kieli käyttää latentiksi tyypitykseksi kutsuttua tyyppijärjestelmää.[2]

Scheme ohjelmointikielen pohjalta on kehittynyt Racket-murre.

Esimerkkejä

Yhteenlasku:

 ;; tämä on kommentti
 (+ 5 5)

Funktion määrittely ja kutsu:

(define (laske-palkka tunnit tuntipalkka)
  (* tunnit tuntipalkka))

(laske-palkka 60 12)

Funktionaalisille ohjelmointikielille hei maailma -ohjelman vastine on kertomafunktio. Scheme-versio:

 (define (kertoma n)
   (cond
     ((zero? n) 1)
     (else (* n (kertoma (- n 1))))))

Käyttökohteita

  • Suosittu avoimen lähdekoodin kuvankäsittelyohjelma GIMP käyttää Schemeä skriptikielenään.
  • Avoimen lähdekoodin nuotinnusohjelma Lilypond perustuu Schemeen.
  • GNU-projektin virallinen laajennuskieli Guile on Scheme-toteutus.[3] Sitä käytetään mm. GNU Guix Paketinhallintajärjestelmässä.[4]
  • Kawa on Javalla kirjoitettu Scheme-ympäristö, joka kääntää Schemeä Java-tavukoodiksi.
  • Multimediaympäristöt Fluxus (Arkistoitu – Internet Archive) ja Impromptu käyttävät Schemeä ohjelmointikielenään.

Lähteet

  1. Harsu, Maarit: Ohjelmointikielet : periaatteet, käsitteet, valintaperusteet, s. 248. Helsinki: Talentum, 2005. ISBN 952-14-0981-9.
  2. 3.1.1 Latent Typing gnu.org. Viitattu 25.2.2020. (englanniksi) 
  3. Guilen kotisivut gnu.org. 10.5.2024. Viitattu 10.5.2024.
  4. About The Project - GNU Guix guix.gnu.org. 10.5.2024. Viitattu 10.5.2024. (englanniksi)

Aiheesta muualla

Commons
Commons
Wikimedia Commonsissa on kuvia tai muita tiedostoja aiheesta Scheme.
  • https://www.scheme.org/ (englanniksi)
  • http://www.schemers.org/ (englanniksi)
  • R5RS (englanniksi)
  • R6RS (englanniksi)
  • R. Kent Dybvig: The Scheme Programming Language, 4th Edition (nettiversio) 2009. The MIT Press. Viitattu 10.5.2024. (englanniksi)
  • Dorai Sitaram: Teach Yourself Scheme in Fixnum Days (nettiversio) ds26gte.github.io. 2024. Viitattu 10.5.2024. (englanniksi)
  • Daniel P. Friedman ja Matthias Felleisen: The Little Schemer, Fourth Edition. The MIT Press, 1995. ISBN 9780262560993.

Scheme-toteutuksia

  • Chicken (englanniksi)
  • Guile (englanniksi)
  • Chez Scheme (englanniksi)
  • Gambit (Arkistoitu – Internet Archive) (englanniksi)
  • Kawa (englanniksi)
  • PLT (Arkistoitu – Internet Archive) (englanniksi)
  • Racket (eräs Schemen murre) (englanniksi)
  • Scheme48 (englanniksi)
  • Gauche (englanniksi)
  • n
  • k
  • m
Yleisimmät ohjelmointikielet
Tuotantokäytössä
Akateemiset
Historialliset
Auktoriteettitunnisteet: Kansalliset Muokkaa Wikidatassa
  • Saksa
  • Israel
  • Yhdysvallat
  • Tšekki