þessi síða er í vinnslu

Forritunarmálið Scheme var fyrst kynnt til sögunnar 1975, af Gerald J Sussmann og Guy L Steele Jr. Scheme er þróað út frá Lisp forritunarmálinu og er talið vera eins konar mállýska af Lisp. í byrjun var Scheme aðallega notað í kennslu og rannsóknum en í dag er hægt að nota það við allaveganna forritun.

Einkenni

breyta

Scheme er svokallað “functional” forritunarmál, eða fallamál. Málskipanin er einföld og hægt er að orða flóknar aðgerðir í stuttu máli. Það er ein af ástæðum þess að Scheme er oft notað til að kenna fyrstu skrefin í forritun. Scheme er byggt upp á listum og gögnin eru geymd í listum. Listar geta innihaldið aðra lista og þar sem hægt er að endurraða gögnum getur Scheme endurskrifað eigin kóða bæði í þýðingu og keyrslu. Í Scheme eru forrit og gögn ekki aðskilin, forrit geta breytt sjálfu sér og hægt er að búa til forrit sem bætir aðferðum við sjálft sig. í forritinu eru föll skilgreind og þau kalla svo hvert á annað. Í staðinn fyrir “for” og “while” lykkjur eru notuð endurkvæm eða “recursive” föll. Föll eru hlutir í Scheme, þannig að hægt er að höndla föll eins og heilar tölur í C.

Notkun

breyta

Segðir (e. expression) í Shceme eru alla jafna á forminu:

(<operation> <operand 1> ... <operand n>)

þar sem aðgerð (e. operation) tekur in n fjölda færibreyta (e. variable) til að vinna með. Einfaldari segðir eru þó til.

Skipunun define er notuð þegar nýtt fall er skilgreint. Taka verður fram nafn á fallinu og síðan virknina sjálfa. Þetta fall er síðan hægt að nota hvenær sem er í forritinu til að ná fram ákveðinni virkni.

Skipunin cond svipar til case skipana í öðrum forritunarmálum þar sem ein eða fleiri skilyrði eru prófuð og keyrslan í framhaldinu fer eftir niðurstöðum þessarra prófana.

Skipanirnar display og write eru notaðar til að prenta á skjáinn. display er þó almennari og oftast notuð til að prenta skilaboð þar sem ekki koma fram upplýsingar um týpu hlutanna sem verið er að skrifa út. Sjá má muninn á notkun þessarra tveggja skipana í dæmum hér að neðan.

Nokkrar skipanir í Scheme eru ætlaðar til að vinna sérstaklega með lista. null? kannar hvort listi sé tómur. cons tekur tvær breytur og býr til lista úr þeim. car skilar fyrsta staki úr lista meðan cdr skilar öllum listanum fyrir utan fyrsta stakið. Þessar tvær skipanir, car og cdr, eru stundum kallaðar “haus” og “hali”.

Skýringatexti (e. comment) kemur á eftir ;.

Dæmi:

Fyrsta dæmi sem oftast er notað þegar byrjað er að nota nýtt forritunarmál er hið svokallaða “Hello World” forrit. Oftast er eina virknin sú að textinn “Hello World” er skrifaður á skjáinn. Í Scheme er þetta afar einfalt.

(display Hello World)

Þó hér sé um fullkomlega heilstætt forrit að ræða eru afar litlar líkur á að þessi kóði yrði nytsamlegur einn og sér.

Annað dæmi:

; this is a comment in Scheme
(define (lessthan lis k)
  (cond
    ((null? lis) lis)
      ((< (car lis) k) (cons (car lis) (lessthan (cdr lis) k)))
    (else (lessthan (cdr lis) k))
  )
)

(write (lessthan '(1 5 3 2 4)3))

Forritsbúturinn hér að ofan býr til nýjan lista út frá lista sem innheldur bara stök úr upphaflega listanum lis, sem eru minni en k. Hér prentar skipunin write út listann ‘1 2’ þar sem öllum stökum 3 eða hærri hefur verið sleppt og fara ekki inn listann sem fallið skilar. Til að ná þessu fram er notuð endurkvæmni (e. recursion). Fallið skoðar hvort listinn sé tómur. Ef eitthvað stak er í listanum þá er k borið saman við fyrsta stakið í listanum eða “hausinn”. Fyrsta stakið er fundið með skipuninni car. Ef þetta stak er minna en k er búinn til nýr listi með skipuninni cons með þessu staki og niðurstöðu endurkvæms kalls í fallið sjálft en nú með “halanum” þeas öllum stökum í listanum nema því fyrsta. Til að finna “halann” er notuð skipunin cdr. Þessi atburðarás endurtekur sig þangað til búið er að fara í gegnum allan upphaflega listann og bera saman við k. Útkoman verður listi með öllum stökum úr upphaflega listanum sem eru minni en k.

Þessi dæmi eru engan veginn nóg til að varpa ljósi á styrk Scheme sem forritunarmáls né að gefa heildarmynd af rithætti málsins. Dæmin ættu þó að gefa einhverja hugmynd um hversu öflugt málið er og rithátturinn einfaldur.

Heimildir

breyta

Kent Dybvig R.; The Scheme Programming Language, Massachusetts Institute of Technology, 2003

Sperber,Michael, Kent Dybvig R.,Flatt, Matthew, van Straaten, Anton; Revised [6] Report on the Algorithmic Language Scheme. Cambridge University Press, 2009.

http://classes.soe.ucsc.edu/cmps112/Spring03/languages/scheme/SchemeTutorialA.html#naof, sótt 20.01.2014

http://en.wikibooks.org/wiki/Scheme_Programming/What_defines_Scheme%3F, sótt 19.01.2014

http://en.wikipedia.org/wiki/Scheme_%28programming_language%29, sótt 19.01.2014

http://www.scritube.com/limba/islandeza/kafli-Forritun-og-forritunarml14121241724.php, sótt 20.01.2014

Þórhildur Rúnarsdóttir, Eyjólfur Svanberg Gunnbjörnsson