Azok a programok amik nem . NET alatt futnak azok hogy és mivel futnak?
Na jó, menjünk bele.
Kezdetben volt a gépi kód. Amiben elég bonyolult volt egy kicsit összetettebb programot írni. És rájöttek, hogy ez így nem jó. Azt kell erről a gépi kódról tudni, hogy ez az a nyelv, amit ha beadagolsz a gépednek, azt közvetlenül meg fogja érteni. Mintha valaki neked magyar nyelven magyarázna, mint ahogy most én teszem neked.
Mivel szar volt gépi kódban fejleszteni, kitaláltak olyan nyelveket, amikre ha az ember ránéz, megérti, hogy mi áll ott, anélkül, hogy minden egyes sornál bújnia kellene egy pár ezer oldalas irományt. Így lettek olyan nyelvek, amelyeken ha írnak egy programot:
1) egy fordító gépi kódot állít belőle elő - mintha te kapnál egy angol nyelvű irományt, és azt mondják neked, hogy írd le egy másik lapra, hogy mit jelent magyarul. Ha egy magyar ember el akarja olvasni, elég egyszer lefordítanod, és a magyar példányt annyiszor használják, ahányszor akarják.
2) amit ha elindítanak, egy értelmezőnek nevezett program fogja a forrásfájlt és sorról sorra hajtja végre a vele ekvivalens gépi nyelvű műveletet - mintha te egy szinkrontolmács volnál, valaki pofázik angolul, és azon nyomban tolod át magyarra. Ha valaki ugyanazt akarja hallani még egyszer, megint elkezd az angol pofázni, és te megint fordíthatod magyarra.
Az elsőhöz általában nem kell túl sok dolog, a "gond" általában a másodikkal van. Merthogy ha te odaadod valakinek a programodat, neki szintén fent kell lennie annak az értelmezőnek.
Persze van egy kis csavar, amit a 2) esettel el tudnak követni. Ők azt mondják, hogy képzeljünk el egy teljesen egyedi virtuális processzort (ami valójában szintén az értelmező elvén működik), ami fejlettebben tud működni, mint amit a technológiával fizikailag meg tudunk valósítani. Ez a virtuális processzor megérti az Y nyelvet. A trükk az, hogy a programot továbbra is X nyelven írjuk, szóval valami ilyesmi lesz belőle:
1) Az X nyelven írt programot Y nyelvűre fordítja a fordító. Ha te odaadod valakinek a programot, ezt az Y nyelvű valamit adod oda.
2) Ha valaki elindítja az Y nyelvű programodat, a virtuális processzor utasításról utasításra elkezdi végrehajtani a fizikai processzorodon a vele ekvivalens utasításokat.
Például, ha te írsz C# nyelven egy programot .NET-re, akkor az fog történni, hogy a fordító a C# nyelvű szöveget CIL (Common Intermediate Language) nyelvűre fordítja. Szóval az EXE fájl, amit kapsz, CIL nyelvű utasításokból áll. Itt jön be a .NET "virtuális processzora", a CLR (Common Language Runtime), ami ezt értelmezi és végrehajtja.
Java-val hasonló a helyzet.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!