Kezdőoldal » Számítástechnika » Programozás » Létezik olyan programnyelv...

Létezik olyan programnyelv amelyik képes futási idő alatt megváltoztatni a forráskódot?

Figyelt kérdés
pl egy gombnyomásra a forráskód teljesen kitörlődne és egy stringből beilleszti az újjat amiben új utasítások vannak létezik ilyen?
2014. máj. 27. 18:07
1 2
 1/13 anonim ***** válasza:

A Java-t tudom említeni.* A Reflection API-val lehet varázsolni hasonlókat, például dinamikusan betölteni lib-eket, osztályokat. Ha ezt megspékeled azzal, hogy melléraksz egy javac-ot (vagy annak megfelelő lib-et), akkor megteheted azt, hogy: 1) kiírsz egy .java fájlt, 2) lefordítod, 3) betöltöd Reflection-el és 4) meghívod a benne levő metódust.


*: Biztosan megoldható más nyelvvel is hasonló működés.

2014. máj. 27. 18:18
Hasznos számodra ez a válasz?
 2/13 anonim ***** válasza:
Szöveges fájl írásra szinte az összes programnyelv képes, hogy lefordítsa és e szerint működjön az bonyolultabb, de nem lehetetlen. A memóriában lévő betöltött programkód átírása alapvetően assembly-ben volt szokás. De java-ban és hasonló virtuális gépi utasításoknál láttam ilyet (saját classloader-rel).
2014. máj. 27. 18:18
Hasznos számodra ez a válasz?
 3/13 anonim ***** válasza:
#1 vagyok, ja igen, ClassLoader kell a betöltéshez. A Reflection az így betöltött osztály metódusainak hívásaihoz fog kelleni.
2014. máj. 27. 18:22
Hasznos számodra ez a válasz?
 4/13 A kérdező kommentje:
köszönöm de közben rájöttem,hogy úgy is megvalósítható,hogy a program egy másik megnyitott Visual Studio ablakban a kódszerkesztőbe bemásolja a kódot majd az egér a debug gomb koordinánáira ugrik és kattint...
2014. máj. 27. 18:23
 5/13 A kérdező kommentje:
bocsi java-hoz semmi közöm(sajnos)
2014. máj. 27. 18:24
 6/13 iostream ***** válasza:
Hogyne létezne. Azt persze nem kötötted ki, hogy az új utasításoknak kell futnia. Fájlszerkesztésre a legtöbb nyelv alkalmas.
2014. máj. 27. 18:37
Hasznos számodra ez a válasz?
 7/13 anonim ***** válasza:

> úgy is megvalósítható,hogy a program egy másik megnyitott Visual Studio ablakban[...]


Hát ja, ez is egy megoldás... csak nem elegáns és nem felhasználóbarát.


> bocsi java-hoz semmi közöm(sajnos)

Semmi baj, nem haragszunk. :D A "semmi közöm(sajnos)" ellen pedig csak te tehetsz. :)

2014. máj. 27. 18:47
Hasznos számodra ez a válasz?
 8/13 anonim ***** válasza:

Minden Turing teljes programozási nyelv képes erre. (Fájl írására és olvasására nem feltétlenül, de ez nem is volt kitétel).


Így vannak a fordítóprogramok, interpreterek, virtuális Turing-teljes gépek, stb. Megvalósítva. Ugyanis a Turing teljességből az is következik, hogy képes szimulálni (nemtriviális módon is) Turing gépet.


Egyébként sok dinamikus nyelvben alapképesség az hogy a program a saját "forráskódját" meg tudja változtatni. Itt a nagy varázslat persze nem a forráskód megváltoztatása, hanem a memóriában lévő, futtatott adatszerkezet megváltoztatása. Ez történhet sokféle módon.


Az egyik ilyen nyelv a Python. A Python nyelvben véges függvénykompozíció sorozattal, vagyis ebből következően egyetlen függvénnyel is átvihető bármilyen, a Python nyelvben létező objektum bármilyen másik, a Python nyelvben létező objektumba.


Vagyis, lehet egy olyan függvényed, ami mondjuk egy függvényt vár paraméterül, majd pedig az átalakítja, kiegészíti a működését, stb. És visszaadja az eredményt.


Ez nem csak elméleti koncepció, hanem egy gyakran használt megvalósítás is a Python nyelvben.

2014. máj. 27. 19:22
Hasznos számodra ez a válasz?
 9/13 anonim ***** válasza:

Hát mi annó mind ilyennel kezdtük a gépi kódú programozást, naná, hogy nem bírtuk kihagyni.


Önmagában egyébként bármelyik compileres programnyelv is megváltoztathatja a saját forráskódját, mert az már nincs zárolva futáskor, csak megadod neki, hol a forrás, és úgy átírja neked, mint a sicc. Csak éppen az nem lesz hatással az éppen futó programra, de ezt nem is kérdezted. :-) Kb. annyira hasznos, mint építeni egy házat, amelyik felrobbantja saját magát.

2014. máj. 28. 07:55
Hasznos számodra ez a válasz?
 10/13 iostream ***** válasza:
Nem, mint építeni egy házat, ami átrajzolja a saját terveit.
2014. máj. 28. 09:53
Hasznos számodra ez a válasz?
1 2

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!