1.1 Ősnyelvek
1.2 További nyelvek
'60-as évek első fele: Több száz nyelv születik, általában az Algol60-ra hivatkoznak. (pl.
BASIC, de csak a '80-as években válik világméretűvé).
'60-as évek közepe: Olyan nyelvet akarnak alkotni, amely egyesíti az eddigi nyelvek
előnyeit, és operációs rendszer írására is alkalmas. Így jön létre a PL/1. A nyelv túl
bonyolultra sikerült, sokmindent megpróbáltak belezsúfolni. A szakma a PL/1-t alkalmatlanak
nyilvánítja operációs rendszer írására, és az eddigi nyelveket használja fel.
1967: SIMULA67: Egy teljesen eltérő filozófiát vezet be, mert objektumorientált.
1968: ALGOL68: Olyan bonyolultra tervezték, hogy egy ideig fordítóprogramja sem volt.
Elméleti jelentőségű.
1971: Wirth, aki más jelentős nyelvek létrehozásában is segédkezett, megkonstruálja a
PASCAL-t. Standard algoritmus-leíró nyelv, átveszi az Algol60 szerepét. Eszközrendszere
szűkös, rengeteg implementációja létezik, rengeteg eltéréssel. A gyakorlatban is jelentős, pl. a
közoktatásban az első számú nyelv.
PROLOG: Európában, Franciaországban születik meg, a mesterséges intelligencia kutatás
támogatására.
'70-es évek közepe: Az amerikai hadügyminisztérium újabb kívánságlistát nyújt be, melynek
eredménye az ADA. Ez a nyelv saját kategóriájában a csúcs, minden benne van, ami kell.
Bonyolult, az elméletben kulcsnyelv, de gyakorlatban is jelentős.
'70-es évek vége: C. Az ősnyelvek mellett új szerepet játszik, bizonyos verziói a '80-as
évektől kezdve a szakma nyelvének számítanak.
'80-as évek: Jelentős nyelvet nem konstruálnak
A magasszintű nyelven megírt programot szövegnek (forrásszöveg) nevezzük. A programozás
a szöveg (forrásszöveg) előállítása.
Szintaktika: A szöveg összeállítására vonatkozó szabályok összessége.
Szemantika: A program működésére vonatkozó szabályok összessége.
Hivatkozási nyelv: Egy magasszintű nyelvnek definíciója van, ez általában szabvány. A
hivatkozási nyelv a szintaktikai és szemantikai szabályokat adja meg, definiálja a nyelvet.
Csak egy darab van belőle.
Implementáció: A nyelv adott rendszeren belüli konkrét megvalósítása, általában nem
kompatibilis a hivatkozási nyelvvel.
Fordítóprogramos technika: fordító >> (tárgyprogram) >> szerkesztőprogram >>
(futtatható program) >> betöltő
A szintaktikai hibák a fordításnál, a szemantikai hibák a program futása alatt (vagy egyáltalán
nem) derülnek ki. Csak szintaktikailag helyes szövegnek van tárgykódja. A
szerkesztőprogram készíti a futtatható programot, a betöltő feladata a futtatható program
betöltése a tárba és elindítása.
Interpreteres technika: Nincs fordítóprogram (>> nincs tárgykód), nincs szerkesztőprogram
(>> nincs futtatható program). A forrásszöveget elemei szerint értelmezi, az értelmezés után
rögtön az eredményt szolgáltatja. Hátránya, hogy tárgykód hiányában állandóan kiértékel (pl.
ciklusoknál), és előfordulhat, hogy az esetleges hibák helyére a tesztelés ideje alatt egyáltalán
nem kerül a vezérlés (pl. elágazásoknál), tehát egyes szintaktikai hibák rejtve maradhatnak.
2.1 Magasszintű nyelvek osztályozása
2.1.1 Imperatív nyelvek
Utasításszerkezetűek, tehát alapeszközei az utasítások és a változók. A program szövege
utasítássorozat, minden utasítás mögött gépi kód áll. Minden program utasítássorozat, amely
mögött több gépi utasítás áll. Kötődnek a Neumann-architektúrához, általában
fordítóprogramosak. Algoritmikus nyelvek, a programban azt az algoritmust írom le, amelyet
a gép végrehajt, és a probléma megoldása így születik meg. A program a hatását a tár egyes
területein lévő értékeken fejti ki.
Eljárásorientált: A program szövege külön eszközökkel részekre tagolható.
pl. Fortran, Cobol, Algol60, PL/1, Pascal, C, Ada
Objektumorientált: Modernebb nyelvek, az absztrakció megjelenése jellemzi.
pl. Eiffel, Smalltalk, C++, Java, Simula67)
2.1.2 Deklaratív nyelvek
Nincs utasításfogalom, a Neumann-architektúrától távol áll. Nem algoritmikusak, a
programban csak a problémát fogalmazom meg, a megoldást nem, az algoritmus a rendszerbe
van beépítve. A tárhoz a programozónak kevés köze van, nem feladata a tár egyes részeinek
módosítása.
Funkcionális (applikatív) nyelvek: pl. Lisp
Logikai nyelvek: Matematikai logikai alapokra épül. pl. Prolog
2.1.3 Más elvű nyelvek
Az előző nyelvek elveit tagadja, ide olyan nyelveket sorolunk, amiket máshová nem tudunk
besorolni, pl. Apl.
Programírás: Szövegösszeállítás a programozási nyelv szemantikai és szintaktikai szabályainak figyelembevételével. A szintaktikai szabályok (formai szabályok) részben szövegesen ismertettetek, részben formálisak. Többféle formális eszközrendszer létezik a szintaktikai szabályok leírására, ezek egyfajta eszközök a nyelv definiálására.

Szövegelemek: Karakter -> lexikális egység -> szintaktikai egység -> utasítás -> programegység -> fordítási egység -> program
3.1 Karakterek
A karakterek a szöveg legelemibb alkotórészei. Minden nyelv definiálja saját
karakterkészletét, hivatkozási nyelvében ritkán, általában implementációfüggő. Egy nyelv
minden szövegeleme az adott karakterkészletből épül fel. A karakterkészlet mögött mindig
kódtábla áll, ez operációs rendszer- vagy hardverfüggő, ezzel a programozási nyelv nem
foglalkozik.
3.1.1 Betűk
Az angol ABC 26 betűje.
Nyelvek közötti eltérés a kis- és nagybetűk megkülönböztetésben van.
3.1.2 Számjegyek
Egyértelműen a decimális számok.
3.1.3 Egyéb karakterek
Implementációfüggő. Olyan nyelvekben, ahol a kisbetű nem betű, ott egyéb karakternek
számít. Szintén egyéb karakternek számítanak az ékezetes betűk. Egyes nyelvekben viszont
néhány egyéb karakternek nevezett karakter is lehet betű. Kitüntetett szerepe van a
szóköznek.
3.2 Lexikális egységek
3.2.1 Szimbolikus nevek
Azonosító: Olyan karaktersorozat, amely betűvel kezdődik és betűvel vagy számjeggyel
folytatható. A programozó saját objektumainak megnevezésére használhatja, és a programban
mint névre hivatkozhat rá. Hosszára a hivatkozási nyelv nem tesz megkötést, de az
implementációk korlátozzák.
Kulcsszó (alapszó, fenntartott szó): Olyan azonosító jellegű felépítéssel rendelkező
karaktersorozat, amelyhez a nyelv rendel jelentést. Csak az adott értelemmel használható
(jelentését a programozó nem változtathatja meg).
Standard azonosító: Karaktersorozat, azonosítónak megfelelő felépítéssel. Jelentését a nyelv
definiálja, de a programozó megváltoztathatja.
Azonosító nélkül nem lehet programot írni. Egyes nyelvekben nincsenek kulcsszavak, nincs
olyan karaktersorozat, amelyet ne használhatnánk azonosítónak.
3.2.2 Címek
Lexikális elem, az utasítás azonosítására szolgál, a program más pontjáról tudunk egy adott
utasításra hivatkozni. A nyelvek egy részében ismeretlen fogalom, de a többség ismeri.
Formailag előjel nélküli egész szám vagy azonosító lehet.
3.2.3 Elhatároló jelek
A program, mint szöveg, sorokra tagolódik, de lényeges a sor és az utasítás kapcsolata.
Kötött formátumú nyelvek (ősnyelvek): Egy sorba csak egy utasítást enged meg, esetleg
több sorba egy utasítást (tördeléssel). A programozási eszközök soron belüli pozíciója
rögzített a kártyaorientáltság miatt.
Szabad formátumú nyelvek (Algol60 óta): A sor és az utasítás kapcsolata elválik
(lehetséges: egy sor egy utasítás, egy sor több utasítás, több sor több utasítás), a soron belüli
pozíció nem rögzített, de el kell határolni, hogy egy utasítás meddig tart.
Eszközök a megvalósítására:
A tagolás célja, hogy a fordítóprogram bizonyos szövegelemeket meg tudjon különböztetni. A
szimbolikus neveket, címkéket, megjegyzéseket és a konstansokat mindig el kell határolni.
Lexikális elem az, ami két elhatárolójel között szerepel.
Elhatárolójelek: : (kettőspont), ; (pontosvessző), ( ) (zárójel) stb. Ha nincs, akkor általános
elhatároló jel a szóköz (akárhány lehet, akár elhatároló jel mellett is).
3.2.4 Megjegyzés
Olyan nyelvi eszköz, amely nem a fordítóprogramnak szól, hanem annak az embernek, aki a
szöveget nézi (működési leírás, használati előírás stb.). Száma és hossza tetszőleges.
Ősnyelvek: A megjegyzés egy teljes sor, a sor első karaktere jelzi, hogy megjegyzés
következik.
Kötött formátumú nyelvek: A sor bizonyos pozícióin kezdődik a megjegyzés.
Nem kötött formátumú nyelvek: Bárhol lehet megjegyzés, ahol a program szövegében
szóköz, mint elhatároló jel előfordulhat.
A megjegyzésen belüli szóközök szimpla karakterek, és a kis- és nagybetűk is különböznek.
3.2.5 Változó
Olyan programozási eszköz, amelynek négy komponense van:
1. Név:
Egyedi azonosító, a program szövegében a változó mindig a nevével jelenik meg, ez hordozza
a komponenseket.
2. Attribútumok:
A változó futás közbeni viselkedését, az általa felvehető értékeket határozzák meg. Az
eljárásorientált nyelvekben a legfontosabb attribútum a típus, nem típusos nyelvekben ilyen
komponens nincs, de más attribútum lehetséges.
Változóhoz attribútum rendelés deklaráció segítségével történhet.
3.2.6 Nevesített konstans
Olyan programozási eszköz, amelynek három komponense van:
1. Név
Azonosító.
2. Típus
Az adott nyelvben használt típusok valamelyike.
3. Érték
Nem változtatható, mivel címkomponens nincs, vagy legalábbis a programozó számára
nem hozzáférhető.
Kérdés, hogy a nyelvekben van-e beépített (standard) nevesített konstans, a programozó
definiálhat-e sajátot, hogyan adható meg az értéke (konstanssal, konstans kifejezéssel vagy
kifejezéssel), milyen típussal rendelkezhet (skalár vagy strukturált).
3.2.7 Literál, konstans
Programozási eszköz, amelynek két komponense van: típus és érték. Nem deklarálható,
mindig önmagát definiálja, a felírt karaktersorozat alakja dönti el a típusát és az értékét.
Segítségével a program szövegébe fix érték építhető be.
Egy szintet vissza, vagy
vissza a főmenübe.