Kezdőoldal » Számítástechnika » Programozás » Hogyan csinálják a programozás...

Hogyan csinálják a programozási nyelveket? Gépi kóddal?

Figyelt kérdés
Nem akarok prog nyelvet csinálni, tudom, hogy nem könnyű.
2012. jún. 29. 07:35
 1/7 2xSü ***** válasza:
100%
Egy programozási nyelv esetén a fordítót kell ugye megírni. Ennél is számít a sebesség, de azért annyira nem, hogy ne lehetne mondjuk C-ben megírni. Persze a fordító pont gépi kódra fordít, tehát elég erősen ismernie kell hozzá a fordító írójának.
2012. jún. 29. 07:44
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:

Bármilyen nyelven lehet fordítóprogramot írni.

A freepascal fordítót pl. pascalban írták meg és le tudja fordítani saját magát...

2012. jún. 29. 08:35
Hasznos számodra ez a válasz?
 3/7 anonim ***** válasza:
62%

Nem olyan nehéz, mint sokan hiszik.


A fordítóprogramok 2 fő részre bonthatók analízisre és szintézisre.


A analízis során a forrásállományt vizsgálják, itt 3 fok van:


- lexikális elemzés, ennek a feladata, hogy a forráskódot megfelelően részekre bontsa, felismerje a kulcsszavakat és a változókat. (Ezt egyszerűen, reguláris kifejezésekkel, azaz Chomsky 3-as nyelvosztállyal meg lehet csinálni.)


- szintaktikus elemzés, ennek a feladata, hogy felismerje a program szerkezetét és egy megfelelő szintaxisfát építsen. Ugye itt ismeri fel, ha egy "if" nincs lezárva mondjuk és hasonlók. (Ez Chomksy 2, környezet független nyelvtannal lehetséges.)


- szemantikus elemzés, ennek a feladata, hogy a változók "típusait" ellenőrizze. Azaz itt, hogy a program "értelmes"-e, hibát jelez ha mondjuk egy int típusú változónak double értéket adunk. (Ezt környezetfüggő nyelvtannal teszi, azaz Chomsky 1-el.)


Mind a 3 szinten léphetnek fel hibák.


Ezek után jön a szintézis, aminek 2 fokozata van:

- kód generálás, gondolom ez értelemszerű, ez történhet azonnal gépi kódra, vagy akár assembly-re is.


-optimalizálás, ez nem törvényszerű, de hasznos, méret vagy sebesség szerint lehet gyorsítani a kódon. (Optimalizálás akár az elemzett forrásállományon is történhet.



Vannak kifejezetten fordítóprogram írásra eszközök.

Például a flex nevű lexikális elemző, aminek a megfelelő reguláris kifejezéseket megadva legenerál hozzá egy C kódot, ami lexikálisan elemzi az általunk beadott forráskódot. (Egy sima véges determinisztikus automatát generál. Ezt ugye reg. nyelvtanból nem nehéz.)


Valamint a szintaktikus és szemantikus elemzést megkönnyítő bisonc++, ami szintén egyszerűbb utasításokból elő tud állítani egy elemző kódot.

Sőt, ebbe ugye az ember az adott elképzeld prog. nyelv szabályait beadja, ezzel el is készül a szintaktikus elemző, majd ugyan ide adja be a szemantikus értékek ellenőrzésére a kódot, sőt a végén az assembly kód generálás is ide kerülhet!



Bővebb információ: [link]

Mint már írtam, nem olyan nehéz, mint sokan gondolják.

Pl.: Az ELTE IK-n mindenkinek kötelező legalább részben készíteni egyet, a fenti linken található tárgyhoz.

2012. jún. 29. 10:12
Hasznos számodra ez a válasz?
 4/7 _Jessy_ ***** válasza:

"Nem olyan nehéz, mint sokan hiszik. "

hehe :D

Márpedig az elsőt gépi kódban írták, és az bizony nemigen volt könnyű...

Manapság már magasabb szintű nyelveket használnak hozzá, de méd így is eléggé sok munka.

2012. jún. 29. 10:36
Hasznos számodra ez a válasz?
 5/7 _Jessy_ ***** válasza:

#3

Egyébként te melyik nyelvet írtad meg?

2012. jún. 29. 10:38
Hasznos számodra ez a válasz?
 6/7 anonim ***** válasza:

Hogy melyiket?

Ez általános leírás volt. :)

(Ráadásul az a szép, hogy ebből záróvizsgáztam. :) )


A régi időkben minden programok gépi kódban írtak, aztán került elő a ford. programok és jöttek a magasabb szintű nyelvek.

2012. jún. 29. 10:45
Hasznos számodra ez a válasz?
 7/7 anonim ***** válasza:
1958 óta van(nak) magas szintű programnyelvek.
2012. júl. 1. 20:02
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!