Ak pre Vás programovanie vyzerá zaujímavo a chcete zistiť, o čo vlastne ide, tak Vám vrelo odporúčam začať s Pascalom, ktorý bol vlastne aj pre to navrhnutý. Je to pekný a vcelku rýchly spôsob ako si osvojiť algoritmické myslenie bez starania sa o nejaké technickejšie veci. Syntax (kľúčové slova, štruktúra jednotlivých príkazov) tvoria anglické slovíčka (if .. then … esle, begin ... end, array, for, integet, real, …), teda to by nemali byť pre Vás nezmyselné symboly.
Možno Vám mnohí povedia, že Pascal patrí akurát tak do starého železa. To si nemyslím. Podrobnejšie v tomto blogu. Nakoniec Pascal sa berie aj ako úvodný programovací jazyk v prvom semestri pre odbor informatika na Matematicko-fyzikální fakulte Univerzity Karlovej v Praze. Myslím, že Vy by ste radi niečo na úvod do programovania pripadne na zistenie, či by Vás také niečo bavilo alebo je to totálne mimo Váš záujem.
V prípade silného vnútorného pocitu, že máte o programovanie skutočný záujem alebo už ovládate Pascal a túžite po hlbšom pochopení alebo jednoducho chcete ísť do programovania po hlave, tak je podľa mňa ten pravý jazyk C alebo C++. S čistím svedomím môžem doporučiť Pavol Herout - Učebnice jazyka C a Bruce Eckel – Myslíme v jazyku C++.
C je veľmi mocný nástroj, v ktorom spravíte takmer všetko. Výhoda pre jedného, nevýhoda pre druhého je to, že veci musíte programovať o úroveň nižšie ako v Pascale. To znamená, že o veci, o ktoré sa Pascal a dnes už takmer každý jazyk stará automaticky, sa v C musíte postarať sami. Pre niekoho je to otrava a často sa v tom zamotá. Niekomu do dáva pocit plnej moci a kontroly nad programom. Výsledkom (toho, kto sa v tom nezamotá) je program, ktorý vo väčšine prípadov funguje rýchlejšie, ako keby ste presne ten istý program napísali v inom jazyku. Preto aj niektorí tvrdia: „C is the best language ever.“
Spomínal som hlbšie pochopenie. Totiž, aby ste boli schopný programovať v C, musíte poznať aspoň základný princíp fungovania PC a hlave ako zo zdrojového kódu (toto, čo napíšete ručne) stane spustiteľný súbor. Samozrejme, dá sa aj bez poznania týchto veci, ale potom sa budete musieť kopu vecí učiť naspamäť a nebude vedieť, prečo musíte niektoré veci písať. Mňa osobne by štvalo, keby som musel niečo písať a nevedel by som prečo.
Buďte pripravený, že si pri C neraz zanadávate. V C môže byť nižší pohľad na veci pre začiatočníka dosť odpudivý. Pri problémoch s C to rozhodne nevzdávajte. Myslím, že ak pôjdete podľa Učebnice jazyka C, tak problémy budu minimálne. Síce sa C berie ako programátorský folklór, no novšie generácie programátorov ho skoro ani neovládajú. Myslím, že ak ste zvládli Pascal a C by ste sa učili učili skôr z povinnosti, tak môžete C kľudne vynechať.
C++ je C vylepšené o objekty. Teda bude to mať blízko v objektovo-orientovanému programovaniu tzv. OOP. Mne osobne sa vidí lepší systém základy C a potom C++. No aj keď by ste rovno začali s C++ s Myslíme v jazyku C++ tak asi nie sú argumenty dávajúce jasnú výhod systému najprv C a potom C++. S inými knihami by bolo možno argumentovať silnejšie ale tá od Bruce Eckel je fakt super.
Veľa ľudí ospevuje knihu Mistrovství v C++. No mne sa na začiatok nevidí vhodná. Prečítal som cez 400 strán a stále sa brali viacmenej základné nie príliš zaujímave veci.
Možno ešte ako motivácia môže slúžiť to, že ak človek ovláda C++ tak nebude mať problém so žiadnym jazykom. Nestretol som sa ešte, aby niekto predchádzajúcej vete oponoval.
Ďalej sa na mňa veľa ľudí obrátilo s tým, že chcú začať programovať v Assembleri. Je pravda, že Assembler je jazyk, v ktorom naprogramuje teoreticky všetko. Prakticky pochybujem, že to stihnete. Assembler sa berie ako strojový jazyk (to znamená, že jemu rozumie priamo procesor a programy z iných jazykov sa nakoniec do neho preložia). Pripadne nejaké špeciálne procesory môžu mať strojový jazyk iný. Ale nakoniec sa všetko preloží do strojového jazyka.
Preto je Assembler najrýchlejší. Potom sú asi najrýchlejšie C a C++. Ale pre začiatok programovať v Assembleri považujem za nezmysel. Kód, ktorý napíšete v nejakom jazyku za hodinu, v Asembleri by ste ho písali pár dni. Nepríde mi to veľmi efektívne. No určite nie je zbytočnosť si odskúšať Assembler na pár príkladoch ak už človek niečo vie. Získa tak, pohľad na najnižšiu úroveň, teda ako veci priamo fungujú.
Ďalej z klasických jazykov tu v ponuke máme Javu a C#. Ide čisto objektové jazyky, po ktorých je v dnešnej dobe najväčší dopyt. Programuje sa v nich celkom jednoducho a rýchlo aj keď pochopenie a plné využívanie OOP je silne netriviálne, s ktorých má problémy nejeden profesionál. Profesionála myslím človeka, ktorý vďaka svojím programátorským zručnostiam zarába. Pokiaľ Vám ide predovšetkým o peniaze, kľudne môžete začať aj jedným z nich. Uživíte sa naozaj slušne. Nie je na tom nič zlé.
Ale pokiaľ pre Vás nie sú prioritou peniaze (tajné dúfanie autora) ale do programovania idete skôr kvôli zábave, hraniu sa, rozvíjaniu inteligenčnej činnosti a pre ďalšie pekne veci tak Vám neodporúčam s nimi začínať. Tie jazyky sú veľmi inteligentné. V preklade to znamená, že robia za programátora čo môžu, čím skrývajú niektoré princípy programovania. Skúsenosti ukazujú, že ľudia ktorí začínajú s tými jazykmi po väčšine nevedia, čo píšu. Dívajú sa na veci z veľkej výšky a hovoria, veď Java to nejako urobí. Preto sú aj po väčšine neschopní optimalizovať svoj kód.
Prosím Vás, rozhodne to neberte tak, že tieto jazyky odcudzujem a pohŕdam nimi. Priam naopak lebo sú mocné s kopou prospešných vlastností. O tom, prečo s nimi nezačať/začať sa vedú dlhé spory. Prečo začať vravia ľudia skôr z praxe a na druhej strane je skôr akademická obec. I keď čo poznám naozaj dobrých ľudí tak takmer všetci odporúčajú na začiatok C. Pre lepšie dôvody a pochopenie uvádzam odkaz na jeden článok v slovenčine. Tento článok mi poslal známy, čo okrem programovania robí aj vstupné pohovory s komentárom: "O tom celý čas hovorím!".
Doplnenie (citácia z príspevku diskusie pre tento článok od alef0 ): Java/C# sú zase obchodnými trhákmi, ale v úvodných fázach treba často mlžiť, zapierať a používat taktiku "toto sa píše takto, nepýtajte sa prečo, dozviete sa neskôr".Poznámka autora: Mňa by to strašne iritovalo, pripadalo by mi to ako mágia. Písať kopu slovíčok naviac a nevedieť prečo. Ja rád veciam rozumiem :)
Za zmienku by podľa všetkého stál aj Python. Python je v mnohých smeroch výnimka (Bruce Eckel často píše okrem Pyhtona) a par priateľov ho považuje za vhodný úvod do programovania ale bohužial zatiaľ s ním osobnú skúsenosť nemám, tak Vám neviem poradiť.
Spomenul som tu pomerne málo jazykov z ich nepreberného množstva. Ale sú to jazyky, na ktoré sa ma ľudia pýtajú a možno by sa dali považovať za učebnicový mainstream. Ďalej sú funkcionálne (napr. Haskell, Scheme, deklaratívne (Prolog), scriptovacie (Python, Bash, Perl, PHP) a ešte je ich naozaj veľa.
No cieľom blogu je pomôcť pri výbere čo najsprávnejšieho jazyka pre človeka, ktorý o programovaní počul a chcel by s ním niečo podniknúť Rozhodne tento blog nemôže najlepšie poradiť úplne každému a nedá sa ani chápať ako jediná možná cesta. Ale myslím, že je to jedna s osvedčených ciest dobrého základu, na ktorom sa dá bez problémov stavať ďalej.
Ak tento blog aspoň čiastočne naplní svoj cieľ, tak budem úprimné veľmi rád. Ďakujem.
Doplnenie: Dostala sa mi do rúk kniha Programování pro úplné začátečníky, ktorá vyzerá byť veľmi vhodná pre vybudovanie pevného základu. Ako jazyk bol použitý Pascal.