V prvom diele nášho seriálu sa oboznámime s históriou jazyka C, povieme si, čo je to kompilátor, interpreter, a linker.
Na úvod by som Vás chcel privítať v tomto seriáli, ktorý sa venuje programovaciemu jazyku C. Tento seriál je určený hlavne pre tých, ktorí majú vážny záujem naučiť sa programovať v tomto, tak mocnom jazyku. Postupom času sa budeme oboznamovať s technikami programovania v C, naučíme sa pracovať s kompilátorom a oboznámime sa aj s tým, ako počítač pracuje so zdrojovým kódom, ktorý sme napísali.
História Jazyka C
Programovací jazyk C bol vyvinutý začiatkom sedemdesiatych rokov. Autorom tohto programovacieho jazyka je Dennis Ritchie. Jazyk bol pôvodne určený pre použitie na operačných systémoch UNIX. Odvtedy sa rozšíril na mnohé iné operačné systémy a stal sa jedným z najpoužívanejších programovacích jazykov. C je najpopulárnejším jazykom na písanie systémového softwaru, hoci sa používa aj na tvorbu aplikácií. Prvý štandard jazyka C je popísaný v knihe D. Ritchieho a B.W. Kernighama The C Programming Language z roku 1978. Tento štandard je často označovaný ako K&R. Dnes sú už stanovené medzinárodné štandardy ANSI, ISO, ktoré zaisťujú prenos aj na iné počítače. V praxi to znamená aj to, že ak napíšete kód, ktorý skompilujete v MS Visual C++, môžete tento skompilovať aj v iných kompilátoroch.
Obecné charakteristiky jazyka C
C je obecne používateľný programovací jazyk (Fortran – vedecko-technické výpočty; Cobol- úlohy z oblasti obchodu; Pascal, Scheme – pre výučbu; Assembler – systémové programovanie, atd.)› jedná sa o štruktúrovaný jazyk
› väčšinou je jazyk C implementovaný ako prekladač
› prekladač jazyka C je rozsahom malý a je možné ho pomerne jednoducho preniesť na iné platformy
› programy vytvorené pomocou jazyka C majú pomerne krátku dobu prenosu, nízke nároky na pamäť a dajú sa ľahko prenášať na iné platformy (portabilita)
Kompilátor, linker, interpreter
Spočiatku pracovali programátori s najprimitívnejšími inštrukciami počítača, s takzvaným strojovým jazykom. Tieto inštrukcie mali tvar dlhých reťazcov jednotiek a núl. Čoskoro vznikli assemblery, ktoré prevádzali pokyny pre počítač do podoby dobre čitateľných a ovládateľných memotecnických pomôcok, ako napríklad ADD a MOV (príkazy jazyka Assembler).
Časom boli vyvinuté jazyky vyššej úrovni, ako BASIC a COBOL. Tieto jazyky umožnili programátorom pracovať s kódom, ktorý sa podobal (väčšinou anglickým) slovám a vetám, napríklad Let I = 100. Tieto vety boli potom prostredníctvom interpreterov a kompilátorov preložené opäť do strojového jazyka.
Interpreter je program, ktorý preloží a mení inštrukcie programového kódu priamo na strojový kód konkrétnej akcie. Kompilátor kód preloží do podoby takzvaného objektového súboru, ktorý ešte nie je spustiteľný. Tento krok sa nazýva kompilácia. Potom kompilátor spustí zostavovací program - linker, ktorý objektové súbory zostaví do spustiteľné programu. Vo fáze objektového súboru ešte nie sú známe adresy premenných a funkcií. Linker zaisťuje nahradenie relatívnych adries adresami absolútnymi a prevedie odkazy na príslušné funkcie knižníc.
Vzhľadom k tomu, že interpreter kód číta a ihneď ho prevádza, je pre programátorov pomerne jednoduché s interpreterom pracovať. Dnes sa väčšina interpretujúcich programov označuje ako skripty a interpreter samotný sa označuje ako skriptové jadro (Script Engine).
V niektorých jazykoch, napríklad vo Visual Basicu, sa interpreter nazýva behová (runtimová) knižnica. V Jave sa označuje termínom virtuálny stroj (Virtual Machine, VM), ale v tomto prípade je virtuálny stroj súčasťou prehliadača (napríklad MS Internet Explorer).
Kompilátory so sebou prinášajú krok naviac tým, že umožňujú kompiláciu zdrojového kódu (ktorý je ľudom zrozumiteľný) do objektového kódu (ktorý je zrozumiteľný stroju). Tento krok je naviac nepohodlný, ale skompilované programy bežia veľmi rýchlo, pretože časovo náročná úloha preloženia zdrojového kódu do strojového jazyka sa prevedie raz (v dobe kompilácie) a pri spustení programu sa už nevyžaduje.
Ďalšou výhodou kompilácie je aj to, že spustiteľný program je možné šíriť a púšťať aj medzi užívateľmi, ktorý žiadny kompilátor nemajú. Interpretované jazyky ku svojmu spusteniu potrebujú interpreter.
Kompilátory sa väčšinou označujú aj ako IDE (Intrgrated Development Environment), pretože obsahujú aj textové editory, do ktorých sa píše kód, a ten je možné následne skompilovať. Programy, ktoré budeme písať my, budú mať príponu .*c alebo .*h, pretože ak má súbor príponu .*c, kompilátor predpokladá, že sa jedná o program napísaný v jazyku C. V prípade problémov si pozrite dokumentáciu vášho prekladača.
Aby sme mohli začať skutočne programovať, musíme si zaobstarať nejaký kompilátor, ktorých je internete naozaj dostatok. Vymenujeme si aspoň dva najznámejšie, ktoré sú určené pre OS Windows.
Microsoft Visual C++ - jedná sa o jeden z najpopulárnejších, ale aj najkvalitnejších kompilátorov na trhu. Obsahuje veľa podporných funkcii, prepracovaného pomocníka, v ktorej nájdete naozaj všetko, čo by ste chceli, alebo potrebovali vedieť. Online verziu tohto pomocníka nazývaného MSDN si môžete pozrieť na stránkach http://www.msdn.com
Jedná sa o komerčnú záležitosť, ale Microsoft uvoľnil verziu MS Visual C++ 2005 Express Edition(súčasť MS Visual 8), ako voľne dostupné vývojárske prostredie, ktoré je k dispozícii po registrácii na stránkach MS.
BloodShed DevC++ - jedná sa o veľmi vhodný kompilátor, ktorý je dostupný úplne zdarma na oficiálnych stránkach.
Samozrejme, ešte existuje celá rada kompilátorov, ktoré si môžete zaobstarať. Ja však budem využívať MS Visual C++ EE.
V ďalšom dieli si napíšeme náš prvý program v jazyku C, ktorý si podrobne vysvetlíme, aby sme plne pochopili, ako pracujú programy napísane v C. Budete potrebovať kompilátor, a chuť učiť sa. Pokiaľ by ste mali nejaké nejastnosti ohľadne Vášho kompilátora, určite využite pomocníka, ktorý je k nemu dodaný.
V prípade nejakých námietok, otázok, či pripomienok, môžete využiť sekciu komentáre. Určite Vám rád pomôžem.