Jak jsem se učil programovat - #12in23 Challenge

Na Exercism byla celý letošní rok aktivní výzva #12in23 – vyzkoušet si během 12 měsíců 12 různých programovacích jazyků. A aby to byla výzva fakt na celý rok, každý měsíc měl svoje vlastní téma a vybranané jazyky.

Můj rok na Exercism vypadal takhle:

Můj rok v Exercism

Mimo samotné vyzkoušení jazyků byla možnost získat i speciální odznáček při splnění konrkétních úkolů v určitém jazyce. Chvilku jsem nad tím přemýšlel, ale vzhledem k tomu, že u některých úkolů šlo o jazyky, které mně nezajímají a jednalo se o pokročilejší úkoly, tak jsem to nakonec odmítl. Život je příliš krátký a i tak mám hromadu jiných věcí co chci dělat, že?

Co je Exercism a jak funguje

Pokud ti Exercism nic neříká, nevadí. V rychlosti – jde o britskou neziskovku, která učí lidi programovat v různých jazycích. Momentálně jich nabízí 67!

Je hodně založená na komunitě která kolem ní vznikla. Můžeš se podívat jak konkrétní úkol vyřešil někdo jiný, případně někoho z komunity požádat o mentoring.

Víc asi přímo na jejich webu.

Jak jsem se s tím porval

Celkově jsem celou výzvu vzal jako seznamovací akci s různými jazyky. Některé už jsem dřív zkoušel, některé už v životě nechci vidět. 😃

Exercism má u některých jazyků „learning mode“, kde jazyk celkem srozumitelně vysvětlují, u každého úkolu popíšou základní koncepty a tak. Super, dá se s tím skvěle pracovat.

Horší to je u jazyků, kde tohle není. Tam je prostě jenom úkol, odkaz na dokumentaci, a poraď si sám. Meh. 😅

Naštěstí u většiny jazyků, které jsem chtěl vyzkoušet learning mode byl, takže to nebylo až tak strašné. Ve finále to probíhalo jednoduše – u jazyků s learning mode jsem si prošel všechny podklady k danému cvičení a cvičení vyřešil sám. Tam kde learning mode není jsem to vzal jednoduše jako průzkum – u každého cvičení jsem šel rovnou do komunitních řešení a začal zkoumat, jak to dělají ostatní. Společně s tím jsem koukal do dokumentace a snažil se pochopit co, jak a proč udělali.

Co a proč jsem si vybral

V lednu to bylo jednoduché – výběr jazyka podle své chuti. A tak jsem sáhl po Ruby. Ne že by mně nějak extra zajímal, ale v Ruby je dělaný Jekyll a ten pohání můj web. A tak jsem si řekl že na to kouknu. 🙂 A teda nevím no. Dělalo se mi s ním celkem dobře (má learning mode), ale že bych se tomu chtěl věnovat dlouhodobě, to asi ne.

V únoru (nazvaném Functional February) už byl omezený výběr na několik konkrétních jazyků – Clojure, Elixir, Erlang, F#, Haskel, OCaml, Scala, SML a Gleam. Ani jeden mi nic neříkal, tak jsem to vzal jednoduše – podíval jsem se na jazyky které mají learning mode, podíval se na jejich popis, a nakonec si vybral Elixir. Pěkný, hezky se mi s ním pracovalo. Akorát teda nemám představu o jeho reálném využití. 🙄

Březen (nebo taky Mechanical March) přinesl výběr mezi jazyky C, C++, D, Go, Nim, Rust, V a Zig. Chvilku jsem koukal na Rust, bo ho vidím všude kolem sebe, ale přišel mi (na rychlé osahání bez nějakého hlubšího zájmu) zbytečně složitý.
Nakonec vyhrál Go – kvůli tomu, že je to celkem mladý jazyk, a taky kvůli tomu, že na mně na Instagramu vyskakovaly reklamy od JetBrains na jejich IDE GoLand (ach, jak snadno jsem ovlivnitelný). A taky má leraning mode. 🙂
No, nic pro mně. Moc mně nebavil.

Pak přišel duben (hezky pojmenovaný Analytical April). Z jazyků byl na výběr Python, Julia, a R. Rovnou jsem sáhl po Pythonu. R jsem zkoušel už dřív a vůůůbec se mi nelíbil. Python jsem teda zkoušel taky, ale nikdy jsem žádný kurz nedodělal, takže tady je nový základ. Líbí se mi, je jednoduchý, přehledný… Tady asi budu pokračovat.

Květen (alias Mindshifting May) byl první z měsíců, kdy jsem se prostě jenom díval co dělají ostatní. Na výběr byly jazyky Ballerina, Pharo, Prolog, Red, TCL a Unison. Ani jeden mi nic neříká, a tak jsem (už ani nevím proč) prostě sáhl po Red. Přišel mi celkem čitelný, a to včetně dokumentace.
Ale taky – asi nic pro mně, mám jiné favority.

Červen přinesl Summer of Sexps a jazyky Scheme, Common Lisp, Emacs Lisp, Clojure a Racket. Zase – nic mi to neříká, tak jsem se koukl co má learning path a vyhrál Clojure. 🙂
Byla to docela zábava, i když způsob zápisu mi úplně nesedí.

Červencový Jurassic July přinesl výběr oldschoolových jazyků – Cobol, Fortran, C, C++ a Visual Basic. Tady byla volba jasná – C++. Používá se třeba v Unreal Engine, ale taky je v něm napsaný můj oblíbený Godot Engine. A tak jsem si řekl že na něj kouknu, a třeba někdy nějakým kouskem kódu přispěju k jeho vývoji. (Haha)

Appy August v srpnu přinesl jazyky, které se používají hlavně pro různé webové nebo mobilní aplikace – ABAP, CoffeeScript, Dart, Delphi, Elm, Java, JavaScript, Kotlin, Objective-C, PHP, PureScript, ReasonML, Swift a TypeScript. U mně vyhrál JavaScript – sice mně docela sere jak moc ovládl internet, ale zas ho používá třeba VTT Foundry. A nebo static-site generator 11ty po kterém pokukuju.

V září jsem měl hromadu jiných starostí, a tak jsem se k jazykům v rámci Slimline September dostal až v druhé půlce měsíce. Na výběr byly 8th, AWK, Bash, JQ, Perl a Raku. Jediný Perl jsem znal aspoň podle názvu (a měl learning mode), tak jsem si vybral ten. Hele asi nezaujal, protože nejsem ani moc schopný říct jak se mi s ním dělalo (a to ani přes to, že koukám na ty úkoly). Tak asi tak. 😉

V říjnu jsem si v rámci Object Oriented October vybral Javu. Celkově byly v nabídce C#, Ruby, Powershell, Crystal, Java a Pharo. S C# jsem už do styku přišel když jsem se učil dělat s Unity, Ruby jsem si osahal už v lednu, a kromě Javy mi zbytek nic neříkal. A taky ji používají naši vývojáři v práci, tak proč jim trochu nenakouknout pod pokličku. Asi se jí věnovat nebudu, ale rozhodně to za vyzkoušení stálo.

Listopad a Nibbly November byl jedno velké WTF. Na výběr byl x86-64, MIPS a Web Assembly. Naslepo jsem si vybral MIPS. Tohle jsem fakt kompletně obšlehl a i když jsem se snažil pochopit, tak to šlo kompletně mimo mně. Jestli jsem z celého roku z něčeho smutný, tak z listopadu.

No a nakonec prosinec – December Diversions. Na výběr byl Cold Fusion, Groovy, Lua, Vimscript a Wren. Tady byla volba jasná – Lua! Brazilský skriptovací jazyk který používají herní enginy PICO-8 nebo Defold. Samotný jazyk mi přišel jednoduchý, dobře se mi s ním pracovalo a jsem si jistý, že mu ještě nějaký čas věnuju. 🙂 Hrozná škoda je, že nemá learning mode. Takhle jsem fakt zas jenom okukoval co dělali ostatní. 😔

Co k tomu dodat?

Musím uznat, že se mi výzva hodně líbila. Našel jsem si pár favoritů u kterých rozhodně zkusím dodělat všechna cvičení.

Trochu mi přijde škoda, že finální odznáček za je za splnění vybraných úkolů napříč všemi jazyky. Kdyby to stačilo udělat v jednom (nebo klidně i víc), ale podle mojeho výběru, už bych ho určitě měl. Ale chápu že to byla motivace k hlubšímu zkoumání všeho…

Jsem zvědavý s čím přijdou příští rok.

Polyglot Badge


Pokud mi chceš k něčemu co jsem v tomhle příspěvku napsal něco říct, neváhej a pošli mi mail, můžeme to probrat.