Bystroushaak's blog / Czech section / Jak se stát programátorem / Neučte se do začátku plejádu jazyků

Neučte se do začátku plejádu jazyků

Typická začátečnická chyba:

V poslední době jsem se začala víc zajímat o programování a tak. Učím se python, HTML a trochu php. Python s HTML mi jdou, ale s php mám trochu problémy. Do budoucna bych chtěla přidat c++ nebo javu.

To jsou čtyři programovací jazyky (php, python, C++ a java) a jeden značkovací (HTML). Co je na tom špatně?

Třemi slovy: Brutální tříštění síly.

To vím a můžu říct, protože jsem svojí sílu taky tříštil (pascal, php, python, basic, C, C++, Java, C#, JavaScript, D, Rebol, Lisp, Smalltalk a teď Self).

Proč?

Uvědomte si, že chcete programovat. To je ta činnost, kdy používáte programovací jazyk k tomu, aby jste vytvořili program. Při ní berete svoje myšlenky na to co má program dělat a zapisujete je pomocí programu.

Mnoho začátečníků si plete učení se programovat s učením se programovacího jazyka. Chápete ten rozdíl?

Programovací jazyk je nástroj. Je to jako štětec pro umělce. Co dělá umělce umělcem je, že chce malovat, vytvářet krásné obrazy, dát průchod svojí touze něco stvořit. Ne kolik umí používat štětců.

Nechápejte mě špatně - každý programovací jazyk vás něco nového naučí a často vám dá nový pohled na věc. Určitě je užitečné jich umět víc. Dokonce bych řekl, že každý správný programátor by měl vyzkoušet co nejvíc možných paradigmat, stejně jako by si malíř měl zkusit malovat jak štětci, tak tužkami a perem a pastely. Jenže umět padesát technik a způsobů, jak namalovat čáru a kruh různými nástroji je vám k ničemu, když neumíte malovat ani jednoduchý obraz, který máte v hlavě.

Složitost

Jazyky se různě liší, nejen tím co umí, ale také tím, jak moc je těžké v nich dělat a jak moc navazují na další části, které musíte umět.

Například v případě C/C++ musíte docela dobře rozumět jak vlastně počítač funguje, jak pracuje s pamětí a jak jsou jednotlivé programy vykonávány, co je to halda, zásobník a tak podobně. Je toho hodně a nabízí to spoustu způsobů, jak se střelit do nohy. K tomu všemu dříve nebo později musíte pochopit věci jako kompilátor, linker, debugger binárek, make, configure a s celým seznamem bych mohl pokračovat ještě dlouho a dlouho, dokud bych neobsáhl posledních 40 let vývoje.

V pythonu jste od spousty věcí odstíněni, stejně jako třeba v javě, která zas nabízí menší expresivní schopnosti, ale oproti pythonu větší rychlost. Dnešní počítače jsou však tak rychlé, že to pro vás, jakožto pro začátečníky v praxi není moc rozdíl.

Je toho spousta, co se musíte naučit, spousta toho co musíte překonat a pochopit jak funguje. Co do začátku vážně chcete je najít si něco, co vám bude klást co nejmenší odpor, aby jste dostávali co nejlepší výsledky.

Učit se do začátku složitý jazyk je jako učit se jezdit místo na kole na unyciklu.

Je to určitě obdivuhodná schopnost, která vám umožní dělat spoustu zajímavých kousků, jenže vám bude trvat čtvrt roku každodenní snahy než ujedete alespoň pár metrů. Oproti tomu jízda na kole je nejenom rychlejší, ale také se jí naučíte za pár dní, protože kolo se díky gyro-efektu udržuje do jisté míry samo.

Jako začátečníci by jste neměli chtít ovládnout nejsložitější jazyky, ale naopak něco jednoduchého, co vám dá možnost si rychle psát vlastní aplikace. Díky tomu se budete moct zlepšovat v programování a v algoritmech, místo aby jste museli věnovat čas boji se samotným jazykem.

Ano, některé systémové jazyky jako třeba C++ vám toho umožní víc než interpretované. Na druhou stranu jsou ale brutálně komplexní a musíte mít spoustu informací o hardware počítače, aby vám dávaly smysl. Jako začátečníci většinou ani nebudete schopni výhody, které nabízí využít a zbudou vám jen nevýhody.

Příliš často jsem kolem sebe měl lidi, které ty nevýhody rychle odradily, protože prostě nezvládli investovat měsíce a roky času a frustrace do složité technologie, která jim na jejich začátečnické úrovni nedávala skoro žádnou odměnu a pocit zadostiučinění.

Takže abych to shrnul;

Vyberte si do začátku něco lehčího, ale zároveň mocného, kde budete mít rychlou zpětnou vazbu námaha-odměna. Doporučuji python.

Na začátek netříštěte svůj čas a sílu do mnoha jazyků, naopak se naučte jeden a dobře. Na ty ostatní pak budete mít celý zbytek života, až vás programování fakt začne bavit a pochopíte krásu a možnosti, které se v něm skrývají.

Become a Patron