Scheme (programski jezik) — разлика између измена

Садржај обрисан Садржај додат
м Бот: исправљена вики синтакса.; козметичке измене
Autobot (разговор | доприноси)
м Разне исправке; козметичке измене
Ред 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 />

<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 />

<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> -{1178-1990 IEEE Standard for the Scheme Programming Language; IEEE}- proizvođački broj -{STDPD14209}-; ratifikovan na sastanku -{IEEE-SA Standards Board}- komisije za pregled standarda -{(RevCom)}-; 26. mart 2008; NAPOMENA: ovaj dokument nije dostupan na Internetu, ali se može kupiti.</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> -{[https://groups.csail.mit.edu/mac/ftpdir/scheme-reports/r5rs-html/r5rs_toc.html#TOC2 Revised5 Report on the Algorithmic Language Scheme; Richard Kelsey, William Clinger, Jonathan Rees,}- i drugi; -{Kluwer Academic Publishers}-, avgust 1998.] </ref>
<br /><br />
 
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> -{[http://www.brics.dk/~hosc/local/HOSC-11-4-pp399pp. 399-404.pdf%20 The First Report on Scheme Revisited](PDF); Gerald Jay Sussman, Guy L. Steele, Jr; Kluwer Academic Publishers, Boston, decembar 1998.}-; serijska publikacija -{ISSN}-: 1388-3690; Posećeno 9.8.2012.</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> -{Common LISP: The Language, 2nd Ed., Guy L. Steele Jr. Digital Press}-; 1981. knjiški broj ISBN978-1-55558-041-4. -{"''Common Lisp is a new dialect of Lisp, a successor to MacLisp, influenced strongly by ZetaLisp and to some extent by Scheme and InterLisp.''"}-</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 /><br />-{Scheme}--ova funkcija specijalne forme <code>define</code> služi da veže ime za vrednost ili lambda izraz. <code>(define ''simbol'' ''izraz'')</code> se koristi da veže ime za vrednost. Na primer:
<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.<br />
 
 
{| 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.<br />
 
 
{| 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. <br /><br />
 
 
 
 
{| class="wikitable"