K mojej predchádzajúcej odpovedi:
Vôbec som neriešil situáciu, že by som mohol odpovedať niekomu, kto už pogramovať vie a iba hľadá ďalší jazyk, v ktorom by sa mohol uplatniť na trhu. Riešil som sitáciu, že nevie programovať vôbec.
K niektorým príspevkom vyššie:
Python ale nie je jazyk na výuku, je to jazyk na programovanie. A na výuku sa iba používa. Asi kvôli tomu, že je vo svojich základoch jednoduchý. Je ale otázka, či python ako taký vznikal s dôrazom na výukový proces a či pri jeho návrhu boli zohľadnené špecifiká tohto procesu, prípadne, či súbežne s návrhom jazyka vznikal aj výukový proces.
Jazyky na výuku programovania pritom ale existujú. Napríklad v mnou vyššie odkazovanej knihe How To Design Programs je popísaných niekoľko takýchto jazykov, počínajúc jazykom pre začiatočníkov, cez jazyk pre pokročilých až po jazyk použiteľný v produkcii.
Niekomu sa to môže zdať byť na hlavu, ale čo som si všimol, tak reálmym jazykom sa často vyčíta, že s tým ako dozrievajú, postupne majú všetko, čo sa dá a potom sa v tom nedá vyznať a je to hlavne problém pre začiatočníkov.
K Haskellu:
OSN vlastne nebol ani náhodou tak ďaleko, ako by sa mohlo zdať. How to Design Programs síce nie je na báze Haskellu, ale Lispu. Teda Scheme. Vlastne Racketu... Ale to je pre toto použitie úplne jedno.
A áno, kniha vyučuje vývoj programov na báze funkcionálneho programovania, ako jedného z možných prístupov k programovaniu, pričom iný z možných prístupov, ktorý je asi prevládajúci, teda imperatívne programovanie, bolo v druhom vydaní vypustené, ale to vôbec nevadí. Naopak, môže to byť skôr plus.
Pretože, ako už niekto vyššie spomenul, funkcionálne prístupy dlhodobo prenikajú do všetkých jazykov. Jenoducho sa pre aktuálne podmienky, kedy máme veľké množstvo výpočtových jadier a tým veľké množstvo činností vykonávaných "súčasne", ukázali byť v niektorých aspektoch vhodnejšie a jednoduchšie na rozmýšľanie o tom, čo sa to v programe vlastne deje, ale hlave o tom, čo sa v ňom diať nemôže a nie je to preto nutné riešiť ani to nemôže spôsobovať problémy.
A pokiaľ sa človek naučí funkcionálne vyriešiť všetko, tak keď potom v iných jazykoch potrebuje funkcionálne riešiť iba niečo, a som presvedčený, že do takej situácie sa v modernej dobe dostane, lebo bude chcieť používať vlastnosti jazyka, ktoré pre neho budú výhodné, tak iba použije podmnožinu toho, čo už vie.
Techniky funkcionálneho programovania majú v súčasnosti uplatnenie všade. Či už je to JavaScript, Java, asi najpoužívanejšia hračka na moderné weby, ktorá sa volá React, alebo v technológie, ktoré bežia pod tým ako ReactiveX, atď.
Dokonca aj v najmenej populárnom jazyku na tomto fóre, teda v C++, u ktorého sa nemôžem ubrániť dojmu, že je provažované za absolútny protiklad dobrých jazykov, a o ktorom by to asi nikto, kto v ňom nepíše, možno nepovedal, sa dajú techniky funkcionálneho programovania úspešne používať, a sú autoritami odporúčané už minimálne dve dekády.
A keď sa napríklad zamyslíme nad tým kedy začala v C++ naozajstná revolúcia, odhliadnuc od STL Alexandra Stepanova, tak to bolo podľa mňa v roku asi 2001, keď Andrei Alexandrescu vydal Modern C++ Design, kde v jadre základných stavebných prvkov knižníc používa techniky, pri ktorých je už z prvých kapitol tej knihy jasné, že sa musel veľmi dobre orientovať v Lispe.
Takže jednoducho, veci sa prelínajú a keď sa niečo človek principiálne dobre naučí, bude to vedieť použiť aj inde.