Scheme

Üdvözlöm, Ön a Scheme szó jelentését keresi. A DICTIOUS-ban nem csak a Scheme szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a Scheme szót egyes és többes számban mondani. Minden, amit a Scheme szóról tudni kell, itt található. A Scheme szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. AScheme és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

Főnév

Scheme (tsz. Schemes)

  1. (informatika) Scheme egy funkcionális és minimalista dialektusa a Lisp programozási nyelvnek. 1975-ben fejlesztette ki Guy L. Steele és Gerald Jay Sussman az MIT-n. 👉 Céljuk az volt, hogy a Lisp nyelvhez képest egy letisztultabb, egységesebb nyelvet hozzanak létre, ami könnyen tanítható és elméletileg is tiszta.



🌟 Fő jellemzők

Funkcionális nyelv → preferálja az immutable adatokat ✅ Egyszerű, letisztult szintaxisLexikális scope → hatókör szabályos, átlátható ✅ Tail recursion optimalizáció → rekurzió hatékonyan használható ✅ Elsőrendű függvények → függvények is adatok, átadhatók, visszaadhatók ✅ Makrók → kód generálható kódból ✅ Homoikónia → a kód is adatszerkezet (s-expressions) ✅ Minimalista standard → néhány mag-konstrukcióból sok minden felépíthető ✅ Continuations támogatásacall/cc (call with current continuation)



🏗 Mire használják?

  • Oktatás → sok programozási alaptankönyv (pl. Structure and Interpretation of Computer Programs, SICP) Scheme-et használ
  • Algoritmusok oktatása
  • Compiler kutatás
  • AI / logikai programozás
  • Scriptelés, prototípus készítés



📝 Egyszerű Scheme példa

(define (square x)
  (* x x))

(display (square 5))
(newline)

👉 Kimenet: 25

Magyarázat:

  • (define (square x) (* x x)) → függvény definiálása
  • display → kiírás
  • (newline) → új sor kiírása



🔑 Alap nyelvi elemek

define → változó vagy függvény definiálása ✅ lambda → névtelen függvény ✅ if / cond → elágazás ✅ **let / let* / letrec** → lokális változók ✅ begin → több utasítás csoportosítása ✅ quote / quasiquote → adatszerkezet létrehozás kódként



📚 Példa: Faktoriális rekurzívan

(define (factorial n)
  (if (<= n 1)
      1
      (* n (factorial (- n 1)))))

👉 (factorial 5)120



📚 Lambda példa (magasabb rendű függvények)

(define square (lambda (x) (* x x)))

(display (square 6))

👉 (lambda (x) (* x x)) → névtelen függvény



📚 Listakezelés példa

(define mylist '(1 2 3 4 5))

(car mylist)   ; első elem → 1
(cdr mylist)   ; többi elem → (2 3 4 5)
(cons 0 mylist); új lista: (0 1 2 3 4 5)

👉 Lista = alapelem Scheme-ben, mint minden Lisp nyelvben.



🚀 Scheme vs Common Lisp vs Clojure

Jellemző Scheme Common Lisp Clojure
Standard Minimalista Nagy, ipari Minimalista, modern
Dialektus Oktatási + kutatás Ipari, legacy rendszerek JVM + modern FP
Syntax Tiszta, kicsi Nagy, sok extra Tiszta, Lisp + Java integráció
Performance JVM → Java-szintű
Continuations call/cc támogatott Nem szabványos Nem támogatott



⚠️ Scheme hátrányok

⚠️ Kevés ipari használat → inkább oktatásban, kutatásban népszerű ⚠️ Dialektusok között különbségek → Racket, Guile, Chicken, Gambit, MIT Scheme stb. ⚠️ Ökoszisztéma kisebb, mint pl. Python vagy Java → de egyszerűbb tanulni!



🌐 Népszerű Scheme implementációk

  • Racket → modern Scheme (nagyon jó oktatásra, kutatásra, GUI is van)
  • Guile → GNU Scheme, scriptnyelv C eszközök mellett
  • Chicken Scheme → gyors, natív C kódra fordít
  • MIT Scheme → oktatási célú, pl. SICP-hez ajánlott



TL;DR

Scheme:

  • Funkcionális + minimalista Lisp dialektus
  • Kifejezés-orientált → minden értéket ad vissza
  • Elsőrendű függvények, tail recursion, continuations
  • Tökéletes nyelv programozási elvek tanítására
  • Kevés ipari felhasználás, de nagy elméleti hatású
  • Python, JavaScript, Clojure, Rust FP részei is Scheme/Lisp inspirációjúak.