Magas szintű programozási nyelvek 1 Előadás
Bevezetés Espák Miklós
[email protected] Juhász István jegyzete alapján
Modellezés ●
Valós világ leírása –
–
–
Egyedek ●
Tulajdonságok
●
Kapcsolatok
●
Viselkedés
Egyedek osztályozhatók: ●
Közös tulajdonságok
●
Hasonló viselkedés
Absztrakció: ●
Modellalkotás alapja
●
Közös, lényeges tulajdonságok kiemelése
Modellezés ●
Milyen modellek vannak? –
Kotta (egy zeneszám modellje)
–
Műszaki rajz (épületé, alkatrészé stb.)
–
Piktogram (pl. fagylalt áthúzva)
–
Blokkdiagram használati utasításon
–
UML diagram
–
stb.
Modellezés ●
●
Absztrakció: –
Modellalkotás alapja
–
Közös, lényeges tulajdonságok kiemelése
–
Lényegtelen tulajdonságok elhagyása
Osztály –
Az absztrakció segítségével a modellben egyedek osztályát írhatjuk le!
–
(Nem független egyedekkel kell foglalkozunk.)
Modellezés ●
●
Mikor modellezünk? –
Megoldandó problémán gondolkodunk
–
Tervezünk valamit, rajzolunk
–
Tanulunk (a magolás nem tartozik ide)
Mitől modell a modell? –
Leképezés: léteznie kell az eredeti egyednek
–
Leszűkítés: az egyednek csak bizonyos tulajdonságai jellenek meg (nem mind)
–
Alkalmazhatóság: a modellben levont következtetés igaz az eredeti egyedre
Modellezés ●
Leképezés –
●
Leszűkítés –
●
Az eredeti egyed lehet képzelt vagy tervezett vagy akár feltételezett is. Pl. egy legyártandó gép. A modell szegényebb, de kezelhetőbb mint az eredeti egyed
Alkalmazhatóság –
A modell létcélja. A vizsgálatok a modellben egyszerűbbek. (Esetleg csak abban lehetséges.)
Modellezés ●
●
Számítógépes modellezés –
Adat: egyedek tulajdonságai
–
Kód (program): egyedek viselkedése
Adatok modellezése (adatabsztrakció útján): –
●
Viselkedés modellezése (procedurális absztrakció útján: –
●
Adatmodell
funkcionális modell (eljárásmodell)
A két modell együttesen írja le a világot!
Alapfogalmak : Nyelvek osztályozása ●
Programnyelvek osztályozása gépközeliség szerint: –
Gépi kódú nyelvek: ●
●
–
–
Adott processzor utasításkészletére írt bináris programok nyelve Közvetlenül végrehajtható
Assembly nyelvek: ●
Alacsony szintű, közvetlen hardver elérés
●
Szöveges (nem bináris)
Magas szintű nyelvek ●
Nem CPU-függők, emberközelibb szemlélet
Magas szintű programozási nyelvek ●
Magas szintű programozási nyelvek –
Forrásprogram: az elkészített (megírt) program
–
Szintaktikai szabályok: ●
–
Szemantikai szabályok: ●
–
a nyelv felépítése, nyelvtana A nyelvi elemek jelentése, tartalma. Pl. utasítások végrehajtásának menete, adatok letárolásának módja stb.
Nyelv = szintaktikai + szemantikai szabályok
Magas szintű programozási nyelvek ●
Gépi kódú program előállítása: –
Fordítóprogram (compiler) ●
Forrásprogramból tárgyprogramot készít
●
Lépések: –
Lexikális elemzés
–
Szintaktikai elemzés
–
Szemantikai elemzés
–
Kódgenerálás (tárgykód előállítása) ●
–
A tárgykód lehet ún. bájtkód (virtuális gép)
Értelmező program (interpreter) ●
Nem készít tárgyprogramot (csak az első 3 lépés van)
●
Utasításonként értelmez és végrehajt
Magas szintű programozási nyelvek ●
Gépi kódú program előállítása: –
Vegyes technikák: ●
A kettő kombinációja: –
pl. Java HotSpot VM
Magas szintű programozási nyelvek ●
Gépi kódú program előállítása: –
Lexikális elemző (lexer): ●
–
lexikális elemekre bontás
Szintaktikai elemzés (parser): ●
A nyelvtani szabályok szerinti ellenőrzés –
●
–
pl.: C-ben x <> 7 fordítási hiba
A program struktúrájának felépítése (AST)
Szemantikai elemzés: ●
Szemantikai összefüggések teljesülésének ellenőrzése –
pl. C-ben i = 4.5 fordítási hiba, ha i int típusú
Magas szintű programozási nyelvek ●
Gépi kódú program előállítása: –
Szerkesztő, kapcsolatszerkesztő (linker): ●
–
Betöltő (loader): ●
–
Tárgykódokból futtatható kódot készít Elhelyezi a programot a tárban, és ráadja a vezérlést
Futtató rendszer (runtime environment): ●
A program futását vezérli
●
Interpreteres nyelvnél ez az értelmezőprogram
●
Bájtkódra fordító nyelvnél a virtuális gép
●
Gépi kódra fordító nyelvnél a processzor
Magas szintű programozási nyelvek ●
Fordítás menete, 0. lépés: –
Előfordító (precompiler) ●
A forrásprogramban lehetnek nyelven kívüli elemek
●
Ezeket eltávolítja, illetve feloldja
●
Érvényes forrásprogramot állít elő
Programnyelvek osztályozása ●
Imperatív nyelvek –
Algoritmikusak
–
A program utasítások sorozata
–
Alapvető eszköz a változó: ●
●
– ●
A tárban lévő értékek közvetlenül módosíthatók Az algoritmus lényege a változók értékének sorozatos módosítása
Szorosan kötődnek a Neumann-architektúrához
Alcsoportjai: –
Eljárásorientált nyelvek, objektumorient. nyelvek
Programnyelvek osztályozása ●
Deklaratív nyelvek –
Nem algoritmikusak
–
A programozó csak a problémát adja meg
–
A megoldáskeresés módja be van építve
–
Memória közvetlen elérése nem lehetséges, vagy korlátozott ●
– ●
Pl. Prolog: a változók csak egyszer kaphatnak értéket
Nem kötődnek szorosan a Neumann-archit.-hoz
Alcsoportjai: –
Funkcionális, ill. logikai nyelvek
Programnyelvek osztályozása ●
Egyéb: –
Egyik csoportba sem sorolhatók, vagy éppen a kettő ötvözései (multiparadigmás nyelvek)
Nyílt forrás, zárt forrás ●
●
A programot forráskód formájában készítik el Futtatáshoz a tárgykódra van szükség –
Nem módosítható (vissza kellene fejteni)
●
Kié a program?
●
Melyik a program? –
A forráskód?
–
A tárgykód?
–
Mindkettő?
Zárt forrás (closed source) ●
●
●
A forráskód a gyártóé. Más számára nem elérhető. A felhasználó csak a tárgykódot érheti el: csak futtathatja a kódot, nem vizsgálhatja, nem alakíthatja át. Problémák: –
a felhasználó kiszolgáltatott, a gyártó kezében van (pl. speciális hardverek)
–
Gyakran pénzbe kerül („fizetős”)
Nyílt forrás (OSS, open source sw.) ●
●
●
A forráskód nyilvános. Ettől még a gyártóé/fejlesztőé, mivel rendszerint licenc védi. A felhasználó vizsgálhatja a kódot, de nem feltétlenül módosíthatja: ez már licenctől függ. A nyílt forrás csak a forráskód nyilvánosságát jelenti, ettől még nem feltétlen szabad szoftver, és nem is feltétlen ingyenes!
Szabad szoftver (FS, free software) ●
●
Richard M. Stallman (RMS): –
„Free as in freedom, not as in free beer”
–
Free software ≠ freeware
–
Egyetlen etikus terjesztési mód
–
GNU projekt: „szabad” operációs rendszer létrehozása (GNU: GNU is Not Unix)
–
Saját kernelük nincs: GNU/Linux
–
GPL: GNU Public Licence
–
http://gnu.org
FOSS: Free and Open Source Software
RMS
Szabad szoftver ●
●
●
Szabadon lehet: –
Terjeszteni
–
Vizsgálni
–
Módosítani
Azért „szabad”, mert a felhasználó szabadságát adja. A szabad szoftver ipari tendencia lett