Kezdőoldal » Számítástechnika » Programozás » A középszintű programnyelvek...

A középszintű programnyelvek (pl C++, Pascal) zöme assemblyben, és/vagy gépi kódban íródott, vagy gyakoribb az egymástól alapvetően eltérő nyelvek közötti cross-compiler megoldás? Vagy több nyelv kombója által készültek? Vagy szinte csak assemblyben?

Figyelt kérdés

Különösen a középszintű és általános célú nyelvek esetén érdekel mint C, C++, Pascal.


A félreértés elkerülésére jelzem:

alapvetően NEM a compiler illetve interpreter megoldások módjaira vonatkozik a kérdésem, hanem hogy pl aki feltalálta a Pascal nyelvet, miben írta meg? Assembly-ben? Gépi kódban? Máshogyan nem tudom elképzelni, mint ezek egyikében, vagy mindkettőben, esetleg jellemzőbb, hogy assembly ill gépi kód mellett inkább korábbi középszintű nyelvek evolúciója / továbbfejlesztése a jellemzőbb?


Elsősorban tehát általánoságban a középszintű és alacsony szintű nyelvekről szól a kérdésem, nem csak a Pascal-ról.


(Mellékkérdés: a magas szintű nyelvek mint pl a basic illetve fortran változatai: a gépi kód és assembly mellett -vagy helyett?- inkább más nyelvek által íródtak, utóbbiak továbbfejlesztése gyanánt? Ez mennyire általános vajon, ezeknél?)



márc. 8. 17:48
1 2
 11/18 anonim ***** válasza:
60%

De egyébként manapság nem igazán használják az assemblyt ilyesmire. Egyrészt, mert vannak jól használható, kiforrott eszközök (pl. a már említett OCAM, másrészt az assembly nem valami gyógyszer, amiből ha naponta kettőt bevesznek, akkor gyors lesz a kód. Assembly-ben is lehet rossz kódot írni, ugyanakkor ha valaki alaposan ismeri mondjuk a C nyelvet, tud olyan kódot írni, ami lehet annyira gyors, mint egy assembly kód.

Ráadásul a mai fordítók olykor hatékonyabb gépi kódot generálnak magasabb szintű programnyelvből, mint amit egy assembly programozó meg tud írni.

márc. 8. 21:28
Hasznos számodra ez a válasz?
 12/18 A kérdező kommentje:

#10

"ezen nyelvek (B, BCPL, NB, C) fordítása úgy történt, hogy egy nagyon minimális assembly fordító lefordította a nyelv egy részhalmazát, épp annyit, amennyi elég volt ahhoz, hogy a nyelv onnantól self-hosted legyen."


Pontosan ez volt a sejtésem. Hiszen amikor még semilyen programnyelv nem létezett assembly-n ss gépi küdon kívül, akkor nyilván csak ezekben lehetett megírni prg-nyelveket.

Ezért vetettem fel, hogy talán idővel kominálták a nyelveket, újabb nyelvek létrehozásához (kvázi "evolúciósan").


#11 igen, erről olvastam, hogy idővel a processzorok architektúrája egyre inkább alkalmazkodott a középszintű nyelvek szerkezetéhez, ezért egyes esetkben C-ban hatékonyabb megoldás kivitelezhető, mint akár assembly-ben.

márc. 8. 21:42
 13/18 anonim ***** válasza:
69%

Te nagyon el vagy tévelyedve.

A programnyelveket nem írják semmiben.

Egy programnyelv az egy szabályhalmaz és kész.


Adott programnyelvnek csak a fordítóját, interpreterét írják valamilyen nyelven.

Amúgy, a borland pascal fordítója pl. 100 % assemblyben lett lefejlesztve.

A delphi korai verziói is nagyon sok asm kódrészt tartalmaztak.


A legtöbb nyelv fordítóját C-ben írták, mert a nyelv alkalmas volt rá és mert elég gyors lett a produktum, ami a régi gépeken még elsődleges szempont volt.

Az összetettebb programok a korai 5-16-25-40 MHz-es gépeken elég lassan, perceken át fordultak. Egy linux kernel fordítása 100 MHz-es 486-os gépen akár egy óráig is eltartott.

márc. 9. 04:52
Hasznos számodra ez a válasz?
 14/18 anonim ***** válasza:
0%

Megvan!


A programnyelveket BNF-ben, vagy EBNF-ben írják!

márc. 9. 04:55
Hasznos számodra ez a válasz?
 15/18 anonim ***** válasza:
50%

"Assembly-ben is lehet rossz kódot írni, ugyanakkor ha valaki alaposan ismeri mondjuk a C nyelvet, tud olyan kódot írni, ami lehet annyira gyors, mint egy assembly kód."


Ez feladatfüggő, plusz a fordítótól is függ.

Sima egymenetes C fordító elég shit kódot tud generálni, de az benne a jó, hogy asm kimenet generálódik, amit aztán lehet kézzel optimalizálni.


"Ráadásul a mai fordítók olykor hatékonyabb gépi kódot generálnak magasabb szintű programnyelvből, mint amit egy assembly programozó meg tud írni."


Ez meg hülyeség. A legjobban optimalizáló fordítók is nagyon korlátosak egy jó programozóhoz képest, mert a fordítók optimalizációs rutinjai sem képesek minden lehetőséget kihasználni, de az ember igen.

márc. 9. 05:02
Hasznos számodra ez a válasz?
 16/18 anonim ***** válasza:
35%

Apropos, BASIC!


Az első kereskedelmi basic-et, 8 bites mikrogépre, a Microsoft-os Bill Gates írta, 100 % assembly-ben, ráadásul papírra, 19 évesen.

Nem volt sem assemblere, sem gépe. Az Altair 88 00-át, amin később a basic futott, egy barátja emulálta le, egy PDP 10-es, három szekrény méretű gépen.

Az emulátor kb ötször lassabb volt a natív gépnél. Az Altair-ban intel 8080-as processzor dolgozott és legalább 4 kB memória kellett a basic futtatásához.

A procihoz volt egy doksija, ami tartalmazta az utasításkészletet és hozzá az opkódokat.

Akkoriban a programokat megírták asm-ben, de papírra és utána soronként lefordították gépi kódra, amit azután be kellett írni a gépbe (olykor mérnöki pulton) és onnan kimenteni valami adathordozóra a binárist.

Nagyon durva lehetett. Én apple I-et emuláltam (PC-n), amihez már volt billentyű, meg minden, benne futott az assembler/monitor, de még így is totál fapad volt.

Akkoriban tényleg csak a nagyon lelkesek maradtak hosszú távon gépközelben.

márc. 9. 05:20
Hasznos számodra ez a válasz?
 17/18 anonim ***** válasza:
45%

#12


"Pontosan ez volt a sejtésem. Hiszen amikor még semilyen programnyelv nem létezett assembly-n ss gépi küdon kívül, akkor nyilván csak ezekben lehetett megírni prg-nyelveket."


Igen, de ahogy írtam, a nyelv csak egy kis subsetjét volt szokás megírni assemblyben, magasabb rendű dolgokat nem. A kezdeti C egyébként is nagyon primitív volt, egy rakat dolog nem volt benne, ami később a nyelv része lett (char típus, long típus, többszörös pointer indirekció, for ciklus, stb.).

márc. 9. 08:03
Hasznos számodra ez a válasz?
 18/18 anonim ***** válasza:
Ez nagyon egyszerű! Minél gyorsabban fut az adott programnyelven írt, lefordított program, annál több benne az Assembly-kód.
ápr. 10. 21:29
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!