Programozsi nyelvek trtnete Kezdetek 1952 Neumann Jnos tervei

  • Slides: 25
Download presentation
Programozási nyelvek története

Programozási nyelvek története

Kezdetek 1952: Neumann János tervei elkészül az EDVAC, az első Neumann-elvek alapján épített gép

Kezdetek 1952: Neumann János tervei elkészül az EDVAC, az első Neumann-elvek alapján épített gép volt első sorban matematikai problémák megoldására lett specializálva a programok „gép-függőek” voltak a programozás tulajdonképpen nem volt más, mint adott utasítások sorozatának leírása a programok megírása sok időt vett igénybe

60 -as, 70 -es évek hosszú, nehéz munkával készített, programok gyorsan elavultak, új, gyorsabb,

60 -as, 70 -es évek hosszú, nehéz munkával készített, programok gyorsan elavultak, új, gyorsabb, egyszerűbb programfejlesztési módszerek, Első magas szintű programozási nyelvek, programozási módszerek, technikák, filozófiák jelentek meg, általános célú és a specializált programozási nyelvek, strukturált programozás.

80 -as, 90 -es évek számítógépek az élet valamennyi területén, Igény: szoftverpiac követni tudja

80 -as, 90 -es évek számítógépek az élet valamennyi területén, Igény: szoftverpiac követni tudja a szélesebb körű igényeket, új eszközök, amelyek segítségével a programozók gyorsan tudnak hatékony és megbízható alkalmazásokat írni emberi gondolkodáshoz közel álló módszer: objektumorientált programozás (Programozónak rendelkezésére állnak az előre definiált programelemek, amelyekből összeállíthatja a működőképes programot, elemek tulajdonságait szabadon módosíthatja. )

Script-nyelvek PHP (szerver oldali), Javascript (kliensoldali), Perl, VBScript (Visual Basic Script), Actionscript Ezen scriptnyelvek

Script-nyelvek PHP (szerver oldali), Javascript (kliensoldali), Perl, VBScript (Visual Basic Script), Actionscript Ezen scriptnyelvek némelyike tekinthető hibridnyelvnek is, ugyanis lehetőség van bennük eljárás és objektumorientáltan is programozni. Pl. : PHP, Javascript, Actionscript

Programozási nyelvek generációi

Programozási nyelvek generációi

Első generációs programozás nyelvek gépi kódban írták, a processzor közvetlenül végre tudja hajtani, problémákat

Első generációs programozás nyelvek gépi kódban írták, a processzor közvetlenül végre tudja hajtani, problémákat nagyon precízen kellett megfogalmazni, lépésekre bontani, hátrány a gépfüggőség, nehéz programírás, előnye, a gyorsaság, Megjelent az egész, valós típus, néhány vezérlési szerkezet. ezt követte az Assembly, nem bináris angol nyelvű szöveges kódot kell írni (pl. ADD) kapcsolatban áll a gépi nyelvvel

Gépi kódra példa 0 B 0 A 0 C 0 E 0 D 00

Gépi kódra példa 0 B 0 A 0 C 0 E 0 D 00 Assembly nyelvre példa ADD X, Y Az ADD szócska az összeadásra (addition) utal, az X és Y pedig memóriacímeket szimbolizálnak. Assembly egy olyan alacsony szintű programozási nyelv, amelynél a művelet és a tárcím szimbolikusan megadható, de a programozás logikája továbbra is követni a gépi logikát.

Második generációs programozás nyelvek gépi kódban írták, A programokra megnő az igény, széleskörű alkalmazás,

Második generációs programozás nyelvek gépi kódban írták, A programokra megnő az igény, széleskörű alkalmazás, magasszintű programnyelvek, Előny: áttekinthetőség, gyors programírás, kevés hibalehetőség Példaul: FORTRAN, ALGOL, COBOL, BASIC Assembly-ben összeadás mov x, 10 mov y, 12 add x, y mov sum, x Magasszíntű programozásinyelvben összeadás x=10 y=12 sum=x+y

Harmadik generációs programozás nyelvek lényegesen függetlenebbek voltak a gépi logikától, azonban többsége egy-egy problémacsoport

Harmadik generációs programozás nyelvek lényegesen függetlenebbek voltak a gépi logikától, azonban 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, új korszakot a procedurális programozási szemlélet és az adatok struktúrájának hangsúlyozása jellemezte, első 3 GL nyelvek: sokféle probléma megoldására alkalmasak, három csoportra oszthatjuk: általános célú, magas szintű nyelvek, objektum-orientált nyelvek, specializált nyelvek,

Általános célú programozási nyelvek Ezek a nyelvek széleskörűen alkalmazhatók a gazdasági számításoktól a rendszerprogramozási

Általános célú programozási nyelvek Ezek a nyelvek széleskörűen alkalmazhatók a gazdasági számításoktól a rendszerprogramozási fejlesztésekig, széles a lehetőségek skálája. Néhány ismertebb 3 GL programozási nyelv: PL/1, APL, PASCAL, Modula-2, ADA, C.

Objektum-orientált programozási nyelvek Új szemléletű programozási technika, amely az elődeinél egyszerűbbé, hatékonyabbá, biztonságosabbá teszi

Objektum-orientált programozási nyelvek Új szemléletű programozási technika, amely az elődeinél egyszerűbbé, hatékonyabbá, biztonságosabbá teszi a programkészítést, absztrakt adattípusokkal és a hozzájuk tartozó előre definiált algoritmusokkal segítik a programozót, adatokat és az őket kezelő eljárásokat, függvényeket egységbe foglaltan ún. objektumként kezelik, Lényege:

A nyelvben előre definiált objektum a Kor, amely egy kör rajzolását teszi lehetővé. A

A nyelvben előre definiált objektum a Kor, amely egy kör rajzolását teszi lehetővé. A Kor objektum: Type Kor=object Szin: Integer; Sugar: Integer; X: Integer; Y: Integer; Procedure Rajzol; End; A Kor objektum felhasználása: … Kor. Szin: = Green; Kor. Sugar: = 120; Kor. X: = 200; Kor. Y: = 300; Kor. Rajzol; …

Specializált programozási nyelvek Számítógépet a tudományos és kutatómunka igen sok területén is felhasználják speciális

Specializált programozási nyelvek Számítógépet a tudományos és kutatómunka igen sok területén is felhasználják speciális igények megoldásokhoz hasonlóan speciális eszközökre van szükség fejlesztették ki a specializált programozási

Negyedik generációs programozás nyelvek információs rendszerek, központilag vezérelt számítógép hálózatok programozása, döntéshozást támogató rendszerek

Negyedik generációs programozás nyelvek információs rendszerek, központilag vezérelt számítógép hálózatok programozása, döntéshozást támogató rendszerek fejlesztése a célunk ezekhez hagyományos programozási nyelvek által biztosított eszközök nem megfelelőek, hardver eszközök rohamos fejlődésére támaszkodva kezdett kialakulni a programozás során egy új szemlélet, mely az eddigi alapelvekkel szöges ellentétben állt, előnyösen egyesítik a procedurális és a non-procedurális nyelvek elemeit, lehetőségeit, programok (programrendszerek) tervezése során a programozónak már nem a hogyan kérdésre kell válaszolnia, csak

nem az algoritmust, hanem az elérendő célt kell megfogalmazni, kód generálását legtöbb esetben a

nem az algoritmust, hanem az elérendő célt kell megfogalmazni, kód generálását legtöbb esetben a fejlesztő rendszer automatikusan végzi el, Fontos jellemző: nemcsak a program szintaktikai helyességét ellenőrzik, hanem megvizsgálják a program hatékonyságát, rendszerbe illeszthetőségét is. néhány rossz tulajdonság: program hatékonyságának növekedésével egyenes arányban nő a program hardverigénye is.

Programozási nyelvek osztályzása

Programozási nyelvek osztályzása

Felhasználói kör szerint Amatőr nyelvek (Pascal, Logo, Elan, Prolog 1. része, Basic) mérnök, tanár,

Felhasználói kör szerint Amatőr nyelvek (Pascal, Logo, Elan, Prolog 1. része, Basic) mérnök, tanár, közgazdász, stb. használja, egyszerű programszerkezet, sok nyelvi elem (a felhasználót így nem kell terhelni az alapeljárások megírásával), sok gépfüggő elem (saját gépen saját célra való felhasználás miatt), interaktivitás (könnyen, gyorsan lehessen kipróbálni, módosítani a programokat, mivel a nemhivatásos programozó több hibát ejt), gyors fejlődés. Professzionális nyelvek (Pascal, Prolog 2. része, Modula -2, Ada)

Számítási modell szerint Neumann elvű nyelvek (Neumann elvű számítógép) címezhető, írható-olvasható memória: az adatok

Számítási modell szerint Neumann elvű nyelvek (Neumann elvű számítógép) címezhető, írható-olvasható memória: az adatok és a program a memóriában van, program végrehajtása ⇔ utasítások szekvenciális végrehajtása, változó fogalmának megjelenése, értékadás, adatok beolvasása, kiírása, memóriacímre való ugrás, elágazás, ciklusok szervezése, a mai nyelvek többsége ilyen; pl. Fortran, Pascal, Basic stb. Automata elvű nyelvek végrehajtója (elvben) egy automata (ipari robot, festőautomata, lángvágó), az automata rendelkezik állapotokkal, s az állapotok

 Funkcionális nyelvek pl. Logo. a program egy függvény, a program végrehajtása a függvény

Funkcionális nyelvek pl. Logo. a program egy függvény, a program végrehajtása a függvény kifejtéséből áll, programstrukturálás: függvénykompozíció f ( x ) = g o h ( x ) alternatív függvény f ( x ) = [ g ( x ) ha p ( x ) [h (x) ha nem p (x) rekurzív függvény f ( x ) = [ g ( x ) ha nem p ( x) [ h o f o i (x) ha p (x) nincs memóriacímzés, nincs változó (helyette függvényparaméter van, ez lehet újabb függvény is), nincs értékadás, nincs ciklus, nincs beolvasás (helyette függvényparaméterezés van),

 Logikai nyelvek pl. Prolog. a program egy logikai formula, a program végrehajtása kiértékelése,

Logikai nyelvek pl. Prolog. a program egy logikai formula, a program végrehajtása kiértékelése, a program eredménye: FALSE vagy TRUE ill. azon paraméterek megadása, melyekre a TRUE teljesül, nincs memória, nincs változó, nincs értékadás, nincs beolvasás (helyette paraméterezés van), nincs kiírás, nincs szekvencia, elágazás, ciklus, őket logikai formulákban szereplő "és", "vagy", "nem" műveletek helyettesítik. A program struktúrája: a logikai f ( x ) ha h ( x ) é s g ( x ) -egymás utáni végrehajtás függvény

Felhasználói közelség szerint Gépi kód ez a legalacsonyabb szintű nyelv. Ez az a nyelv,

Felhasználói közelség szerint Gépi kód ez a legalacsonyabb szintű nyelv. Ez az a nyelv, amit a számítógép processzora közvetlenül megért, a gép lehetőségeinek maradéktalan kihasználása (memóriacímek, regiszterek, verem, megszakítások, op. r. változói közvetlenül elérhetők), gépi kódú utasítás (bináris szám).

Alacsonyszintű nyelv Minden gépi kódú utasításnak megfelel egy alacsonyszintű nyelvi utasítás, amelyet azonban már

Alacsonyszintű nyelv Minden gépi kódú utasításnak megfelel egy alacsonyszintű nyelvi utasítás, amelyet azonban már egy szimbolikus elnevezés takar (ezek állhatnak több gépi utasításból is). Adatokat, adatok helyfoglalását, a programkód memóriába helyezését definiáló utasítások megjelenése. Memóriacímek azonosítóval való ellátása, adatok kezdőcímének elnevezése (a rájuk való hivatkozás a változófogalom első megjelenése). elágazás, ciklus szervezhető, de a nyelvnek nem eleme, Kiegészítés: - minden lehetőség kihasználható, amit a hardware nyújt, - változó = kezdőcím (megjelenik a változó fogalma, de még az adatoknak nincs szerkezetük), - azonosító = memória cím neve, - utasítás = azonosító, - feltételes vezérlésátadás, visszatérés, - általában gyorsabb mint egy magas szintű nyelv,

Magasszintű nyelvek magas szintű nyelvek⇔ feladatorientált nyelvek, kifejezés-. változó-. típusfogalom-. elágazás-. ciklus-. eljárás megjelenése,

Magasszintű nyelvek magas szintű nyelvek⇔ feladatorientált nyelvek, kifejezés-. változó-. típusfogalom-. elágazás-. ciklus-. eljárás megjelenése, kiegészítés: faladatorientált, változó memóriatartpményt jelöl, típusfogalom, kifejezések, az algoritmusban felhasznált utasítások a nyelv elemi utasításaival kódolhatók, elágazás, ciklus, értékadás, I/O, eljárások = programegységek,

Compiler illetve interpreter nyelvek Arra utal, hogy egyes nyelvekhez gyakrabban készítenek interpretert (értelmezőprogramot), míg

Compiler illetve interpreter nyelvek Arra utal, hogy egyes nyelvekhez gyakrabban készítenek interpretert (értelmezőprogramot), míg másokat szinte kizárólag compilerrel (fordítóprogrammal) használnak. Procedurális illetve nem procedurális nyelvek Procedurális: a program írásban a megoldó algoritmus leírására törekszik (pl. Neumann-elvű illetve automata-elvű nyelvek). Nem procedurális: a program írásban nem a megoldó algoritmus leírására törekszik; a megoldó algoritmust a nyelv kiértékelési szabálya tartalmazza. (pl. funkcionális és logikai nyelvek)