Scheme (programovací jazyk): Rozdiel medzi revíziami

Smazaný obsah Přidaný obsah
Escarbot (diskusia | príspevky)
d robot Pridal: rue:Scheme
Vegbot (diskusia | príspevky)
d typo gram, replaced: Avšak → Ale (2), zastaral → zastaran
Riadok 1:
'''Scheme''' je [[funkcionálne programovanie|funkcionálny]] [[programovací jazyk]] a je dialektom jazyka [[LISP]]. Vyvinuli ho [[Guy L. Steele]] a [[Gerald Jay Sussman]] v [[70. roky 20. storočia|70. rokoch 20. storočia]]
najprv ako pokus o pochopenie [[Actor model|Actor modelu]]u a predstavili ho akademickému svetu pomocou série článkov, ktoré sú v súčasnosti označované Sussmanové a Steeleové [[Lambda články]]. Implementácie sa zvyknú líšiť v malých detailoch, preto je Scheme občas označovaný ako rodina tesne príbuzných programovacích jazykov.
 
Filozofia jazyku Scheme je nehanebne [[Počítačový minimalizmus|minimalistická]]. Jej cieľom nie je nahádzať jednu črtu na druhú, ale odstrániť slabosti a obmedzenia, ktoré spôsobujú, že nové črty vyzerajú byť potrebné. Preto Scheme poskytuje čo najmenší počet základných pojmov a kdekoľvek to je praktické v implementácií, snaží sa aby všetko ostatné bolo poskytované [[Knižnica (Informatika)|programovacími knižnicami]], ktoré sú vybudované nad týmito základnými pojmami. Napríklad hlavný mechanizmus pre ovládanie toku riadenia je [[rekurzia na chvoste]].
Riadok 110:
 
===Údajové typy===
Ostatné údajové typy v jazyku Scheme okrem funkcií a zoznamov sú: [[Celé číslo|celé čísla]], [[Racionálne číslo|racionálne čísla]], [[Reálne číslo|reálne čísla]],[[Komplexné čísla|komplexné čísla]], [[symbol]]y, [[reťazec|reťazce]], [[port (počítače)|porty]]. Väčšina implementácií Scheme taktiež poskytuje [[asociatívny zoznam|asociatívne zoznamy]], [[Hašovacia tabuľka|hašovacie tabuľky]],
[[Vektor (údajová štruktúra)|vektory]], [[Pole (údajová štruktúra)|polia]] a [[Záznam (údajový typ)|štruktúry]]. Od vtedy ako bol vydaný IEEE štandard a R4RS štandard určuje jazyk Scheme, že všetky hore uvedené typy sú ''disjunktné'' teda, že každá hodnota nemôže byť viac než jedného typu. AvšakAle niektoré zastaralézastarané implementácie jazyku Scheme anti-datujú tieto štandardy tak, že <code>#f</code> a <code>'()</code> predstavujú tú istú hodnotu, rovnako ako v prípad jazyku Common Lisp.
 
Väčšina implementácií Scheme poskytujú plnú [[číselná veža|číselnú vežu]] a taktiež [[presná aritmetika|presnú]] a [[nepresná aritmetika|nepresnú aritmetiku]].
Riadok 177:
Toto je priamy preklad matematickej rekurzívnej definície faktoriálu: faktoriál nuly (väčšinou zapisovaný <math>0!</math>) je rovný 1, zatiaľ čo faktoriál ľubovolného väčšieho prirodzeného čísla ''n'' je definovaný ako <math>n! = n * (n-1)!</math>.
 
AvšakAle, jednoduchá rekurzia prirodzene menej efektívna, lebo Scheme systém si musí udržovať záznamy o návratoch všetkých vnorených funkčných volaní. Definícia s rekurziou na chvoste je taká, čo zaistí, že v rekurzívnom prípade naj-vonkajšie volanie priamo vracia hodnotu von z funkcie. V našom prípade nebudeme priamo rekurzívne volať funkciu <code>faktoriál</code>, ale pomocnú rutinu s dvoma parametrami reprezentujúcimi stav iterácie:
 
<source lang="scheme">
Riadok 231:
*''How to Design Programs'' od Felleisena a ďalších. Určená pre výučbu návrhu programov pomocou Scheme.
*Gerald Sussman a Guy Steele. ''SCHEME: An Interpreter for Extended Lambda Calculus'' AI Memo 349, MIT Artificial Intelligence Laboratory, Cambridge, Massachusetts, december 1975.
*Richard Kelsey, William Clinger, Jonathan Rees (editory), [http://www.schemers.org/Documents/Standards/R5RS/ Report on the Algorithmic Language Scheme]
*Guy L. Steele, Jr., Richard P. Gabriel, [http://www.dreamsongs.com/NewFiles/HOPL2-Uncut.pdf The Evolution of Lisp]