Home
Strojovo orientované jazyky
Strojový kód
Jazyky symbolických adries
Assembler
Home
»
Jazyky symbolických adries
»
Porovnanie s VPJ
Porovnanie s vyššími programovacími jazykmi
Už som spomenul aj v predchádzajúcich častiach analýzy určité porovnania týchto dvoch tried programovacích jazykov, teraz toto porovnanie skompletizujem a popíšem výhody a nevýhody oboch tried. Na základe porovnania vyvodím aj záver, ktorý bude spočívať hlavne v tom, kedy siahnuť po VPJ a kedy skôr po SOJ.
Prehľadnosť kódu
Jazyky symbolických adries
JSA pracujú priamo s inštrukciami procesorov. Vo všeobecnosti sú tieto inštrukcie veľmi jednoduché a keď chceme naimplementovať zložitejšiu operáciu napríklad kopírovanie reťazcov, musíme ju naimplementovať ako postupnosť mnohých jednoduchých inštrukcií.
Vyššie programovacie jazyky
VPJ majú integrované knižnice, v ktorých sú už dopredu napísané podobné procedúry. Napríklad v jazyku C by nám stačila jednoduchá funkcia strcpy(), ktorá sa nachádza v hlavičkovom súbore string.h a problém by sme naimplementovali inštrukciou na 1 riadok. Funkcie majú väčšinou výstižný názov a kód je veľmi dobre čitateľný aj pre lajika.
Zaujímavosť
Tento problém s neprehľadnosťou a dĺžkou kódu sa pokúsili vyriešiť výrobcovia procesorov. Vymysleli CISC architektúru procesorov s veľmi obsiahlou inštrukčnou sadou. To znamená, že tie zložité funkcie, ktoré majú VPJ napísané v knižniciach boli priamo integrované do mikroprocesorov a priamo spustiteľné aj v JSA. Od tejto idey sa ale upustilo, pretože sa veľmi zvyšovali nároky na procesor, išlo to aj na úkor efektivity programov, pretože kvôli veľkým inštrukčným sadám bolo menej dostupných registrov.
Víťaz: Vyššie programovacie jazyky
Zložitosť syntaxe
Jazyky symbolických adries (JSA)
JSA väčšinou pracujú len s malým množstvom základných inštrukcií, ktoré vhodne kombinujú. Kódy sú síce dlhé ale naučenie syntaxe je veľmi jednoduché, pretože inštrukcií je málo a ich formát je pomerne jednotný.
Vyššie programovacie jazyky (VPJ)
Ako som spomenul vyššie, VPJ spolupracujú s knižničnými funkciami, ktorých je veľmi veľa. Okrem toho sa používajú aj pokročilé konštrukcie ako cykly, podmienky atď.. Keď sa to zráta dokopy, je takmer nemožné sa do detailov naučiť syntax VPJ a často krát si musíme pomáhať manuálmi.
Zaujímavosť
Určité prvky syntaxe VPJ začali postupne preberať aj JSA. Vznikali totiž assemblery vyššej úrovne, ktoré umožňovali preklad napríklad zložitejších štruktúr typu IF, FOR, WHILE atď...
Víťaz: Jazyky symbolických adries
Rýchlosť vykonania programu
Jazyky symbolických adries (JSA)
Keďže strojový kód je vlastne len presnou interpretáciou toho, čo napíše programátor v JSA, je predpoklad, že tento kód môže byť tak dobre napísaný, že pobeží až 20x rýchlejšie ako pri VPJ, v extrémnych prípadoch až 100x.
Vyššie programovacie jazyky (VPJ)
Za strojový kód, ktorý vykoná procesor je zodpovedný kompilátor. Kompilátor je len softvér a aj keď preloží program, takmer s určitosťou môžeme povedať, že by vzniknutý strojový kód mohol byť napísaný lepšie. Môžeme si to predstaviť ako bežný prekladač medzi jazykmi, slová sa síce preložia správne ale vety majú často divnú štruktúru.
Víťaz: Jazyky symbolických adries
Rýchlosť napísania programu
Jazyky symbolických adries (JSA)
Tu sa jasne ukazuje nevýhoda toho, že JSA používajú len zopár inštrukcií procesorov, nemajú k dispozícií žiadne knižničné funkcie a kódy sú dlhé a časovo náročné na implementáciu.
Vyššie programovacie jazyky (VPJ)
Aj napriek tomu, že existencia množstva knižničných funkcií pri VPJ, sťažuje naučenie sa syntaxe, bohate to vynahradzuje tým ako uľahčuje programovanie. Kódy sú kratšie a oveľa menej časovo náročné na implementáciu ako JSA.
Víťaz: Vyššie programovacie jazyky
Efektivita
Jazyky symbolických adries (JSA)
Efektivita súvisí s rýchlosťou vykonania programu. Okrem toho ale závisí aj od toho ako sa využíva pamäť. Na efektivitu vplýva aj to, koľko pamäte sa využije pri prekladaní programu. Assemblery spotrebujú málo pamäte, niekoľko kB.
Vyššie programovacie jazyky (VPJ)
Vyššie programovacie jazyky nevyužívajú pamäť práve najefektívnejšie. Okrem toho samotná kompilácia zaberie veľa pamäte, oveľa viac ako assemblery.
Zaujímavosť
Exitujú inteligentné kompilátory, ktoré dokážu zredukovať použitie pamäte, znížiť čas vykonávania programu, ale tieto kompilátory sú o veľa väčšie ako bežné a pri kompilácií sa vyžaduje viac pamäte.
Víťaz: Jazyky symbolických adries
Funkcionalita programov
Jazyky symbolických adries (JSA)
JSA umožňujú prístup k úplne všetkej funkcionalite procesora. Preto sa dajú využiť aj na programovanie jadra operačných systémov alebo ovládačov zariadení, kde je potrbné využiť naozaj všetkú funkcionalitu hardvéru.
Vyššie programovacie jazyky (VPJ)
Kompilátory robia mnoho vecí za programátora a VPJ nepúšťajú programátora k určitým inštrukciám procesorov.
Víťaz: Jazyky strojových inštrukcií
Prenositeľnosť programov
Jazyky symbolických adries (JSA)
JSA sú priamo závislé od inštrukčnej sady, registrov procesorov, taktiež od operačného systému, ktorý ponúka rôzne prerušenia a systémové volania využívané v programch. Z toho vyplýva, že prenositeľnosť programu stým, že kód len preložím na novej platforme alebo architektúre procesora je takmer nereálna.
Vyššie programovacie jazyky (VPJ)
Keďže samotný kód nemá nič spoločné s inštrukciami procesora alebo registrami, je prenositeľnosť bezproblémová. O všetko sa postará kompilátor daného programovacieho jazyka.
Víťaz: Vyššie programovacie jazyky
Údržba
Údržba je časovo najnáročnejšia časť vývoja softvéru. Zaberie oveľa viac času ako implementácia.
Jazyky symbolických adries (JSA)
Keďže kódy sú dlhé aj pri jednoduchých aplikáciach, pri dlhších aplikáciach by bola údržba veľmi problematická.
Vyššie programovacie jazyky (VPJ)
Kým pri údržbe kódu vo VPJ by bolo potreba zmeniť jednu inštrukciu na 1 riadok, táto istá zmena by si vyžiadala niekoľko riadkov kódu vo VPJ. Je to dôsledok toho, že VPJ využívajú knižničné funkcie a pre údržbu (hlavne veľkých aplikácií) sú určite oveľa vhodnejšie.
Víťaz: Vyššie programovacie jazyky
Nároky na vedomosti
Jazyky symbolických adries (JSA)
Tu sa kladie dôraz na vedomosti harvérové. Teda programátor musí poznať registre, ich použitie, možnosti adresovania.
Vyššie programovacie jazyky (VPJ)
Vo vyšších programovacích jazykoch harvérové záležitosti rieši kompilátor. Ale syntax VPJ je odosť zložitejšia.
Víťaz: remíza
Prínos pre programovanie
Jazyky symbolických adries (JSA)
Hardvérové znalosti, ktoré nadobudne programátor pri JSA sú všeobecne využiteľné. Programátori JSA uvažujú pred každou inštrukciou o efektivite, pamäťovej náročnosti, pretože každá inštrukcia, ktorá je vykonaná procesorom, musí byť programátorom aj napísaná.
Vyššie programovacie jazyky (VPJ)
Vo VPJ dokáže programovať mnoho ľudí. Zdalo sa, že VPJ úplne vymaže zo sveta JSA. Ale ukázalo sa, že efektivita kódov je hlavne pri veľkých aplikáciach rozhodujúca. Efektivita kódu vyplýva zo znalosti hardvéru, ktorú majú JSA programátori vo všeobecnosti lepšiu. Aj preto najlepšími programátormi vo VPJ sú programátori, ktorí ovládajú JSA.
Zaujímavosť
Víťaz: Jazyky symbolických adries
Kompromis
Ako vidíme obe triedy jazykov majú svoje výhody pri určitom využití. Preto je logické, že ich skombinovaním by sa dal dosiahnuť ideálny kompromis medzi efektivitou, prístupom k HW a prehladnosťou a krátkosťou kódu. Niektoré VPJ totiž podporujú tzv. vkladaný assembler. Reč je napríklad o C++ (Borland, Visual), v ktorom si môžeme vymedziť bloky, kde narábame s registrami AX,BX,CX,DX a prakticky využívame možnosti JSI. Nižšie uvádzam vzorový kód.
Obr.1 Vnorený JSA kód, ohraničený ako asm{...} v C kóde
Odkazy na stránky s podobným zameraním
Knaggs, Peter: ARM:Assembly language programming(strany 20-25)
http://www.arm.com/miscPDFs/9658.pdf
Thornley, David: Assemblers vs. Compilers
http://www.visi.com/~thornley/david/squirrel/squirrelasm.html
High-level vs. assembly language
http://www.cs.uiowa.edu/~ghosh/1-22-09.pdf
Základný popis
Vývojové prostredia
Využitie
Porovnanie s VPJ
Rýchle linky
» FIIT
» Fórum
» Môj profil
Počítadlo návštev
Anketa
BlueBoard.cz
Slovník skratiek
JSA
- jazyky symbolických adries
VPJ
- vyššie programovacie jazyky
CPU
- procesor
ISA
- inštrukčná sada
ASM
- assembler
OS
- operačný systém
Diskusia
ShoutBoard od BlueBoard.cz