O programování
Na programování lze nahlížet mnoha způsoby, například jako na řešení úloh s pomocí počítače, schopnost převádět problémy do řeči strojů, nebo i jako na způsob, jak donutit počítač, aby dělal to, co chceme; v každém případě je programování dovednost tvořit programy (takové jakými jsou například počítačová hra, prohlížeč, přehrávač videa, ale také například operační systém).
Mnoho lidí asi tuší, že existují nejrůznější programovací jazyky, ve kterých lze programy psát; a nejeden začínající programátor si plete dovednost programování jako takovou se znalostí těchto jazyků. Zde je však třeba důrazně odlišovat: znalost syntaxe jednotlivých jazyků nemá příliš co dělat s dovedností programování samotného; umět programovat znamená myslet určitým způsobem a být schopen vyjádřit to, co člověk od počítače chce, v „řeči strojů“, neboli prostě sestavit algoritmus, který přesně (tedy tak, aby jej nebylo možno ani v tom nejmenším detailu vyložit nějakým jiným způsobem) popisuje postup, jenž vede k řešení daného problému, zatímco znalosti programovacích jazyků jsou pouze o tom, jakým způsobem tento postup zapsat. K tomu, aby mohl člověk programovat, pochopitelně musí ovládat na nějaké úrovni alespoň jeden jazyk a většina profesionálních programátorů jich ovládá několik, nicméně to je ta nejméně podstatná část dovedností, kterými dotyční disponují. To, že někdo ovládá syntaxi mnoha jazyků, z něj ještě zdaleka nedělá dobrého programátora, neboť to spočívá právě ve schopnosti algoritmizace problémů.
Jazykům je vůbec –zejména mezi začínajícími programátory– přikládána poměrně zbytečně velká důležitost; na Internetu lze nalézt mraky fór, ve kterých se sáhodlouze probírá, jaký programovací jazyk je ten nejlepší a podobně. První a nejdůležitější fakt, který je dle mého názoru třeba zmínit, je to, že prakticky všechny programovací jazyky jsou stejně silné (existují sice nějaké velmi vzácné výjimky, nicméně těmi se nemá smysl zabývat, neboť to beztak nejsou „plnohodnotné“ programovací jazyky), což znamená, že každý program, který lze zapsat v jednom jazyce, jde napsat i ve všech ostatních, což platí i naopak, tedy úkol, který v nějakém jazyce vyřešit nelze, není řešitelný v žádném jazyce. V čem se tedy jazyky liší? Je toho více, ale nejpodstatnější jsou dvě věci: jedna kód napsaný v různých jazycích (respektive přeložený do strojového kódu různými překladači) je následně stroji vykonáván různě rychle a jednak je pro programátora psaní kódu v různých jazycích různě pohodlné a rychlé; obecně většinou (ne vždy) platí, že čím lepší je jazyk v jednom ohledu, tím horší je v tom druhém. Celou polemiku o jazycích lze uzavřít konstatováním, že každý jazyk má své určení a je dobrý k něčemu jinému; chceme-li psát aplikaci naprosto kritickou na výkon, je vhodné sáhnout po nějakém rychlém jazyku (například C/C++), naopak chceme-li vytvořit program, u kterého na výkonu příliš nezáleží, je lepší zvolit jazyk, který ušetří čas programátora (například C#). Dále existují jazyky přímo specializované na řešení nějakého typu úloh (například PHP pro generování HTML kódu a tvorbu webu, nebo Prolog pro řešení logických úloh a programování umělé inteligence).
A v čem že spočívá krása programování? Inu, algoritmizace je rozhodně skvělé mentální cvičení, které tříbí bystré uvažování a rozvíjí logické myšlení; naučí člověka promýšlet věci do důsledků a uvažovat všechny krajní možnosti. Bezesporu jde o určitý způsob myšlení, který vás –doufám– bude bavit. A konečně ještě jedna věc: programujete-li hry a máte-li přitom dostatek volnosti (ve smyslu ne úplně přesného zadání), můžete si tvořit vlastní virtuální světy vycházející z matematických modelů, které si sami vytvoříte, což je rozhodně zajímavé.