Gépi kód Ennek a nyelvnek az utasításait a számítógép képes volt közvetlenül, minden átalakí- tás nélkül végrehajtani, értelmezni. A problémákat nagyon precízen kellett megfogal- mazni, lépésekre bontani. Emellett a nyelv erősen gépfüggő volt, hiszen minden gépen más és más utasításokat használt, az adott problémát minden géptípus ese- tén másképpen kellett leírni, megfogalmazni, alkalmazkodva a számolóegység sajátosságaihoz. A leggyorsabb programot eredményezi, mivel nem tartalmaz felesleges utasításokat. Assembly nyelvek A gépi kódú lehetőségekhez képest komoly előrelépést jelentett az Assembly nyelvek megjelenése, amelyek tulajdonképpen segédeszközt jelentettek a gépi kódú utasítá- sok egyszerűbb megfogalmazásában. Az egyes gépi kódú utasításokhoz egy-egy mnemonikus kódot rendeltek hozzá, a tárcímeket pedig a memória kezdetéhez viszonyított relatív címekkel számították. Szintén újdonságnak számított, hogy az egyes memóriacímeket egy-egy szimbolikus névvel lehetett helyettesíteni. Napjainkra az alacsony szintű programozási nyelvek háttérbe szorultak. Az Assembly-t ma már csak olyan feladatok esetén használják, ahol hardver szintű vezérlést kell megvalósítani. Második generációs programozási nyelvek A számítógépek alkalmazási területének bővülése szükségessé tette a programok fejlesztési idejének csökkentését, azaz felmerült az igény, hogy a programokat minél gyorsabban írják meg a programozók. A gépi kód és az assembly nehézkessége, géphez igazodása miatt nem volt erre alkalmas. A 60-as évek elején jelentek meg az első magas szintű programozási nyelvek. Az új nyelvek struktúrája már nem a számítógép sajátosságaihoz, hanem a problémához igazodott, a programozóknak itt már nem kellett a gépi végrehajtással foglalkoznia. A magas szintű programozási nyelvek 1:N típusú nyelvek, azaz egyetlen magas szintű programnyelvi utasítás több gépi kódú utasítást reprezentál. Természetesen a magas szintű nyelven írt programokat is le kell fordítani - az assembly-hez hasonlóan - de komoly előny, hogy ezeknél a nyelveknél már sokkal kisebb a hibalehetőség, a forrásprogram sokkal áttekinthetőbb. FORTRAN (FORmula TRANslation) Az első magas szintű programozási nyelv az IBM cég által kidolgozott FORTRAN volt. 1957-ben jelent meg, elsősorban a műszaki-tudományos számítások legősibb nyelve. Nevét a Formula Translation szavak összevonásából kapta. Elsősorban matematikai formulákat tartalmazó elágazások kezelésére volt alkalmas, a numerikus algoritmusok széles körét támogatta, viszont az I/O műveletek, és a karakteres adathalmazok kezelése szempontjából nem bizonyult hatékony nyelvnek. Az I/O műveleteket mindössze alapvető függvények által valósította meg, a nyelv elsődleges célja a matematikai problémák megoldása volt, ehhez a speciális területhez azonban nagyon hatékony eszköznek bizonyult. ALGOL (ALGOrithmic Language) 1955-ben fejlesztették ki, a matematikai, műszaki számítások célnyelveként. Az első véglegesnek tekintett változatot 1960-ban fogadták el egy párizsi konferenci- án, neve ALGOL 60 volt. Később, több lépcsőben történő fejlesztés után megjelent a nyelv egy újabb változata, az ALGOL 68. Az ALGOL nyelv elsősorban a kutatómunkában és az oktatás területén terjedt el. Első számú alkalmazási területe az informatikai kutatás volt. Jelentősége azonban vitathatatlan, mivel számos később kialakult programozási nyelv alapjaként szolgált. Pld: PASCAL. COBOL (Common Business Oriented Language) Adatfeldolgozás-orientált nyelv létrehozása volt a cél, amely alkalmasnak látszott a gazdasági életben való alkalmazásra is. A COBOL nyelvet ma is használják az adat- feldolgozás területén. Az első változathoz képest a nyelv igen nagy változásokon ment keresztül, nagyon sokat fejlesztették az évek során. 1989-ben jelent meg a strukturált, néhány évvel később az objektumorientált változata. A COBOL nyelv előnyeként meg kell említeni a kiváló dokumentálási lehetőségeket, a komplex adat- halmazok kezelésének jelentős könnyítését. Hátránya viszont, hogy a programok mérete igen nagy lesz, és az alapvető matematikai műveleteken túl nem támogatja a bonyolultabb számítási feladatokat. BASIC (Beginners All-Purpose Symbolic Instruction Code) Első működő változata 1963-ban jelent meg. A nyelv valójában a FORTRAN egysze- rűsített változata volt, korlátozott utasításkészlettel és egyszerű szimbólumrendszer- rel. A fontosabb változatok a QUICK BASIC, GFA BASIC, MS-BASIC, és a Pascal elemet is tartalmazó VISUAL BASIC. A változatok közül egyedül a VISUAL BASIC-et tekintjük strukturált programozási nyelvnek, a programblokkok és eljárások, függvények kezelése miatt. Harmadik generációs programozási nyelvek A második generáció programozási nyelvei már lényegesen függetlenebbek voltak a gépi logikától, mint az első generációs nyelvek, az elkészített programokat többféle gépen is használni lehetett. Azonban a nyelvek többsége egy-egy problémacsoport megoldására specializálódott, ami a programok fejlesztése, javítása során igen komoly akadályokat jelentett. A 60-as évek derekán kíséreltek meg először olyan programozási nyelvet fejleszteni, amely rendelkezik az előző nyelvek jó tulajdonságaival, emellett többféle problémacsoport megoldására alkalmas, univerzális. Az új korszakot a procedurális programozási szemlélet és az adatok struktúrájának hangsúlyozása jellemezte. Pascal (Niclaus Wirth 70-es évek, később Delphi) A cél egy az ALGOL-hoz hasonló, de általános célú programozási nyelv elkészítése volt. A PASCAL általános célú programozási nyelv, amelyet elsősorban az oktatásban, a műszaki- tudományos számítások területén és a komplex programrendszerek fejlesztése során alkalmaznak elterjedten. A PASCAL nyelv támogatja a moduláris programozást, függvények és eljárások definiálhatók, sőt a nyelv támogatja a rekurziót is. A PASCAL erősen típusos nyelv. MODULA2 Olyan programozási nyelvről van szó, amely igen magas szinten támogatja a moduláris progra- mozás módszerét, azaz a feladatok részfeladatokra bonthatók és az egyes részeket külön lehet programozni, fejleszteni. Az egyes modulok az utasítások mellett tartalmazzák a modul során fel- használt adatokat, változókat, konstansokat is. A modulok hierarchikus felépítésűek, tehát egymásba ágyazhatók. A nyelv támogatja a rekurzív alprogramok mellett, a párhuzamos vezérlőszerkezetek készítését is. Ez utóbbi lehetőség a versenyhelyzetben álló folyamatok programozásánál lehet hasznos (multitasking). A nyelv egyik nagy előnye, hogy a moduláris felépítésű programok könnyen áttekinthetők, értelmezhetők egy esetleges módosításkor. Manapság is népszerű nyelv, majdnem minden operációs rendszerhez beszerezhető a fordítóprogramja. ADA (Augusta Ada Byron 70-es évek közepe) Az ADA nyelv fejlesztésének célja egy hatékony, teljes gépfüggetlenséget biztosító programozási nyelv létrehozása volt. Éppen ezen törekvések miatt az ADA nyelv nagyon sok lehetőséget biztosít, a fontosabbak: multitasking, kommunikáció, megszakítás-kezelés. A megírt program áttekinthető, könnyen módosítható, a moduláris felépítés miatt. A nyelv szerteágazó lehetőségei szinte minden területen használhatóvá teszik, ugyanakkor ebben a komplexitásban kereshető a nyelv hibája is. Az ADA egyik gyenge pontja, hogy bonyolult és sajátságos szemantikával rendelkezik, amely más nyelvek esetén nem jellemző, ezért tanulása elég nehéz feladat. C nyelv (Dennis Ritchie, 1972 ) A nyelv különlegessége, hogy egyesíti magában a hardverközeli programozás és a magasszintű nyelvek előnyeit, ilyen módon jól kihasználhatjuk a hardver adta lehetőségeket – javul a futási idő – mégis gyorsan tudunk új programokat írni, mivel logikájában a magas szintű nyelvek formáját követi a C is. Továbbfejlesztése a C++. PROLOG (PROgramming in LOGic, Alain Colmerauer, 1972) LOGO (Wally Feurzeig és Seymour Papert 1966) Eiffel (Bertold Meyer, 1988) Stb.