TFeri.hu

Programozási nyelvek generációi PDF Nyomtatás E-mail
  

Tamás Ferenc: Programozási nyelvek generációi

A programozási nyelvek folyamatosa fejlődésen estek át és most is őrült iramban fejlődnek. Ez az írás megpróbál pár alapvető fogalmat és korszakot tisztázni, de nem célja a teljesség. A leírásban látható, hogy nem egyértelműek a határok. Egyes nyelvek besorolásánál több korszak is szóba jöhet.

Nulladik generáció

Idő: kb. 1944-1950. Ez nem hivatalos elnevezés. Gyakorlatilag az egyedi, gépközeli nyelvekről van szó a legelső számítógépekben (pl.: ENIAC, EDVAC). A kód számok sorozata; általában egy szám egy utasítás. Relatíve sok utasítás. Nincs változónév, sem eljárásnév, sem ciklus. Minden egyes memóriacímre hivatkozás számkóddal történik.

Főbb problémák: a számkódokat a memóriába kell juttatni, de ha másik memória-területre tesszük, az komoly gondot okozhat. A gépi kód erősen gép- (CPU-)függő.

Előnyök: hatékony programkód esetén maximális futási sebesség – minimális memória-felhasználás mellett. A CPU és az egyéb hardware-elemek hatékonyságának maximális kihasználása.

Példák:

-          gépi kód

-          a Neumann-féle assembly nyelv tervezete.

Első generáció

Idő: kb. 1950-1958. A programkódok megjelenése. Elemi típusok megszületése (egész, valós, logikai, karakter, tömb, rekord). Alapvető utasítások kialakulása (elágazás, ciklus, értékadás, eljárás). Hozzájuk tartozó elmélet: assemblerek, kódgenerálás, makroprocesszor, hatékonyság. Jellemzőik: igen gyors, gépközeli nyelvek, elég bonyolult kódszintű programozás. Az utasítások már egyszerűsített angol szavak, így sokkal könnyebb megjegyezni az utasításokat.

Példák:

-          Assembly nyelv: alapvetően az angol nyelvből képzett pár betűs utasításokból és címekből álló igen erősen hardver-közeli CPU-függő nyelv. Az utasítások mellett flageket, regisztereket és memóriacímeket is tartalmaz. A könnyebb kezelhetőség kedvéért vannak konstansok, illetve számok is. Hatékonyan megírva a kód igen gyors működést eredményez. A fordítók a kódsorokat rögtön gépi kóddá fordítják le, ami a lehető leggyorsabb futási sebességet eredményezi.

-          Fortran I (1956, IBM): Célja numerikus algoritmusok, matematikai formulák kezelése. I/O szempontból nem volt hatékony. A programozó által írt szöveget forráskódnak nevezték, a fordító programot pedig compiler-nek. (FORTRAN = FORmula TRANslation) Utolsó(?) verziója: Fortran 2000.

-          Algol (1955): matematikai, műszaki számításokra. Támogatja a dinamikus tárkezelést, illetve a rekurziót. Alapvető felhasználás: kutatás területe. (ALGOL = ALGOrithmic Language). Alapja volt a következő nyelveknek: CPL, Simula, B, C, Pascal.

-          Codasyl (1955): a Cobol proto-nyelve.

 

Második generáció

Idő: kb. 1957-1966. Jellemzők: alapvető utasítások finomodása, adattípusok és kifejezések kialakulása (pl.: fa, teljes zárójelezettség, lengyel formula). Hozzájuk tartozó elmélet: szintaxis, kifejezés-kiértékelés. A nyelvek immár nem gép-közeliek, de magukat a nyelveket egy-egy problémacsoport megoldására lehetett alkalmazni.

Példák:

-          Algol 60: algoritmus-leíró nyelv, programegység, blokk-struktúra.

-          Fortran IV: fordítási egység, unió típus, kezdő érték adása.

-          Cobol (kb. 1958): gazdasági életben használható adatfeldolgozó nyelv. Jellemzői: rekord, fájl, adatfeldolgozás. (COBOL = COmmon Business Oriented Language)

-          PL/I (1964, IBM): összefoglalja az előző három tulajdonságait + dinamikus típusok, tömbműveletek. A legelső általános célú nyelv. Főleg adatfeldolgozási és számítási problémákhoz.

-          Basic (1963; kidolgozók: Kemény János, Thomas Kurtz): a legelső oktatási célú nyelv. Interpreteres felület, tehát a fordító nem egyszerre készíti el a futtatási verziót, hanem soronként fordít és futtat. Nem tette lehetővé a strukturált programozást (pl: GOTO utasítás). (BASIC = Beginners All-purpose Symbolic Instrucion Code)

Nem Neumann-elvű nyelv: LISP.

 

Harmadik generáció

Idő: kb. 1967-1980. Magas szintű általános nyelvek megjelenése. Jellemzők: típusok további finomodása, strukturált programozás. Az első (főleg az Algol 60-ra épülő) speciális nyelvek megjelenése. Elméleti fogalmak: helyesség-bizonyítás, programszintézis, szemantika-definiálás, szimbolikus végrehajtás.

Példák:

-          Simula 67 (1968, Kristen Nygaard, Ole-Johan Dahl): Az Algol-60 kiterjesztése. Objektumok, osztályok és leszármazott osztályok megjelenése. (Simula = SIMUlation LAnguage)

-          Ada: strukturált, típusos, blokk-szerkezetes nyelv. Jellemző felhasználása: rendszerprogramozás, gazdasági számítások. Az Ada egy szigorúan szabályozott és jól dokumentált nyelv, melyhez mindig létezett legalább egy ingyenes és több fizetős fordító is. Nevét Lady Ada Lovelace (1815-1852) után kapta, aki Charles Babbage barátja és bizalmasa volt és a világ első programozója.

-          Modula-2 (1977, Niklaus Wirth– zürichi Műszaki Főiskola): moduláris programozás előtérbe helyezése. Eredeti elképzelések szerint a Pascal hiányosságait javította volna ki. Alkalmas kezdő- illetve tanuló nyelvnek; valamint nagy projektek és beágyazott rendszerek fejlesztésére. Maga a nyelv kicsi, jól tanulható és könnyen elsajátítható.

-          Algol 68

-          Pascal (Niklaus Wirth – zürichi Műszaki Főiskola): sokak által kedvelt kezdő(nek szánt) nyelv. Alapja: Algol. A legelső nyelv, ami megvalósítja a strukturált programozást. Műszaki és tudományos területen, valamint oktatásnál használják. A program blokkokból épül fel (begin … end). Kialakulnak a függvények, eljárások és a rekurzió.

-          C (1972, Dennis Ritchie – AT&T Bell Labs): rendszer-közeli általános célú nyelv. Alapvetően a UNIX fejlesztő nyelvének indult. Megjelenik az alprogram (csak függvényként), valamint a rekurzió és a dinamikus tárkezelés. Elsősorban rendszerprogramozásnál használják. Az első szabványos C-fordító csak 1989-ben jelenik meg (ANSI-C). Nagy szerepe van az oktatásban és a számítógép-tudományban is. Jelenleg a C és utódai az egyik legjobban elterjedt programozási nyelv.

Nem Neumann-elvű nyelvek: Prolog, Logo, SmallTalk, automaták nyelve.

 

Negyedik generáció

Idő: kb. 1978-2005, de ma is igen népszerűek. Nem egyszerűen nyelvek, hanem magas-szintű nyelvre épülő komplex, objektum-orientált programfejlesztési környezetek. Jellemzők: modularitás, specifikáció, absztrakt típus (értékhalmaz és műveletek). A legelső ilyen nyelvek az 1980-as évek közepén jelentek meg. Előnyük: hatékonyabb, egyszerűbb, biztonságosabb programkészítés. A nyelvek logikája közelít az emberi gondolkodáshoz.

Példák:

-          Turbo Pascal (1983, Borland): tartalmazott egy IDE-felületű szerkesztővel kombinált fordítót, amely futtatható EXE fájlokat volt képes létrehozni. A Turbo kihangsúlyozta a fordítás és a futtatás gyorsaságát egyaránt. A Turbo Pascalt igen széles körben használták az oktatásban.

-          Borland Delphi (Object Pascal): Pascal alapokból kifejlesztett magas szintű általános nyelv. Maga a Delphi még 1995-ben jelent meg a 16-bites Windows-ra, amit számos későbbi verzió követett. A beépített negyedik generációs (4GL) felület integrált környezete kifejezetten magas szintű és hatékony fejlesztést tesz lehetővé.

-          Visual Basic (1991): A Microsoft által kifejlesztett magas szintű, általános célú programozási nyelv, melynek alapja a régi DOS-os rendszerekben megszokott Basic. A programkód alapja, mint a legtöbb nyelvé az angol nyelv. Számos verziója fut egymással párhuzamosan. Sikerét a grafikus programozási környezetnek, az esemény-orientáltságnak és az egyszerű feldolgozásnak köszönheti.

-          Visual C++: a C nyelven alapuló, annak tulajdonságait vizuális platformra áttevő, általános célú programozási nyelv. Számos verziója együtt létezik; több fordítója is van. A mai napig az egyik legnépszerűbb fejlesztési környezet.

-          Visual C# (ejtsd: Szí-sharp): szintén a C nyelven alapuló, magas szintű grafikus fejlesztési környezettel rendelkező, általános programozási nyelv. Több fordítója is van. A Microsoft-verzió magában foglalja a .NET fejlesztési környezetet is.

-          Borland JBuilder (Java): egy platform-független, általános célú igen könnyen használható programozási nyelv. Előnye a könnyű elsajátíthatósága, valamint a könnyű oktatása.

Az internet rohamos fejlődésével sorra jelentek meg a jobbnál jobb internetes nyelvek is, melyek egy része speciális és azóta is nagy népszerűségnek örvend.

Példák:

-          SQL, mySQL: a adatbázis-kezelés szokványos nyelve. Alapvetően deklaratív nyelv, mivel nem tartalmaz algoritmikus szerkezeteket (elágazás, ciklus), de beépíthető más nyelvekbe; pl.: PHP-be beágyazott SQL-lekérdezés. Sikere többet között annak köszönhető, hogy igen nagy adatbázisokat is meglepő könnyedséggel tud kezelni. Bár a kezelése elég fapados, de még ma is népszerű. Több komoly program is alapjául használja, pl.: MS Access. Egyik legnépszerűbb verziója az ingyenes mySQL. (SQL = Structured Query Language)

-          PHP: (1. verzió: Rasmus Lerdorf, 1995) általános szerver oldali nyelv. Alapvetően dinamikus weblapok leírására és kezelésére hozták létre. Segítségével olyan kódokat is létre lehet hozni, amelyek a HTML-lel ellentétben nem töltődnek le a kliens-gépre, hanem csak a szerveren futnak. Az eredeti verzió kicsi kód- és makrókészlete hamar túlnőtte magát és mára az egyik legnépszerűbb webes platformra használt programozási nyelve lett. Alkalmazásához a szerveren telepíteni kell egy PHP-t értő alkalmazást, pl.: Apache szervert. Érdekes, hogy a PHP-oldalak letöltve a kliens-oldali számítógépre HTML-kimenetként jelennek meg. (PHP = Personal Home Page)

-          Java: (James Gosling, 2008) internetes alkalmazás-fejlesztő nyelv, melyet a Sun Microsystems fejlesztett ki az 1990-es évek elején, majd 2009-ben az Oracle felvásárolt. A nyelv lényege, hogy a megírt programkódok futtatása a Java virtuális géppel történik, ami vagy interpretálja a kódokat, vagy natív gépi kódot készít, amit aztán az adott operációs rendszeren futtat. Előnyei: objektum-orientáltság, viszonylagos operációs rendszer-függetlenség, hálózati programozást is elősegítő kódokat és könyvtárakat tartalmaz, valamint távoli gépeken is lehet futtatni.

-          HTML: (1991, Tim-Barners Lee, CERN, Genf, Svájc) weblapok alapvető programozási nyelve. Igen egyszerű az elsajátítása, szinte semmilyen előképzettség nem szükséges hozzá. A nyelv ún. „tag”-ekből, azaz jelekből áll. Ezek mutatják meg a böngészőnek, hogy mit is kezdjen a tartalmi résszel. Mivel a világháló eredetiben csak szövegeket tartalmazott, így a tartalmát kezelő oldal is csak szöveges utasításokat fogad el. A HTML-alapú weblapok egyik előnye és egyben hibája is, hogy alapvetően nem-dinamikus oldalakat tudnak megjeleníteni, bár az újabb verziók, pl.: DHTML már ezt a korlátot meghaladta. A HTML-lapok letöltődnek a számítógépre, így a teljes kódbázisuk is megjeleníthető. (HTML = HyperText Mapkup Language)

-          CSS: (1996, Tim-Barners Lee és Hakon Wium Lievel) Webes kódlapok programozása. A nyelv alapvető célja a kicsit nehézkesen formázható HTML-lapok gyors és tömeges formázása, így egy-egy webhely kinézetének teljes körű megtervezése gyorsan és egyszerűen. (CSS = Cascade Style Sheet)

 

Ötödik generáció

Idő: 2000-ma. Igen magas szintű nyelvek. Jellemzők: párhuzamosság, hálózatok programozása. Felhasználása pl. központilag vezérelt számítógép-hálózatok, döntéstámogató rendszerek fejlesztése; valamint a mesterséges intelligenciát fejlesztők eszköze.

Példák:

-          Prolog: (eredeti kifejlesztő: Alain Colmerauer, 1972) A nyelv egy deklaratív programozási nyelv, azaz a programozónak azt kell leírnia, hogy egy adott adathalmazból mit kellene kiszámítania és a program jelzi, hogy ez lehetséges-e. Tehát a hogyannal nem kell igazán törődnie. Ezen kívül sem eljárások, sem objektumok, sem adattípusok nem úgy működnek benne, mint más nyelvekben.

-          Mercury: (kb. 1995) Somogyi Zoltán vezette ausztrál kutatók által a Melbourne-i Egyetemen kifejlesztett általános célú programozási nyelv. A Mercury a tradícionális logika programozási szintaxisát nyújtja, de emellett kényelmes szintaxist biztosít saját függvények megírásához, integrálva a logikai és a funkcionális programozást egyetlen adathalmazzá. Sok mindent átvett a Prolog nyelvből.


Tisztelt Olvasó!

Ha úgy érzi, hogy jelen írás kiegészítésre, illetve pontosításra szorul, akkor kérem ne habazzon ezt velem is megosztani! Levelét várom a megszokott tferi(kukac)tferi(pont)hu címen.

Előre is köszönöm!

 

© TFeri.hu, 2017.


 

Felhasznált irodalom:

-          http://szamosp.web.elte.hu/pub/allamvizsga/av.doc/PRNYALAP.DOC

-          http://webprog.blog.hu/2009/02/01/programozas_1_resz_programozasi_nyelvek_fejlodese_generaciok_osztalyozasok

-          https://prog.hu/hirek/4464/60-eves-lett-a-fortran-programozasi-nyelv

-          http://tudasbazis.sulinet.hu/

-          http://www.inczedy.hu/~viktoria/prog/2_ora/progr_nyelvek.pdf

-          http://slideplayer.hu/slide/11390213/

-          http://www.rentit.hu/hu-HU/Cikk/erdekessegek/milyen-nyelven-ert-a-szamitogep-a-programozasi-nyelvek-tortenete.rentit

-          https://en.wikipedia.org/wiki/Simula

-          https://hu.wikipedia.org/wiki/Ada_(programoz%C3%A1si_nyelv)

-          http://cgibin.erols.com/ziring/cgi-bin/cep/cep.pl?_alpha=a

-          https://en.wikipedia.org/wiki/Modula-2

-          https://www.modula2.org/

-          https://en.wikipedia.org/wiki/C_(programming_language)

-          http://www.tutorialspoint.com/cprogramming/c_overview.htm?

-          https://www.tutorialspoint.com/cprogramming/

-          http://progopedia.com/implementation/turbo-pascal/

-          https://en.wikipedia.org/wiki/Delphi_(programming_language)

-          https://www.embarcadero.com/products/delphi

-          https://msdn.microsoft.com/hu-hu/library/y4wf33f0.aspx

-          http://www.vbtutor.net/lesson1.html

-          http://www.max-visual-basic.com/history-of-visual-basic.html

-          https://www.visualstudio.com/vs/cplusplus/

-          https://msdn.microsoft.com/en-us/library/3bstk3k5.aspx

-          https://msdn.microsoft.com/en-us/library/kx37x362.aspx

-          https://msdn.microsoft.com/en-us/library/z1zx9t92.aspx

-          https://www.tutorialspoint.com/csharp/

-          http://nyelvek.inf.elte.hu/leirasok/Prolog/index.php?chapter=2

-          https://hu.wikipedia.org/wiki/Prolog

-          http://www.learnprolognow.org/

-          http://nyelvek.inf.elte.hu/leirasok/Mercury/index.php?chapter=1

-          http://programozasalapjai.hu/programozas/php/a-php-programozasi-nyelv-bemutatasa

 
Ulti Clocks content

Hirdetés