Szykla Creative Commons License 2002.05.14 0 0 209
"Amugy meselly mar arrol, hogy mi a kulonbseg egy "Neumann-elwu" (ezt -- az egyebkent tewes -- terminologiat Kelet-Eu-n kiwul nem nagyon hasznallyak) es egy "automataelwu" nyelw kozott? A tobbi b@romsagra, amit elohoztal -- pl."funkcionális nyelv, mint a Logo függvényes része" (?!!!???!:))))) -- mar inkabb nem is reagalnek." /Andy Capp/

Csak úgy középiskolás szinten:

A programozási nyelvek számítási modell szerinti osztályozása

1.) Neumann-elvű nyelvek
A Neumann-elvű számítógép rendelkezik címezhető, írható-olvasható memóriával, amelyben ugyanolyan módon ábrázoljuk az adatokat és az utasításokat. A program végrehajtása az utasítások szekvenciális végrehajtásával történik.
A címezhető memóriában tárolt adat absztrakciójaként megjelenik a változó fogalma: névvel ellátott memóriatartomány, amelyre írhatunk és az ott tárolt értékeket olvashatjuk. A változó értékének a módosítására megjelenik az értékadás. A beolvasás és a kiírás adatmásolás a puffer és a memória között. A program címezhető memóriában tárolásának következményeként beszélhetünk a program adott címtől kezdődő végrehajtásáról, megjelenik a GOTO utasítás, amivel pedig elágazások, ciklusok szervezhetők.

2.) Automataelvű nyelvek
A program végrehajtója egy automata (véges automata, ipari robot, a LOGO teknőce). A klasszikus véges automatát bemenő jelei és állapotai halmazával, valamint állapotátmenet-függyvényével adhatjuk meg. Ehhez jöhet a kimenő jelek halmaza és a kimenetet kiszámító függvény (a LOGO teknőce nem ilyen). Egy összetett állapot állapotkomponensekből áll. Léteznek állapotváltoztató és állapotlekérdező utasítások. Az automata fizikai szerkezete miatt nem szükséges hagyományos változófogalom. Az állapotkomponensek száma, típusa, elnevezése rögzített, másrészt a szükséges műveleteket paraméterezéssel oldhatjuk meg. (A változó egy eljárásban többször is változhat, a paraméter viszont nem!) Kimenet általában nincs, az eremény az állapotváltozás nyoma, pl. a LOGO-ban a rajz.
Az elágazások, ciklusok, paraméter-,ill. állapotfüggőek lehetnek, általában egyszerűbbek a neumann-elvű nyelvekben megszokottnál (pl. csináld n-szer ugyanazt). Bonyolultabb feladatok esetén általában rekurzív eljárásokra van szükség.

3.) Funkcionális nyelvek
A program egy függvény, a végrehajtása a függvény kifejtéséből áll. Utasításkészlete is eltér a szokásostól, az alapfogalom a kifejezés. Az eljárások mindig függvények.
A programstruktúrálás lehetőségei:
- függvénykompozíció,
- alternatív függvény,
- rekurzív függvény
A modellben nem léteznek változók, csak függvényparaméterekről beszélhetünk, melyek híváskor kapnak értéket. A beolvasást a függvényparaméterezés helyettesíti, a kiírás helyett pedig a kiszámított függvényérték automatikus kijelzése történik. Értékadás nincs, de a megőrzendő értékeket újabb függvényhívás paraméterének adhatjuk.

4.) Logikai nyelvek
Ez a nyelvosztály rokonságot mutat az előzővel, itt a program egy logikai formula, azaz logikai függvény. A program végrehajtását a formula kiértékelése jelenti. A logikai formula paraméterei közül a végrehajtás kezdetén bármelyik lehet kitöltött, ill. kitöltetlen, s a végrehajtás eredménye, hogy a kitöltetlen paraméterek mely értékeire lesz a formula igaz értékű. Az adatok a formulák paraméterei, a beolvasás helyett paraméterezés, kiírás helyett pedig a kitöltetlen paraméterek megfelelő értékeinek automatikus kijelzése szerepel a modellben.
A programstruktúrálás lehetőségei:
- egymásutáni végrehajtás,
- alternatív végrehajtás,
- rekurzív formula

A LOGO teknőccel szép rekurzív ábrákat rajzolgattunk, Koch-görbe, Cantor-halmaz, Sierpinski-csipke, a LOGO funkcionális részével rekurzív fügvényekként megvalósítottuk a programozási tételeknek nevezett alapvető eljárásokat, pl. megszámolás, maximumkiválasztás, kiválogatás, rendezések. A PROLOG-gal repülőutat és lakást terveztünk, és szintén megalkottuk a programozási tételek formuláit.

Ezek azok az általános érvényű alapismeretek, melyek évtizedek alatt sem évülnek el, melyek ismerete alap a C++, a JAVA vagy akár a PERL nyelv tanulmányozása előtt. Mégegyszer hangsúlyozom, a programozási nyelv ismerete egy gimnáziumban nem lehet cél, csupán annyit szabad megtanítani pl. a Pascal szintaktikájából is, amennyi épp szükséges egy adott algoritmus kódolásához. És pl. a C++ erre egyszerűen nem alkalmas. Nem tudsz rögtön sikerélményt adni a diáknak, aki tanulmányozni kezdi. Azaz az én véleményem szerint épp a te módszereddel veszed el egy életre a gyerekek kedvét a programozástól. Míg a Pascal esetleg felkelti bennük a vágyat, hogy komolyabb problémákhoz ismerjenek meg egy komolyabb nyelvet is. A megfelelő időben.
Szykla

Előzmény: Andy Capp (201)