Amatőr és professzionális programozási nyelvek. Számítási modellek (Neumann-elvű, automataelvű, funkcionális, logikai). Programozási nyelvekkel kapcsolatos fogalmak, fordítás, értelmezés. Programozási nyelvek jellemzői (biztonságosság, emberközelség, kiterjeszthetőség, hatékonyság, hordozhatóság). Magas- és alacsonyszintű nyelvek.

Programozási nyelvek osztályozása:

Felhasználói kör szerint:

Amatőr nyelvek (Pascal, Logo, Elan, Prolog 1. része, Basic)

mérnök, tanár, közgazdász, stb. használja

egyszerű programszerkezet

sok nyelvi elem (a felhasználót így nem kell terhelni az alapeljárások megírásával)

Sok gépfüggő elem (saját gépen saját célra való felhasználás miatt)

interaktivitás (könnyen, gyorsan lehessen kipróbálni, módosítani a programokat, mivel a nem hivatásos programozó több hibát ejt)

gyors fejlődés

Professzionális nyelvek (Pascal, Prolog 2. része, Modula-2, Ada)

programozó használja

kevés nyelvi elem, szűkebb utasításkészlete (mindent a programozónak kelljen megírni)

modularatás (modulokra bonthatóság)

hordozhatóság (gépfüggetlenség)

viszonylagos stabilitás (nem jó, ha nagy programokat gyakran újra kell írni, viszont jó, ha az újabb változatok felülről kompatibilisek a régivel)

Számítási modell szerint

Neumann elvű nyelvek

A Neumann elvű nyelvek mögé egy Neumann elvű számítógépet képzelünk:

címezhető, írható-olvasható memória: az adatok és a program a memóriában van

program végrehajtása  utasítások szekvenciális végrehajtása

változó fogalmának megjelenése, értékadás, adatok beolvasása, kiírása, memóriacímre való ugrás, elágazás, ciklusok szervezése

(a mai nyelvek többsége ilyen; pl. fortran, pascal, Basic stb.)

Automata elvű nyelvek

végrehajtója (elvben) egy automata (ipari robot, festőautomata, lángvágó)

az automata rendelkezik állapotokkal, s az állapotok közötti átmenetet leíró függvényekkel

egy-egy állapot az összes globális "változó" ill. jellemző pillanatnyi értékét tartalmazza; ezek az állapotkomponensek

utasítások: állapotmódosító illetve állapotlekérdező

minden állapotváltozás relatív, hiszen a változás az előző állapothoz képest történt

nincs változó, nincs értékadás (helyette állapotkomponens változtatás van)

nincs beolvasás (helyette eljárások paraméterezése, ill. állapotlekérdezés szerepel)

nincs kiírás (helyette az eredmény az állapotváltozások nyoma (pl. teknőc rajza))

elágazások, ciklusok paraméter illetve állapotfüggők  egyszerűbbek, mint a Neumann-elvű nyelvekben. A ciklus vagy adott lépésszámú ciklus vagy rekurzív eljárás lehet.

(pl. Logo , teknőcgrafika)

Funkcionális nyelvek

a program egy függvény, a program végrehajtása a függvény kifejtéséből áll

programszerkezet: függvénykompozíció, alternatív függvény, rekurzív függvény

nincs memóriacímzés, változó (helyette fgv.paraméter, ami lehet függvény is)

nincs értékadás, ciklus, beolvasás (helyette függvényparaméterezés)

nincs kiírás (helyette a kiszámított függvényérték automatikus kijelzése történik)

(pl. Logo)

Logikai nyelvek

a program egy logikai formula

a program végrehajtása a logikai függvény kiértékelése

a program eredménye: FALSE vagy TRUE ill. azon paraméterek megadása, melyekre a TRUE teljesül.

nincs: memória, változó, értékadás, beolvasás (helyette paraméterezés), kiírás

nincs szekvencia, elágazás, ciklus, őket logikai formulákban szereplő "és", "vagy", "nem" műveletek helyettesítik. A program struktúrája:

f ( x ) ha h ( x ) é s g ( x )	- egymás utáni végrehajtás

f ( x ) ha h ( x ) vagy g ( x )	- alternatív végrehajtás

f ( x ) ha g ( x ) vagy i ( x ) é s f ( x )	- rekurzív formula

(pl. Prolog)

Felhasználói közelség szerint

Gépi kód

Ez a legalacsonyabb szintű nyelv. (ez az, amit a gép közvetlenül megért)

A hardver-lehetőségek maradéktalan kihasználása (memóriacímek, regiszterek, verem, megszakítások, op.r. változói közvetlenül elérhetők)

gépi kódú utasítás (bináris szám)

Alacsonyszintű nyelv

Minden gépi kódú utasításnak megfelel egy alacsonyszintű nyelvi utasítás, amelyet azonban már egy szimbolikus elnevezés takar (ezek állhatnak több gépi utasításból is).

Adatokat, adatok helyfoglalását, a programkód memóriába helyezését definiáló utasítások megjelenése.

Memóriacímek azonosítóval való ellátása, adatok kezdőcímének elnevezése (a rájuk való hivatkozás a változófogalom első megjelenése)

elágazás, ciklus szervezhető, de a nyelvnek nem eleme

kiegészítés:

minden lehetőség kihasználható, amit a hardware nyújt

változó = kezdőcím (megjelenik a változó fogalma, de még az adatoknak nincs szerkezetük)

azonosító = memória cím neve

utasítás = azonosító

feltételes vezérlésátadás. visszatérés

általában gyorsabb mint egy magasszintű nyelv

primitívebb

minden gépi utasításhoz nyelvi utasítást rendel

Magasszintű nyelvek

magasszintű nyelvek  feladatorientált nyelvek

kifejezés-. változó-. típusfogalom-. elágazás-. ciklus-. eljárás megjelenése

kiegészítés:

feladatorientált

változó memóriatartpményt jelöl

típusfogalom

kifejezések

az algoritmusban felhasznált utasítások a nyelv elemi utasításaival kódolhatók

elágazás, ciklus, értékadás, I/O

eljárások = programegységek

paraméterek

Egyéb osztályozások

"Compiler" illetve "Interpreter" nyelvek

Egyes nyelvekhez gyakrabban készítenek interpretert (értelmezőprogramot), míg másokat szinte kizárólag compilerrel (fordítóprogrammal) használnak.

Procedurális illetve nem procedurális nyelvek

A megoldó algoritmus leírására törekszik (pl. Neumann-elvű illetve automata-elvű nyelvek). Nem procedurális: a megoldó algoritmust a nyelv kiértékelési szabálya tartalmazza. (pl. funkcionális és logikai nyelvek)

Deklaratív nyelv

A specifikációt adjuk meg, s a rendszer ennek alapján automatikusan állít elő megoldást. (pl. logikai nyelvek)

Utasításorientált nyelv

Alapelemei utasítások, a program végrehajtása ezek elvégzéséből áll. (pl. Pascal)

Kifejezésorientált nyelv

Alapelemei kifejezések, a program kifejezések kiértékeléséből áll.

Objektum orientált nyelv

Az objektum-orientált programozás eszközeivel rendelkezik. (pl. Delphi)

Párhuzamos programnyelv

Párhuzamosság kezelésére szolgáló eszközökkel rendelkezik.

7. tétel Programozási nyelvek osztályozása

Cím :

Noname

2002-07-03T12:44:00

Peter Szamoskozi