Programozási nyelvek 6. előadás -...
Transcript of Programozási nyelvek 6. előadás -...
Programozási nyelvek
6. előadás
Programozási nyelvek
osztályozása
Szempontok
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
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 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
2015.10.11. 18:03
Professzionális
modularitás
stabil nyelvek
kevés nyelvi elem
sok lehetőség
gépfüggetlenség,
átvihetőség
Zsakó László: Programozási nyelvek 3/25
Emberközelség
Gépi nyelvek
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
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 4/25
Emberközelség
Alacsonyszintű nyelvek
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
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 5/25
Emberközelség
Alacsonyszintű nyelvek 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
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 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: ...
2015.10.11. 18:03
B osztója-e A-nak?
Zsakó László: Programozási nyelvek 7/25
Emberközelség
Magasszintű nyelvek
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
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 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
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 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,
…
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 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
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 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
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 12/25
Számítási modellek
Neumann-elvű nyelvek
1. Elképzelések, tulajdonságok
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 → állapot-
tér, konkrét állapot=pont,
a program leírása szöveges
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 13/25
Számítási modellek
Neumann-elvű nyelvek
2. Következmények
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ő)
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 14/25
Számítási modellek
Automata-elvű nyelvek
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
2015.10.11. 18:03
Pl. ipari robotok, Logo teknőc
Zsakó László: Programozási nyelvek 15/25
Számítási modellek
Automata-elvű nyelvek
2. Következmények
az utasítások általában egy állapotkomponenst változtatnak
változó, értékadás nincs (csak névvel ellátott állapotkompo-
nensek)
csak primitív (állapot-, vagy paraméter- vagy érzékelő álla-
potfüggő) ciklusok írhatók
állapot-, vagy paraméter vagy érzékelő állapotfüggő elágazás
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 16/25
Számítási modellek
Automata-elvű nyelvek
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
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 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
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 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)
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 19/25
Számítási modellek
Funkcionális (függvényszerű) nyelvek
Függvénykompozíció:
Alternatív függvény:
Rekurzív függvény:
2015.10.11. 18:03
f x g h x:
f x
g x ha p x
h x ha p x:
f x
g x ha p x
h f i x ha p x:
Zsakó László: Programozási nyelvek 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ás-
sal rendelkező függvény)
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 21/25
Számítási modellek
Logikai nyelvek
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)
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 22/25
Számítási modellek
Logikai nyelvek
2. Következmények
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
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 23/25
Számítási modellek
Logikai nyelvek
2. Következmények
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)
2015.10.11. 18:03 Zsakó László: Programozási nyelvek 24/25
Programozási nyelvek
6. előadás vége