Preštudujte si: Programovacie jazyky

Portál: amos.ukf.sk
Kurz: Programovanie 1
Kniha: Preštudujte si: Programovacie jazyky
Vytlačil(a): Hosťovský používateľ
Dátum: štvrtok, 21 novembra 2024, 16:45

Opis

Popíšeme si v skratke čo sú to programovacie jazyky, aké typy poznáme a fnguje proces zápisu a prekladania programu.

Programovacie jazyky

Algoritmus a algoritmizácia sú určitým medzikrokom medzi zadaním problému a jeho vyriešením na počítači. Pomocou algoritmu dokážeme vyriešiť problém my, no takmer vždy ho potrebujeme preložiť do jazyka počítača (alebo iného stroja či človeka), ktorý poveríme jeho riešením.

Na komunikáciu s akýmkoľvek zariadením schopným vykonávať algoritmy potrebujeme jazyk. Vzhľadom na to, že počítač je napriek svojim neobmedzeným schopnostiam predsa len obmedzený, je aj jazyk, pomocou ktorého mu vydávame príkazy, relatívne chudobný. Obsahuje niekoľko desiatok až stoviek jednoduchých príkazov a inštrukcií, do ktorých transformujeme vytvorený algoritmus. Tento jazyk sa nazýva programovací jazyk a predstavuje vlastne formalizáciu algoritmického jazyka do takej podoby, aby ju bolo možné ďalej spracovať a prostredníctvom prekladača (pozri ďalej) preložiť do strojového kódu (jazyka procesora), ktorý dokáže procesor prostredníctvom svojej inštrukčnej sady zrealizovať.

Činnosť, ktorú vykonávame pri zápise algoritmu do programovacieho jazyka,  označujeme ako programovanie a kedysi predstavovala jednu z najnáročnejších myšlienkových činností – v súčasnosti ju uľahčuje množstvo podporných prostriedkov a techník a tak možno povedať, že programovanie už nie je umením, ale často len remeslom.

Postup realizácie riešenia problému na počítači: problém – algoritmický jazyk – programovací jazyk – jazyk procesora (strojový kód , aplikácia)

Program sme doposiaľ chápali len ako súbor (uložený na disku počítača), ktorý obsahuje inštrukcie, podľa ktorých dokáže procesor pracovať – iným slovom aplikáciu, ktorá je uložená v tvare strojového kódu.
Pokiaľ sa však začneme pozerať na program z pohľadu programovania, zahŕňa tento pojem aj postupnosť príkazov (či už v podobe súboru alebo len napísanú na papieri či tabuli) nejakého programovacieho jazyka, ktoré môžu byť do podoby strojového kódu preložené.

pozor
Súboru obsahujúcemu nám zrozumiteľné príkazy hovoríme zdrojový kód, pretože je zdrojom, z ktorého sa môže vytvoriť aplikácia.

Ak chceme v nejakej aplikácii robiť zmeny (napr. sa nám nepáči farba pozadia), potrebujeme ich vykonať v zdrojovom kóde. Teoreticky je možné urobiť zmeny aj v preloženej aplikácii, avšak takéto krkolomné kúsky dokáže len málokto.

Programovanie v širšom slova zmysle pozostáva z troch základných fáz:
  • algoritmizácia predstavuje premyslenie algoritmu, prípadne jeho textový alebo grafický zápis,
  •  prepis algoritmu do počítača spočíva v prepísaní algoritmu do inštrukcií programovacieho jazyka, pričom treba algoritmus prispôsobiť špecifickosti toho-ktorého jazyka. Program okrem inštrukcií obsahuje rôzne nastavenia a prispôsobenia, popis premenných a ošetrenie chýb, ktoré môžu nastať,
  •  ladenie a testovanie programu je poslednou fázou a zahŕňa v sebe hľadanie chýb spôsobených nedokonalosťou programátora, testovanie a kontrolu správnosti výsledku.

Niektorí „tiežprogramátori“ sa snažia prvú (niekedy aj poslednú) fázu vynechávať. Programovať začnú priamo do počítača, často nielen bez predchádzajúcej prípravy, ale aj bez premyslenia postupu. Čas, ktorý ušetria vynechaním algoritmizácie, potom mnohonásobne prekročia prepracovávaním zdrojového kódu.
Tento spôsob programovania má význam jedine u profesionálnych programátorov analyzujúcich problémy v hlave, ktorí však tiež náročnejšie časti riešia za pomoci pera a papierom alebo nástrojov špecializovaných na túto fázu riešenia problému.

Spustenie programu je podmienené jeho prekladom do strojového kódu, ktorý jediný je schopný procesor vykonávať. Program doň prekladáme pomocou podporných nástrojov programovacieho jazyka, ktoré sú v súčasnosti častou súčasťou komplexného vývojového prostredia. Toto obvykle pozostáva z:

  • textového editora poskytujúceho základné (ale častejšie i rozšírené) operácie s textom
  • prekladača, ktorý zo zdrojového kódu vytvára strojový kód
  • ladiacich nástrojov umožňujúcich napr. zastaviť vykonávanie programu na ľubovoľnom mieste, sledovať hodnoty premenných

Každá aplikácia (aj tá pomocou ktorej píšeme, prekladáme a spúšťame program) bola raz programom napísaným v programovacom jazyku, z ktorého sa preložila do súčasnej podoby a takisto každý náš program môže byť po preložení programom - aplikáciou.

    Typy programovacích jazykov

    Na základe prístupu jazyka k používateľovi – programátorovi môžeme programovacie jazyky rozdeliť na:
    • detské programovacie jazyky
    • jazyky vyššej úrovne
    • jazyky nižšej úrovne

    Detské programovacie jazyky sú jazyky, ktoré umožňujú pomocou obsiahnutých príkazov niekoho (alebo niečo) ovládať. Zvyčajne obsahujú niekoľko základných príkazov, ktoré je možné spájať do zložitejších celkov. Sú určené na prvé zoznámenie sa s programovaním. Medzi najznámejšie patria Karel, Imagine (Logo, Žofka), Baltík (SGP Baltazár) a Ferdo Mravec.

    Jazyky vyššej úrovne sú určené na riešenie skutočných problémov. Obyčajne pozostávajú z anglických slov a pripomínajú algoritmické jazyky (sú na nich postavené). Tieto jazyky sú zvyčajne vytvorené tak, že je možné používať ich na ľubovoľnom type počítača alebo procesora – nie sú závislé od inštrukcií, ktorým ten-ktorý procesor rozumie. História vývoja programovacích jazykov je veľmi bohatá, v súčasnosti sú najrozšírenejšími jazyky postavené na základoch Basicu, PascaluC. Tieto jazyky existujú v mnohých mutáciách, no jadro a spôsob zápisu zostáva stále rovnaký.

    Pomocou prekladača sa programy napísané v jazyku vyššej úrovne prekladajú do nízkoúrovňových jazykov. Tieto sú už šité presne na mieru procesora a pokiaľ napíšete program v niektorom z nich, je takmer isté, že iný typ procesora mu rozumieť nebude. Do tejto kategórie patrí strojový jazykjazyk symbolických adries (assembler). Oba jazyky pracujú priamo (strojový pomocou čísel, assembler má čísla nahradené niekoľkými desiatkami slov, ktoré sa po spustení automaticky prevedú na číselné inštrukcie) s hardvérom počítača – napr. pre sčítanie dvoch čísel ich najprv musia z pamäti (treba zadať presné miesto, kde sú čísla zapísané) premiestniť do „sčítačky“, sčítať a výsledok zasa premiestniť na konkrétne miesto v pamäti.

    Našťastie, prepis z vyššieho programovacieho jazyka do jazyka strojového zabezpečuje vývojové prostredie toho-ktorého vyššieho programovacieho jazyka, a samotný assembler alebo strojový jazyk sa používajú len veľmi zriedkavo.

    Vývoj programovacích jazykov

    Vyššie programovacie jazyky sú dnes najčastejším prostriedkom na vývoj aplikácií. Sú schopné za aktívnej účasti programátora vyriešiť takmer každý problém. Rovnako ako všetky súčasti počítača sa veľmi rýchlo vyvíjali:

    40-te roky 20. storočia - programovanie v strojovom jazyku počítača, ktoré bolo ako časovo tak i intelektuálne vysoko náročné, pretože príkazy vďaka potrebe kódovania a jeho nezrozumiteľnosti často obsahovali chyby.

    50-te roky 20. storočia - programovanie v jazyku symbolických adries (assembler), ktorý v roku 1951 vytvoril Grace Hopper. Jednoduchý príkaz vo forme anglického slova alebo jeho skratky (napr. load, store, move, jump a pod.) nahrádzal binárny či hexadecimálny kód definujúci inštrukciu.

    1956 - programovací jazyk fortran (FORmula TRANslation) určený primárne na vedecké výpočty,

    1958 - programovací jazyk algol (ALGOrithmic Language) predstavoval rozšírenie a zuniverzálnenie fortranu,
         - COBOL (COmmon Business Oriented Language) bol určený na jednoduché výpočty nad väčším množstvom údajov. Uplatnil sa predovšetkým v obchodnej sfére.

    1961 - programovací jazyk basic (Beginners All-Purpose Symbolic Instruction Code) predstavoval prvý masovo rozšírený jazyk, ktorý sa v pozmenenej podobe uchoval až do súčasnosti. Veľmi často bol zabudovaný do ROM domácich počítačov.

    okolo 1970 - programovací jazyk pascal (pomenovaný po vedcovi Blaise Pascalovi) predstavoval prelom o filozofii programovania a zaviedol pojem štruktúrovaného programovania.

    okolo 1980 - programovací jazyk C obsahuje prvky štruktúrovaného a súčasne nízkoúrovňového programovacieho jazyka vďaka čomu poslúžil ako základ pre tvorbu mnohých operačných systémov. Svojou verziou C++ sa postaral o zavedenie a propagáciu objektovo orientovaného programovania.

    90-te roky 20. storočia - vývoj komplexnejších verzií jazykov s cieľom využitia nových možností predovšetkým osobných počítačov (grafika, zvuk, multimédiá) - programovanie riadené udalosťami (Visual Basic)

    súčasnosť – programovacie jazyky nezávislé na platforme (Java, skriptovacie jazyky – PHP, ASP, programovacie jazyky pre tvorbu aplikácií), .NET platforma

    Prekladače

    Na základe predchádzajúcich riadkov ste už určite prišli k záveru, že jednou z najdôležitejších operácií, ktorá z napísaného programu vytvorí aplikáciu schopnú behu, je transformácia zdrojového kódu do kódu, ktorý dokáže procesor vykonať.
    Aplikácia alebo časť aplikácie, ktorá túto operáciu realizuje, sa nazýva prekladač. V praxi poznáme dva typy prekladačov: kompilátor a interpreter.

    Kompilátor pracuje tak, že zo zdrojového kódu vytvorí aplikáciu – spustiteľný súbor obsahujúci príkazy, ktoré dokáže procesor po jeho spustení okamžite vykonávať. Skompilovaný súbor nepotrebuje na svoj beh žiadne ďalšie odporné nástroje a možno ho spustiť ako samostatný program prakticky na ľubovoľnom počítači toho typu a s tým operačným systémom, na ktorom bol skompilovaný. Vykonávanie tohto typu programu je podmienené bezchybným zdrojovým kódom – ak kompilátor nájde chybu, zdrojový kód odmietne skompilovať.

    Interpreter prekladá zdrojový kód po každom spustení programu príkaz po príkaze (interpreter príkaz prečíta, preloží a procesor ho vykoná). V prípade, že program obsahuje chybu, bude odhalená až vtedy, keď na ňu interpreter narazí.
    Oproti kompilátoru sa vykonávanie realizuje podstatne pomalšie, pretože každý príkaz je potrebné prečítať, preložiť a až potom vykonať. Ďalšou nevýhodou je potreba umiestnenie interpretera na počítači, kde sa interpretovaný program vykonáva.
    Vďaka čítaniu zdrojových kódov, ktoré obvykle predstavujú len textové reťazce je možné rovnaký zdrojový kód interpretovať a teda i vykonať na viacerých navzájom nekompatibilných zariadeniach (napr. počítač, PDA, mobilný telefón) alebo v rôznych operačných systémoch. Predpokladom je len existencia interpretera pre tieto zariadenia a operačné systémy.

    Ďalšou výhodou je možnosť blokovania príkazov potenciálne nebezpečných (vírusy, spyware) pre dané zariadenie na úrovni interpretera, počas ich vykonávania. Ak interpreter narazí na nebezpečný príkaz, jednoducho ho nevykoná, nahradí iným alebo informuje používateľa. V prípade, že sa odhalia nové potenciálne hrozby, stačí aktualizovať interpreter a pokojne možno používať aj programy vytvorené pred odhalením nebezpečných príkazov.

    Jazyky aplikácií

    S algoritmizáciou sa okrem programovacích jazykov môžeme stretnúť v mnohých vyspelejších aplikáciách, ktoré nám umožňujú „naprogramovať“ často sa opakujúce postupy. Zvyčajne ide o sekvenciu niekoľkých činností, no možno sa stretnúť aj s inými algoritmickými konštrukciami. Takýmto „programom“ hovoríme makrá a často má aplikácia na ich vytváranie vlastný programovací jazyk.

    Makrá možno vytvárať interaktívne – aplikácia si uchováva činnosti, ktoré vykonávame a neskôr ich dokáže zopakovať alebo manuálne, keď príkazy makra môžeme zapisovať ručne. Často sa oba prístupy kombinujú – kostru vytvoríme interaktívne a potom ju upravujeme manuálne.

    Jedným z prvých programov, ktoré podporovali makrá bol v našich zemepisných šírkach textový editor T602. Tu však neexistoval žiaden programovací jazyk, makrá si len pamätali postupnosť stlačených klávesov. „Program“ potom mohol vyzerať napr. takto:

    Nevýhodou makra v T602 bola dĺžka obmedzená asi na 50 operácií a neexistencia  programovacieho jazyka, ktorý by obsahoval príkazy zrozumiteľné používateľovi. Napriek tomu bolo používanie makier prínosom, pretože urýchľovalo monotónne činnosti – napr. vytváranie nadpisov, kreslenie jednoduchých tabuliek, nastavovanie vlastností odstavcov atď. Každé makro bolo priradené kombinácii klávesov (napr. Ctrl+F1) a na vykonanie uložených operácií ich stačilo stlačiť.

    S nástupom kancelárskeho balíka Microsoft Office sa dostali k slovu makrá vytvárané v programovacom jazyku Visual Basic. Opäť ich možno vytvárať interaktívne alebo manuálne, no nie sú obmedzené veľkosťou, používajú množstvo slovných príkazov a je možné spúšťať ich nielen kombináciu klávesov, ale aj tlačidlom na paneli nástrojov alebo položkou v menu či dokonca automaticky pri otvorení súboru. Výhodou takéhoto spustenia makra je, že dokáže pred používateľom skryť nepotrebné položky a používateľ sa potom nestráca v množstve funkcií programu, ale postačia mu tie, ktoré pre neho zobrazí tvorca makra.

    Vlastnosť automatického spustenia makra veľmi radi využívali tvorcovia tzv. makrovírusov, ktorí prostredníctvom textových a tabuľkových dokumentov šírili škodlivý obsah medzi neznalými používateľmi. Súčasné kancelárske aplikácie už obsahujú niekoľkoúrovňovú ochranu pred škodlivým kódom tohto typu.

    Databázové systémy okrem jazyka makier obsahujú zvyčajne aj nástroje pre vytváranie dotazov – požiadaviek na zobrazenie údajov. Tieto sa obmedzujú na niekoľko kľúčových slov a dovoľujú manipulovať (triediť, mazať, zobrazovať, počítať a pod.) s údajmi v tabuľke. Štandardom pre túto kategóriu je jazyk SQL (Structured Query Language), ktorý je univerzálny a využívajú ho nielen osobné počítače, ale možno sa s ním stretnúť aj v iných systémoch a komunikovať s databázami prostredníctvom počítačovej siete.
    Ako typický príklad využitia makier nám môžu slúžiť rozliční sprievodcovia v kancelárskych aplikáciách a grafických editoroch, ktorí po vložení niekoľkých údajov dokážu vygenerovať webovú stránku, životopis, kalendár, fax, vizitky a pod.

    Programovanie a algoritmizácia všeobecne sú odrazovým mostíkom pre riešenie nezvyčajných, ale aj každodenných problémov. Umožňujú nám rozdeliť zložité operácie na jednoduchšie a tak lepšie pochopiť podstatu problému i v bežnom živote.