Scheme (programski jezik) — разлика између измена
Садржај обрисан Садржај додат
м Бот: исправљена вики синтакса.; козметичке измене |
м Разне исправке; козметичке измене |
||
Ред 23:
|sajt dokumentacije =
}}
-{'''Scheme'''}- je [[Парадигма програмирања|multiparadigmatski]] [[Програмски језик|programski jezik]] opšte namene. Nastao je 1970-ih godina pod uticajem jednog imperativnog ([[Алгол|Algol-60]]) i jednog funkcionalnog ([[Lisp]]) programskog jezika. -{Scheme}- je u početku bio zvan -{"''Schemer''"}-, u skladu sa tradicijom imenovanja jezika koji potiču od Lisp-a (kao što su npr. -{[[Planner]]}- ili -{[[Conniver]]}-).
<br /> -{Scheme}- su 1975. godine predstavili -{[[Gerald J. Sussman]]}- i -{[[Guy L. Steele]]}- serijom papira na koje se sada referiše kao "[http://library.readscheme.org/page1.html Lambda papiri]". Razvijen je u [[Масачусетски технолошки институт|MIT]]-ovim laboratorijama, prvobitno namenjen za istraživanja i podučavanje studenata.
<br /> Smatra se jednim od dva glavna dijalekta programskog jezika Lisp. Za razliku od -{[[Common Lisp]]}--a, drugog glavnog dijalekta, Scheme prati filozofiju
minimalističkog dizajna definisanjnem malog standardnog jezgra jezika (primitivnih konstrukata), ali sa moćnim alatima za proširenje jezika. Jezik definišu dva standarda:
* -{IEEE 1178-1990 (R1995)}- – službeni standard <ref>
* -{RnRS (''Revisednth Report on the Algorithmic Language Scheme'') - de facto}- standard
Poslednji ratifikovan je -{R7RS}- (2013), dok je najčešče implementiran standard -{R5RS}- (1998). <ref>
Zbog svoje kompaktnosti i elegancije, -{Scheme}- je programski jezik koji se koristi u raznovrsne namene. Međutim, zbog svoje minimalističke
filozofije i standarda, nastale su i raznovrsne implementacije i nadogradnje jezika, što dovodi do nekompatibilnosti kodova pisanih u
Линија 38 ⟶ 43:
=== Poreklo ===
-{Scheme}- je nastao 1970-ih kao pokušaj da se razume -{[[Carl Hewitt]]}--ov matematički -{[[Actor model]]}-. U tu svrhu su -{Sussman}- i -{Steele}- napisali “mali Lisp prevodilac”, koristeći se dijalektom -{[[MacLisp]]}- kome su pridodali mehanizam za kreiranje aktera i slanje poruka. <ref>
=== Uticaj ===
-{Scheme}- je prvi dijalekat Lisp-a koji je zahtevao samu implementaciju kako bi se izvela eliminacija [[Репна рекурзија|repne rekurzije]], dajući time veću podršku [[Функционално програмирање|funkcionalnom programiranju]], kao i drugim tehnikama koje koriste [[Рекурзија (компјутерске науке)|rekurziju]]. Smatra se da je -{Scheme}- imao veliki uticaj na nastanak i razvoj drugog dijalekta Lisp-a, -{Common Lisp}- jezika. <ref>
=== -{R7RS}- standard ===
Линија 217 ⟶ 222:
Imena svih predikatskih funkcija se završavaju upitnikom.
=== Definisanje funkcija ===
-{Scheme}- program jeste kolekcija funkcija, pa pisanje programa podrazumeva definisanje velikog broja funkcija. Bezimena funkcija se konstruiše pomoću ključne reči <code>lambda</code> i predstavlja [[Ламбда рачун|lambda izraz]]. Na primer, <code>(lambda (x) (* x x))</code> je bezimena funkcija koja vraća kvadrat svog numeričkog argumenta. Ova funkcija se može koristiti kao i bilo koja imenovana funkcija, tako što se stavi na početak liste koja sadrži argument funkcije. Na primer, sledeći izraz vraća 49:<syntaxhighlight lang="Scheme">((lambda (x) (* x x)) 7)</syntaxhighlight>Lambda izrazi mogu imati i veći broj argumenata.
<br /> <syntaxhighlight lang="Scheme">(define pi 3.14159)
(define two_pi (* 2 pi))</syntaxhighlight>
Линија 342 ⟶ 349:
=== Standardne forme ===
Naredna tabela opisuje standardne forme jezika -{Scheme}-. Neke od formi se pojavljuju u više od jednog reda, iz razloga što neke forme imaju višestruku funkciju primene u jeziku, te se ne mogu jednoznačno klasifikovati. </br></br>
Forme obeležene sa "B" u tabeli predstavljaju izvedene "bibliotečke" forme koje su zapravo definisane pomoću nekih drugih, osnovnijih formi. Uglavnom su implementirane kao makroi.
{| class="wikitable"
|+ Standardne forme definisane -{R5RS}- standardom
Линија 367 ⟶ 376:
=== Standardne procedure ===
Naredne dve tabele prikazuju standardne procedure definisane -{R5RS}- standardom. Standard -{R6RS}- je mnogo obimniji i rezime ove vrste ne bi bio tako praktičan i reprezentativan. Neke standardne procedure se pojavljuju u više od jednog reda, iz istog razloga kao kod standardnih formi.
{| class="wikitable"
|+ Standardne procedure definisane R5RS standardom
Линија 407 ⟶ 418:
|}
Stringovske i karakterske procedure koje sadrže -{"-ci"}- u svom nazivu vrše poređenja koja ne prave razliku između malih i velikih slovnih karaktera.
{| class="wikitable"
|