Kezdőoldal » Számítástechnika » Programozás » A következő nyelveket mire...

A következő nyelveket mire használják leggyakrabban?

Figyelt kérdés

A kérdés lehet nem egyértelmű. Arra gondolok, hogy pl a PHP azt weboldalaknál használják, a Javát androidos alkalmazásokhoz, a Cobolt banki dolgokhoz.

C,C++,C#,Python. Ezeket mire?


2016. jan. 31. 16:18
1 2 3
 11/23 anonim ***** válasza:
A JIT fordítás nem interpretálás. Ugyan hasonlít a kettő, de lényegében különböznek. Attól pedig hogy egy nyelv interpretált lehet belőle önálló futtatható fájlt készíteni, hiszen az interpretálás nem azt jelenti hogy külső program segítsége kell a futáshoz. Lásd például a Python freezereket és compilereket. C#-nak a legnagyobb hátránya valóban az hogy a .NET keretrendszer miatt nehéz portolni, de ennek nincs köze ahhoz hogy interpretált e. Sok könyvtár vagy C-hez is ami nem platform független és ez érthető is. Ha valami megkötés van az interpretált nyelvekre akkor az az, hogy nem hardver közeliek, de pontosan emiatt létezik egy halom nyelv: hogy ki tudd választani mire van szükséged. Természetesen assemblyben is meg lehet írni mindent csak nem biztos hogy érdemes.
2016. jan. 31. 17:57
Hasznos számodra ez a válasz?
 12/23 anonim ***** válasza:
0%

De bizony, a JIT fordítás interpretálás.

A kiinduló állományt (forrást) egy vagy több lépésben egy másik forrássá alakítja a fordító. És persze hozzáadja azokat a "jóságokat" amelyek a futtatáshoz szükségesek. Az interpretált forrás kódrésze pedig jellemzően akkor fordul, amikor arra szükség van.


"Attól pedig hogy egy nyelv interpretált lehet belőle önálló futtatható fájlt készíteni, hiszen az interpretálás nem azt jelenti hogy külső program segítsége kell a futáshoz."


De, azt jelenti, hogy adott platformon (x86) natívan NEM FUTTATHATÓ a program.


Az interpreter egy virtuális gép, ezen fut a forráskód, vagy a forrásból készített köztes állomány. Az már másodlagos, hogy a virtuális gép egybe van compilálva a forrással.

A JIT compiler, bár megvalósításában eltér a hagyományos interpreterektől, azonban itt is igaz, a forrás önmagában nem futtatható.

A közös nevező: a szükséges futtatási környezet nélkül egyik sem fog futni.

2016. jan. 31. 18:19
Hasznos számodra ez a válasz?
 13/23 anonim ***** válasza:
0%
Az már másodlagos, hogy a virtuális gép egybe LEHET compilálva a forrással.
2016. jan. 31. 18:28
Hasznos számodra ez a válasz?
 14/23 anonim ***** válasza:

Jó.

És?

2016. jan. 31. 18:28
Hasznos számodra ez a válasz?
 15/23 anonim ***** válasza:

"Az interpreter egy virtuális gép, ezen fut a forráskód, vagy a forrásból készített köztes állomány."


Erre idéznék egyet: "Általános tévhit, hogy a VES/CLR –t virtuális gépként azonosítják. Ez abból a szintén téves elképzelésből alakult ki, hogy a .NET ugyanaz, mint a Java, csak Microsoft köntösben. A valóságban nincs .NET virtuális gép, helyette ún. felügyelt (vagy managed) kódot használ, vagyis a program teljes mértékben natív módon, közvetlenül a processzoron fut, mellette pedig ott a keretrendszer, amely felelős pl. a memóriafoglalásért vagy a kivételek kezeléséért."

2016. jan. 31. 18:41
Hasznos számodra ez a válasz?
 16/23 anonim ***** válasza:

"A .NET Framework alapját a CLI vagyis a Common Language Infrastructure képezi. Ez nem más mint azon szabályok halmaza, amelyek leírnak egy nyelvfüggetlen fejlesztői környezetet, a >>>futtatókörnyezetet<<<, típusrendszert stb."


a VES betűszó ezt jelenti: VIRTUAL Execution System.


"A CLI (korábban MSIL) >>>egy ún. köztes kód<<<. Minden CLI nyelvben megírt program erre a kódra fordítódik le (ellentétben a hagyományos nyelvek natív kódjától)."


Az is ide tartozik persze, hogy ezt a kódot a JIT még lefordítja gépi kódra, de ez az egész folyamat maga: interpretálás. És az is ide tartozik, hogy a keretrendszer nélkül a már - elméletileg - futtatható kód sem életképes.

2016. jan. 31. 19:03
Hasznos számodra ez a válasz?
 17/23 anonim ***** válasza:

Olyan tényeken vitatkoztok amik már le vannak írva.


[link]


[link]


[link]

2016. jan. 31. 19:09
Hasznos számodra ez a válasz?
 18/23 anonim ***** válasza:

@Round Robin

Hiányosak az ismereteid de a Google-t nem próbálod használni. Általánosságban szeretek vitatkozni bizonyos elméleti kérdésben a kollégákkal hiszen mindkét fél tanulhat belőle, de ennek ez esetben nincs értelme. Ahelyett hogy tanulnál valamit is, ugyan azt az ostobaságot szajkózod. Legalább a definíciókkal lennél tisztában.

2016. jan. 31. 19:10
Hasznos számodra ez a válasz?
 19/23 anonim ***** válasza:

Én tisztában vagyok azzal, hogy te mit szeretnél mondani.

Azzal is, hogy a definíciók sok esetben homályosak, ki-ki mást és mást érthet alatta. És azzal is, hogy a viták két ember között nem ritkán ebből adódnak.


Azonban a lényege a kérdésnek mégis az, hogy a C# nem áll meg a saját lábán.

2016. jan. 31. 19:50
Hasznos számodra ez a válasz?
 20/23 anonim ***** válasza:

Igazad van, a C# nem áll meg a saját lábán ahogy sok minden más se. Ebből azonban nem következik az hogy a C# interpretált nyelv. Nekem úgy tűnik nem tiszta számodra a különbség a JIT és az interpreter között.


A JIT csak annyiban különbözik a hagyományos fordítóktól hogy nem futtatás előtt, hanem futtatás közben fordítja le gépi kódra a használni kívánt kód blokkokat. Megtehetnénk futtatás előtt is, de így valós időben tudja optimalizálni a kódot a szükségleteink, erőforrásaink és a platformunk alapján. Ez egy nagyon buta valami ami az adott kódblokkot egy az egyben gépi kóddá alakítja és csak utána futtatja. Ez a kódblokk lehet az egész program, de lehet hogy csak egy osztály metódusa.


Azt interpreternek más a szerepe. Ott nem kódblokkokról hanem utasításokról beszélünk amit értelmeznie kell az interpreternek. A program jelenlegi állapota alapján dönti el hogy mit kell csinálnia az utasításnak, végrehajtja, megváltoztatja a program állapotát és ugrik a következő utasításra. Nagyon nehéz megmondani előre például hogy egy dinamikusan típusos nyelvnél két változó összeadása mit fog eredményezni amíg nem tudjuk mit tárol a két változó vagy egyáltalán melyik névtérben található. Lehet hogy karakterláncokat konkatenálsz, de lehet hogy lebegőpontosokat adsz össze. Nehéz megmondani, de nem lehetetlen.


Tehát a JIT képes egész blokkokat lefordítani előre, míg az interpreter csak egyenként tudja értelmezni az utasításokat. Hasonló, de céljuk és működésük teljesen más. JIT-nek is kell valamiféle értelmező, de attól még nem nevezzük interpreternek az egész megvalósítást.


Olyan pedig nincs hogy egy nyelv interpretált. Egy implementáció lehet interpretált. Jó példa erre a Python, amit már korábban említettem is. Van Pythonhoz compiler ami a Python kódból _NATÍV_ önállóan futtatható állományt készít. Nincs benne interpreter. C# nem futtatható önállóan? Lehet. A legtöbb számítógépes játék sem futtatható ha nincs fönt a DirectX, vagy az ablakos alkalmazások sem futtathatóak az ablakozó keretrendszere nélkül, de még a MinGW-vel fordított C program sem futtatható amíg nincs fönt az MSVCRT (erre nemrég döbbentem rá..). Ezeket összevetve az "az interpretált nyelvek megkötése tömören kb. az, hogy a forráskódból nem lehet natív, önállóan futtatható binárist készíteni" kijelentésed hamis. Ez egyrészről nem megkötés hiszen a programok nagy része amúgy sem fut önállóan, másrészről pedig függ az implementációtól. A C# pedig a fentiek alapján még csak nem is interpretált, bár mindenki nevezheti annak aminek akarja mert az nem változtat a lényegen. Windowson való asztali alkalmazások fejlesztésére használatos és a Windows tartalmazza manapság már alapból a .NET keretrendszert. Nincs épeszű ember aki megpróbálna fejleszteni vele Linuxra.

2016. jan. 31. 21:32
Hasznos számodra ez a válasz?
1 2 3

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!