Chcel by som nadviazať na minulý článok pri ktorom som sa zameriaval na históriu programovacích jazykov ale v tomto článku Vám niečo poviem ako sa delia.
Najprv by som chcel začať tým , že delíme iba jazyky tretej generácie. A tieto jazyky delíme do takých 3 hlavných skupín.
1.Kompilované jazyky
Kompilované ( neriadené ) jazyky majú svoj zdrojový kód v jazyku ,ktorému ľudia dobre rozumejú . Tento zdrojový kód sa samozrejme musí preložiť do strojového kódu , aby ho bolo možné ho na procesore spustiť . Tento preklad zaisťuje prekladač takzvaný kompiler , ktorý preloží naraz celý program do stroj. kódu.
Kompilácia (teda tento typ prekladu ) má tieto výhody:
-
Rýchlosť - Jediné zbrzdenie je v jednorázovej kompilácii (teda v jednorazovom preklade) preložený program potom ide tak rýchlo , ako keby bol napísaný napr. v ASM .
-
Neprístupnosť zdroj. kódu - Program sa šíri už s kompilovaný, nie je ho možné jednoducho modifikovať (meniť) pokiaľ nevlastníte jeho zdroj. kód.
-
Ľahké odhalenie chyb v zdroj. kódu - Pokiaľ zdrojový kód obsahuje chybu, celý proces kompilácie spadne a programátor je s chybou oboznámený.To veľmi zjednodušuje vývoj.
Potom sú tu aj samozrejme nevýhody:
-
Závislosť na platforme - Program je stále závislý na platforme, teda od
typu procesora a od operačného systému. Skompilovaný program nemôžeme
vziať a preniesť na inú platformu bez toho, aby bol na tejto platforme
skompilovaný. -
Nie je možná editácia - Keď sa program raz skompiluje do zdrojového kódu, nemožno ho editovať inak, než opätovnou kompiláciou.
-
Memory management - Vzhľadom na to, že počítač danému programu nerozumie a len mechanicky vykonáva inštrukcie, môžeme sa niekedy stretnúť s veľmi nepríjemnými chybami s pretečením pamäte. Kompilované jazyky zvyčajne nemajú automatickú správu pamäte a sú to jazyky nižšie (s nižším komfortom pre programátora). Behové chyby spôsobené najmä zlou správou pamäte sa pri kompilácii neodhalia.
Príkladom kompilovaných jazykov sú napr. Jazyk C, jeho následník C ++ alebo Pascal / Delphi.
2.Interpretované jazyky
Interpretácia sa snaží riešiť problém s prenosom programov medzi rôznymi platformami a tiež prichádza s vyšším komfortom pre programátora. Interpret funguje podobne, ako kompiler, len neprekladá program celý naraz, ale prekladá len to, čo je v danej chvíli potrebné. (Interpreter znamená v angličtine tlmočník, teda najprv vypočuje jednu vetu hovorcu a tú potom preloží a vysloví. Preklad prebieha počas príhovoru, teda behu programu, po vetách / inštrukciách. Kompiler / prekladač preloží rozhovor celý naraz a potom ho celý prečíta.).
Aké môže mať teda tento postup výhody? Je ich hneď niekoľko:
- Prenositeľnosť: Program je plne prenositeľný, ak existuje interpret pre danú platformu, pôjde tam zdrojový kód programu spustiť.
- Jednoduchší vývoj - V tom to jazyku sme odrezaný od správy pamäte, ktorú za nás robí tzv. Garbage collector . Často tiež nemusíme ani zadávať dátové typy a máme k dispozícii vysoko komfortné kolekcie a ďalšie štruktúry.
- Stabilita - Vďaka tomu, že interpret kódu rozumie, predíde chybám, ktoré by skompilovaný program inak pokojne vykonal. Beh interpretovaných programov je teda určite bezpečnejšie.
- Jednoduchá editácia - Program môžeme vyvíjať po častiach a nahrávať na cieľové umiestnenie, vďaka tomu, že sa nemusia kompilovať, ho je možné jednoducho editovať "za behu.
Interpret má tri veľké nevýhody:
- Rýchlosť - Interpretácia môže byť mnohokrát veľmi pomalá a program tak plne nevyužíva výkon počítača.
- Často ťažké hľadanie chýb - Vďaka kompilácii za behu sa chyby v kóde objaví až v tú chvíľu, kedy je kód spustený. To môže byť niekedy veľmi nepríjemné.
- Zraniteľnosť - Pretože sa program šíri v podobe zdrojového kódu, každý do neho môže zasahovať alebo kradnúť jeho časti.
Príkladom interpretovaného jazyka je napr. PHP. Na väčšine webov ten pomerne pohodlný jazyk výkonovo stačí, ale napríklad Facebook používa špeciálny kompilované verziu PHP, záujemcovia nech sa pozrú na projekt HipHop for PHP.
Jazyky s virtuálnym strojom
Napadlo vás, čo by sa stalo, keby sa obaja dva vyššie zmienené spôsoby spojili? Ak áno, gratulujem, vynašli ste virtuálny stroj. Jedná sa o najmodernejšiu podobu jazyka, ktorá je v súčasnej dobe tiež najrozšírenejšia a je najlepšou voľbou pre vývoj väčšiny aplikácií. Nebudem tajiť, že do tejto kategórie spadá samotný C # alebo Java.
Zdrojový kód je najprv preložený do tzv. Mezikódu, ktorému Microsoft hovorí CIL. Jedná sa v podstate o strojový (binárny) kód, ktorý má ale o poznanie jednoduchšiU inštrukčnú sadu a priamo podporuje objektové programovanie. Tento mezikód je potom vďaka jednoduchosti relatívne rýchlo interpretovateľný tzv. Virtuálnom strojom Výsledkom je strojový kód pre náš procesor.
tým to spôsobom sme odstránili nevýhody interpreta i kompileru a môžeme využívať mnohé z ich výhod:
- Málo zraniteľný kód - Aplikácia sa šíri ako zdrojový kód v CIL, nie je teda úplne jednoducho ľudsky čitateľná.
- Slušná rýchlosť - Rýchlosť sa u virtuálneho stroja pohybuje medzi interpretom a kompilerem. Virtuálny stroj už výsledky svojej práce po použití nezahadzuje.
- Jednoduchý vývoj - Máme k dispozícii dátové štruktúry a knižnice, správu pamäte za nás vykonáva Garbage Collector.
- Stabilita - Vďaka tomu, že interpret kódu rozumie, zastaví nás pred vykonaním nebezpečnej operácie a na chybu nás upozorní.
- Odhalenie chýb v zdrojovom kóde - Vďaka kompilácii do CIL jednoducho odhalíme chyby v zdrojovom kóde.
- Prenositeľnosť - Asi je jasné, že hotový program pobeží na každom železe, na ktorom sa nachádza virtuálny stroj. To ale nie je všetko, my sme dokonca nezávislí aj na samotnom jazyku. Na jednom projekte môže robiť viac ľudí, jeden v C #, druhý vo Visual Basic a tretí v C ++. Zdrojové kódy sa potom vždy preloží do cieľov.
Jazyky s virtuálnym strojom je objektovo orientované programovanie a jedná sa o súčasný vrchol vývoja v tejto oblasti. Existujú aj jazyky 4. a 5. generácie, ale tie majú špecifické použitie(sám neviem aké).