Programozási nyelvek 6. előadás
Szempontok Programozási nyelvek osztályozása Felhasználói kör (amatőr, professzionális) Emberközelség (gépi nyelvektől a természetes nyelvekig) Számítási modell (hogyan képzeljük el a végrehajtást) A megoldandó problémához való viszony (általános, speciális) Egyéb osztályozások 2/25
Felhasználói kör Amatőr interaktivitás gyors nyelvi fejlődés sok nyelvi elem egyszerű programszerkezet speciális gépi tulajdonságok Professzionális modularitás stabil nyelvek kevés nyelvi elem sok lehetőség gépfüggetlenség, átvihetőség 3/25
Gépi nyelvek Emberközelség processzor utasítások memóriacímek (adat és utasítás lásd Neumann-elvek) műveletek: 1, 2,... byte-os adatokkal dolgoznak regiszterek verem megszakítások 4/25
Alacsonyszintű nyelvek Emberközelség a számítógép (hardver, operációs rendszer) lehetőségeinek maradéktalan kihasználhatósága szimbolikus utasítások direktívák makroutasítások szimbolikus memóriacímek (adat és utasítás) változó, mint memória kezdőcím elágazás, ciklus, eljárás szervezés támogatása 5/25
Alacsonyszintű nyelvek Emberközelség CIKLUS: CP 0 ; hasonlítsuk össze A-t 0-val! JP Z,IGEN; ugrás, ha A=0 volt JP M,NEM ; ugrás, ha A<0 volt BIT 0,A ; A legkisebb helyiértékű bitje 1-es? JP NZ,PTLANA ; ugrás, ha 1-es volt BIT 0,B ; B legkisebb helyiértékű bitje 1-es? JP NZ,PTLANB ; ugrás, ha 1-es volt SRL A ; A bitjeinek eggyel jobbra léptetése ; a legmagasabb helyiértékre 0 lép be SRL B ; B bitjeinek eggyel jobbra léptetése ; a legmagasabb helyiértékre 0 lép be 6/25
Emberközelség JP CIKLUS ; ugrás a CIKLUS címkére PTLANA: BIT 0,B ; B legkisebb helyiértékű bitje 1-es? JP Z,NEM ; ugrás, ha 0-s volt SUB B ; A:=A-B JP CIKLUS ; ugrás a CIKLUS címkére PTLANB: SRL A ; A bitjeinek eggyel jobbra léptetése ; a legmagasabb helyiértékre 0 lép be JP CIKLUS ; ugrás a CIKLUS címkére IGEN:... NEM:... B osztója-e A-nak? 7/25
Magasszintű nyelvek Emberközelség változó, mint memóriatartomány értékadás típus kifejezés elágazás ciklus eljárás, függvény, operátor 8/25
Emberközelség Nagyon magasszintű nyelvek (4. generációs, ) programgenerátorok vizuális fejlesztő eszközök adatbázis fejlesztő eszközök 9/25
A megoldandó problémához való viszony Univerzális programnyelvek Problémaorientált programnyelvek adatbázis-kezelés, szimuláció, termelésirányítás, szövegfeldolgozás, 10/25
A megoldandó problémához való viszony GPSS példa szimulációs nyelvre: SIMULATE GENERATE 10,3 QUEUE SOR SEIZE FODRÁSZ DEPART SOR ADVANCE 9,4 RELEASE FODRÁSZ TERMINATE 1 START 1000 END 11/25
Egyéb osztályozások Compiler -, illetve Interpreter nyelvek Procedurális nyelv, nem procedurális nyelv Deklaratív nyelv Utasításorientált (parancsorientált) nyelv Kifejezésorientált nyelv Objektumorientált nyelv 12/25
Neumann-elvű nyelvek 1. Elképzelések, tulajdonságok Számítási modellek memória, címezhető (sorszámmal) a program és az adatok a memóriában vannak a végrehajtás memóriaállapotok sorozata, állapottér (adatok tere), koordináták, programfüggvény: állapottér állapottér, konkrét állapot=pont, a program leírása szöveges 13/25
Neumann-elvű nyelvek 2. Következmények Számítási modellek van változó (névvel elnevezett memória tartomány) van értékadás utasítások ismételt végrehajtása lehetséges (ciklus, GOTO) elágazás (GOTO) eljárás (adott címen levő program végrehajtása, visszatérés) beolvasás: memória másolás (pl. billentyűzet puffer) kiírás: memória másolás (pl. képernyő) 14/25
Automata-elvű nyelvek Számítási modellek 1. Elképzelések, tulajdonságok az adatok állapotok, illetve bemenetek fix felosztású memória (pl. festőkar helye, fest-e,...): állapottér állapotkomponensek a végrehajtás egyszerű állapotok sorozata a program egy állapotátmenet-függvény a program elkülönül az állapotoktól tevékenységorientáltság (állapotváltoztatás, állapotlekérdezés) a végrehajtó egy (véges) automata Pl. ipari robotok, Logo teknőc 15/25
Automata-elvű nyelvek 2. Következmények Számítási modellek az utasítások általában egy állapotkomponenst változtatnak változó, értékadás nincs (csak névvel ellátott állapotkomponensek) csak primitív (állapot-, vagy paraméter- vagy érzékelő állapotfüggő) ciklusok írhatók állapot-, vagy paraméter vagy érzékelő állapotfüggő elágazás 16/25
Automata-elvű nyelvek Számítási modellek 2. Következmények utasítások paraméterezhetőek eljárások lehetnek, paraméterezhetőek beolvasás: paraméterezés, állapotlekérdezés, érzékelő állapota kiírás: állapotváltozás nyoma párhuzamosság több végrehajtó automata 17/25
Számítási modellek Funkcionális (függvényszerű) nyelvek 1. Elképzelések, tulajdonságok a program egy függvény memória nincs a végrehajtás függvénykifejtés erős matematikai kidolgozottság 18/25
Számítási modellek Funkcionális (függvényszerű) nyelvek 2. Következmények változó, értékadás nincs konstansok = konstans függvények függvénykompozíció feltételes függvények ciklus nincs, helyette rekurzív függvények (esetleg lehet ciklus, ha léteznek a programon értelmezett függvények) 19/25
Számítási modellek Funkcionális (függvényszerű) nyelvek Függvénykompozíció: f x : g h x Alternatív függvény: f x : p x g x ha h x ha p x Rekurzív függvény: f x : g x ha p x h f i x ha p x 20/25
Számítási modellek Funkcionális (függvényszerű) nyelvek 2. Következmények függvényargumentum van különböző stratégiák a paraméterátadásra beolvasás: speciális függvény kiírás: a függvény eredménye, esetleg speciális (mellékhatással rendelkező függvény) 21/25
Logikai nyelvek Számítási modellek 1. Elképzelések, tulajdonságok a program egy logikai formula (általában nem lehet teljesen általános formula: megszorítások!) a program végrehajtása a logikai formula kiértékelése erős matematikai kidolgozottság a formulákban szerepelhetnek paraméterek a program és az adatok nem különülnek el (minden adat egy azonosan igaz formula) 22/25
Logikai nyelvek 2. Következmények Számítási modellek nincs változó, nincs értékadás szekvencia = és, elágazás = vagy (pontosabban ezek megfelelő alkalmazása) ciklus nincs, helyette rekurzív formulák vannak feltételes kifejezések elemi utasítás: mintaillesztés 23/25
Logikai nyelvek 2. Következmények Számítási modellek beolvasás, kiírás: mintaillesztés lehetőség új formulák létrehozására (új utasítás), formulák törlésére új formulák adatbázisba mentése kiértékelési algoritmus: backtrack (a felesleges visszalépések levágásával) 24/25
Programozási nyelvek 6. előadás vége