Honnantól lesz egy programnyelv alacsony szintű?
Mik tartoznak az alacsony szintűbe? Létezik középszintű, vagy olyan, ami többe is sorolható?
Mitől lesz magasszintű? Egy magasszintű nyelv mindenképpen lassú kell, hogy legyen?
C++ például középszintű.
C alacsony szintű
Python, Java, C# pedig magasszintű.
Általában lassabbak igen, mert ezeknél a nyelveknél tovább tart a fordítás, erőforrásigényesebb, és több állapotváltozás során éri csak el a gép kód szintjét. Ez sokkal hamarabb megtörténik egy C esetén.
Igazából erre nincs is egyértelmű definíció, és nincs is igazán határ, de sok írás van a szakirodalomban.
Kérdés, hogy az assemblyt hova lehet ilyenkor sorolni.
És pl az első kettő példa esetén, a két programnyelv kb. azonos sebességű, mégis az egyik magasabb szintű. Pl lehetne olyan magas szintű nyelv is, ami olyan gyors, mint az alacsony szintű?
Ez relatív. Mármint, mi a magas vagy alacsony.
Szerintem ott lehet megfogni, hogy van-e lehetőséged közvetlen RAM vagy CPU-t elérni nyelvi eszközök által és nem egy közbenső API által.
Assembly alacsony szint, mert ott direkt CPU regisztereket címzel és minden parancsnak meg van a saját byte alapú utasítása. Más szóval az ASM a hexadecimálok szimbólikus formálya.
C nyelv ASM-re is fordul (biuld folyanat, de ASM-re is gordítható). Ha durván akarunk fogalmazni, akkor a C az ASM olvashatóbb formálya.
C++ is alacsony szint (nem közép), mert háttérben objektumok nincsenek, ahogy láthatóságok se futás időben, csak nyelvi elemekben. Továbbá lehet ASM-ben is írni (meg kijátszani a láthatóságot is). De mindenért te vagy a felelős, ezért is alacsony.
Rust egy kakuk tojás, mert alacsony, de még is egy elég hard memória menedzsmentel rendelkezik. Nagyon én se ismerem ezt.
Innentől, hogy compile vagy interpreter, magasnak számítanak, ha nyelv eleve a "segged alá tesz sokmindent". Pl. Szemét gyűjtés (lásd: GC), szál menedzsment, folyamat megszakítások (lásd: Coroutine (Kotlinban) vagy Goroutine (Go-ban))
Az, hogy melyik magas nyelv milyen gyorsan fut az már az adott nyelv történetéhez, megvalósításához tartozik és ne felejdük, hogy mire használjuk.
Az, hogy lehet olyan gyors egy magas szintű, mint egy alacsony? Határozottan: Nem! Mert míg az alacsonynál csak az fut le, amit Te írtál direktben, addig a magas szintűeknél további kódrészek adódnak hozzá (ami nyilván le kell ugyanúgy futnia), hogy támogassa a magas nyelvi elemeket és eszközöket. Mint pl. a szemét gyűjtést.
#3.A chatGPT is közepes nyelvnek tartja a C++-t, meg sokan is.
De ez vitatott. Alapvetően a C++ egy svájci bicska, ha akarod lehet magas szintű, ha akarod alacsony szintű is.
Ebben a kérdésben nincsenek egzakt határok.
"Kérdés, hogy az assemblyt hova lehet ilyenkor sorolni"
Mondjuk ez azért elég egyértelmű.
Van egzakt válasz.
Az assembly alacsony szintű nyelv, és minden más nyelv az, ami csak elemi adattipusokkal és olyan utasítás-készlettel dolgozik, aminek elemei egyazon alacsony absztrakciós szinten valósítják meg a feladataikat.
A c++ már struktúrált, OOP támogatott nyelv, az magas szint.
A C mid level nyelv, híd az assembly és a magas szintű nyelvek között.
A BASIC, PASCAL, PYTHON, JAVA mind magas szintű nyelv.
a 4G nyelvek meg pláne mind magas szintű nyelvek.
Egy programnyelv alacsony vagy magasszintű minősítése a programozási absztrakció szintjét jelzi. Az alacsony szintű nyelvek közelebb állnak a gépi kódhoz, míg a magasszintű nyelvek absztraktabbak és közelebb vannak az emberi nyelvhez.
Az alacsony szintű programnyelvek közé tartoznak például az assembly nyelvek, amelyek nagyon közel állnak a processzor által értelmezhető gépi kódhoz. Az assembly nyelvekben közvetlenül meg lehet adni a processzor műveleteit és regisztereit, de a programozás nehézsége miatt ritkán használják a fejlesztők általános célú alkalmazások fejlesztésére.
A magasszintű programnyelvek közé tartoznak olyan nyelvek, mint például a C, C++, Java, Python és sok más. Ezek a nyelvek magasabb absztrakciós szintet biztosítanak a fejlesztőknek, ami lehetővé teszi számukra, hogy az emberi gondolkodáshoz közelebbi módon fejezzék ki az algoritmusokat és a feladatokat. Az ilyen nyelvek általában sok beépített funkcióval, adatszerkezetekkel és magas szintű műveletekkel rendelkeznek, amelyek megkönnyítik a fejlesztést és növelik a termelékenységet.
A programnyelveket középső szintűnek is tekinthetjük, amelyek valahol az alacsony és magas szintű nyelvek között helyezkednek el az absztrakciós szint tekintetében. Ilyen például a C nyelv, amely lehetővé teszi az alacsony szintű műveletek közvetlen kezelését, ugyanakkor magasabb absztrakciós szintű konstrukciókat is nyújt.
Az absztrakciós szint önmagában nem határozza meg a nyelv sebességét vagy hatékonyságát. A magasszintű nyelvek általában absztrakciókat és automatikus memóriakezelést használnak, amelyek bizonyos esetekben lassabbak lehetnek az alacsony szintű nyelvekhez képest. Azonban a modern magasszintű nyelvekben található optimalizációs technikák és a fejlesztők által alkalmazott kódoptimalizáció lehetővé teszi, hogy hatékony és gyors alkalmazásokat hozzunk létre magasszintű nyelvekkel is.
nem tudom, én a szintjét nem a legmagasabb szintjével, hanem a legalacsonyabbal közelíteném meg.
tehát, ha a C++-ban vannak nagyon alacsony nyelvi elemek, akkor az alacsony, Akkor is, ha magas szinten is lehet programozni.
Hiszen az alacsony nyelvhez lehet könyvtárat írni, ami után már magasabb szintű lesz.
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!