Co je programování a jak to všechno začalo?
Nejstarší počítač byl vynalezen už ve druhém tisíciletí před naším letopočtem v Mezopotámii. Bylo jím počítadlo, které značně usnadnilo sčítání a odčítání. Toto počítadlo bylo později zdokonaleno ve starověkém Římě, kde dostalo podobu desky s drážkami, ve kterých se posouvaly malé kamínky - tzv. kalkuly.
O konstrukci mechanických počítačů se pokoušelo mnoho lidí, v roce 1947 byl objeven tranzistor - součástka, která odstartovala rozvoj výpočetní techniky. Od této chvíle se začaly stavět tranzistorové počítače a díky nanotechnologiím dnes máme procesory, které obsahují stovky milionů tranzistorů na ploše několika čtverečních centimetrů.
Procesory jsou velmi složité součástky, které umí zpracovávat instrukce. Sada instrukcí se nazývá program. Nejdříve se programy zapisovaly v tzv. strojovém kódu, což bylo velmi složité a nepraktické. Proto byl vymyšlen jazyk assembler, který zápis programů značně usnadnil, ale pořád to bylo velice komplikované.
Velmi záhy se proto objevily první programovací jazyky (Fortran a Cobol), které přinesly do programování spoustu nových prvků. S příchodem jazyků C, Pascal a Basic se začalo na dlouhou dobu používat tzv. strukturované programování. Program měl jasně definovaný začátek a konec, některé jeho části se mohly spustit opakovaně podle potřeby, často opakující se úkony s jiným nastavením se daly zapsat jako funkce s parametry atd.
Kromě toho se vyvinulo i tzv. objektově orientované programování, které přináší trochu jiný přístup, díky němuž se ve většině případů nadělá méně chyb a je snadnější psát aplikace tak, aby se v budoucnu daly rozšiřovat a měnit s menším úsilím. Neplatí to vždy, ale pokud jej pořádně pochopíte a naučíte se základní návrhové vzory, tohoto výsledku dosáhnete nebo se mu alespoň velmi přiblížíte.
S příchodem operačního systému Windows a obecně okenních prostředí (začalo to už dříve, i v MS-DOSu byly aplikace, které měly něco jako okna), se dosavadní koncepce ovládání a práce s programy značně změnila. V dřívějších dobách typicky program na začátku dostal data, pak chvíli pracoval a vyplivnul výsledek. Dnešní aplikace jsou mnohem interaktivnější – čekají, kdy uživatel vybere z menu nějakou položku, klikne na tlačítko, napíše něco někam, něco někam přetáhne myší atd.
Tomuto vývoji bylo třeba se přizpůsobit a strukturované programování pro to nebylo nejvhodnější (i když to v něm šlo). Objevila se potřeba umět okenní aplikace vyvíjet rychle a systematicky, odstranit často se opakující rutinní konstrukce. I to je jeden z důvodů, proč se objektově orientované programování v posledních letech rozmohlo a dnešní jazyky jsou ryze objektové.
První jazyk, který se “přizpůsobil” programování pro operační systém Windows a umožňoval jednoduše vytvářet složité okenní aplikace, byl právě Visual Basic, který se vyvinul z jazyka QBASIC, což byla mutace původního jazyka BASIC v operačním systému MS-DOS. Jazyk BASIC byl vymyšlen někdy kolem roku 1965 a je to pravděpodobně jazyk, který prodělal nejradikálnější vývoj, od strukturovaného po ryze objektově orientované programování.
Poslední verze klasického jazyka Visual Basic je verze 6 z roku 1998. Dnes v ní stále ještě programuje pár lidí, ale nemá smysl se ji učit, máme totiž novou verzi Visual Basic .NET, což je nová generace jazyka Visual Basic, značně vylepšená a postavená nad .NET Frameworkem (co to je si vysvětlíme za chvíli).
V současnosti je nejnovější verze jazyka Visual Basic 10 (přídomek .NET se nepíše, ale všechny verze od sedmičky nahoru jsou na .NETu). Abyste v něm mohli vyvíjet, potřebujete nějaké vývojové prostředí (dá se to i bez něj, ale to je jen pro sadomasochisty anebo pro experty, tento seriál s tím nepočítá). Microsoft uvolnil základní edici vývojového prostředí, ve kterém se aplikace pro Visual Basic .NET programují, zdarma, a to i pro komerční použití.
Základní princip programování
V běžných programovacích jazycích programátor zapisuje program pomocí příkazů, které většinou vychází z anglických slov nebo zkratek. Celému zápisu programu se říká zdrojový kód. Aby se program mohl provést, je nutné jej předat procesoru, ale procesor zná jen svůj strojový kód, který se skládá z velmi primitivních instrukcí (posuň v paměti něco někam, nastav sem do paměti něco, sečti tyhle dva kusy paměti atd.).
Zdrojový kód se tedy musí do kódu strojového převést - zkompilovat. Protože jeden příkaz ve Visual Basicu se může převést na desítky instrukcí ve strojovém kódu a po kompilaci se provádí mnoho optimalizací a zjednodušení strojového kódu kvůli rychlosti a velikosti spustitelného souboru, není jednoduše možné ze strojového kódu dostat kód zdrojový. Kompilace je tedy z velké části nevratný proces, jehož výsledkem je soubor s příponou EXE, který můžeme spustit. Některé jazyky umožňují spustit své programy bez kompilace (tomu říkáme interpretované jazyky), ovšem výsledný program je velmi pomalý, protože překlad instrukcí probíhá ve chvíli, kdy jsou potřeba. Zkompilovaný program je nesrovnatelně rychlejší.
První procesory uměly pouze několik různých instrukcí, zatímco nejnovější procesory umí instrukcí daleko více. Tyto instrukce se ale nemohou dost dobře využívat. Operační systém Windows i většina programů musí být kompilována do základní instrukční sady, kterou umí všechny procesory, i ty staré. Nové instrukce obecně nemůžeme použít, programy by nefungovaly na starších počítačích. Tím pádem na rychlých procesorech nemůžeme využít všechen výkon, který bychom využít mohli. Jsou výjimky, dá se to obejít a dělá se to, ale není to úplně jednoduché.
A k čemu je ten .NET?
Visual Basic .NET pracuje na rozhraní .NET (čteno dotnet), které výsledný program nezkompiluje do strojového kódu, ale do jakéhosi mezikódu, kterému se říká CIL (Common Intermediate Language). Tento mezikód se zabalí do souboru EXE a distribuuje se na všechny počítače v této podobě, není to přímo strojový kód. Když pak program chceme spustit, zkompiluje se těsně před tím do strojového kódu až na konkrétním počítači, kde se spouští (navíc se kompiluje jen to, co je z programu potřeba, před prvním spuštěním; říká se tomu JIT – Just In Time).
Výhoda je ta, že se může zkompilovat do strojového kódu a použít instrukce, které umí procesor, který kod spouští. Celý program se zoptimalizuje pro daný počítač tak, aby běžel co nejrychleji. Navíc kompilace probíhá pouze jednou, zkompilované části programu se kamsi uloží a při dalším použití programu se pouze spustí.
Obecně tyto programy nejsou tak rychlé, jako programy, které jsou přímo kompilované (jsou výjimky), i když programy kompilované JITem se optimalizují pro daný procesor; zdržuje je ta kompilace, navíc není tolik času, aby se mohly provádět složitější optimalizace.
Dost už bylo povídání, začínáme!
Abyste mohli začít programovat, potřebujete mít vývojové prostředí a kompilátor. Pro potřeby tohoto seriálu je třeba stáhnout si Visual Basic .NET 2010 Express Edition, která je k dispozici zdarma na adrese http://www.microsoft.com/express/Windows/.
A ještě jedna věc na závěr. Pokud se chcete naučit programovat, předpokládá se, že umíte obsluhovat a ovládat počítač na uživatelské úrovni, že umíte pracovat se soubory, alespoň trochu ovládat Word a Excel a pracovat s Internetem. Bez těchto znalostí se daleko nedostanete. Hodí se také trocha angličtiny, většina materiálů totiž není česky.
Množí se také dotazy, jestli neexistuje překlad vývojového prostředí do češtiny. Odpověď zní zatím neexistuje, ale Microsoft jej chystá. Podle mě se to ale hodí jen pro ty, kteří opravdu anglicky vůbec neumí, a to jen ze začátku. Mnoho termínů se ani do češtiny přeložit nedá (to je vidět i v tomto textu, něco prostě nepřekládám, protože není jak a i kdybych něco vymyslel a nějak to přeložil, až to uvidíte v angličtině, nevěděli byste, o co jde).
Autor pochází z Třebíče, kde vystudoval osmileté gymnázium, nyní je studentem druhého ročníku bakalářského studia Matematicko-fyzikální fakulty Univerzity Karlovy v oboru Informatika. Programování se věnuje velmi dlouho a kromě počítačů patří mezi jeho záliby také hra na klavír a matematika. V poslední době tráví většinu času psaním aplikací v jazyce C#, Visual Basic .NET a v ASP.NET.