Máte poměrně majoritní názor. Lidé jako vy vidí programování jako proces tvorby nějaké věci, software, která je pak předána koncovému uživateli k používání. Takové programování je skutečně inženýrskou činností, na kterou jsou kladeny nároky jako snadná údržba, spolehlivost atd.
Jenže ono existuje i jiné programování. Pokud jste matematik a děláte nějakou matematickou analýzu, pak vám výpočetní technika může ulehčit práci. Místo počítání na papíru nebo na kalkulačce si můžete výpočet zadat do počítače. A to ve formě programu, kdy pak jen změnou několika parametrů můžete získat řadu výsledků, které potřebujete. Jedná se také o programování, ale nároky jsou diametrálně odlišné – správnost, přehlednost a snadná tvorba. Snad jste někdy absolvoval nějakou pokročilou matematiku a tudíž asi víte o vektorech, maticích, diferenciálním počtu, kombinatorice, statistice apod. Možná vám něco říká i fuzzy matematika nebo algebra. Matematici mají poměrně standardizovaný formát zápisu a jsou na něj velmi vysazení. Pokud místo skalárního součinu dvou vektorů napíšete rozepsaný součin členů, budou velmi naštvaní. A představte si to, tihle matematici, statistici, profesorové algebry a podobná verběž si navíc chtějí programy psát sami. A co víc, oni nechtějí programovat v C, ale chtějí něco, co by se podobalo „jazyku“, který běžně používají! A pak z nich padají jazyky typu ML nebo APL. Kdo se má v tom jejich 5 řádkovém paskvilu vyznat, správný programátor by to napsal hezky jako 3 třídy, ty jejich nesmyslné skalární součiny zprogramoval jako přetížený operátor a všichni by byli šťastní! Místo toho, aby si oni sami 3 minuty psali vlastní program v něčem, co je jejich oboru blízké, mohli to zadat mně, půl dne by mi vysvětlovali co vlastně chtějí, já bych jim to pak za půl dne zanalyzoval a za dalšího půl dne naprogramoval, no a dalšího půl dne by jsme to ladili aby to dělalo to co oni chtějí a ne to jak já jsem to pochopil – kurňa dyť jsem programátor, nemůžou po mně chtít, abych rozuměl té jejich matematické hatmatilce! Pod pojmem „uzávěr“ si představím leda tak práci na silnici a ta nemá s algebrou nic společného!
A kdyby nám do programování chtěli kecat jen matematici! Oni nám do toho chtějí kecat i lidé od simulací. Nebo stavaři – to je nevídaná verbež! A nejhorší jsou lidi od financí!
Pánové.. prosím, podívejte se někdy na jazyky jako je ML nebo APL. Vždyť to vypadá jako podivná programovatelná kalkulačka. Ale… vždyť ano, to MÁ být programovatelná kalkulačka. Když se podíváte na tyhle podivné jazyky, tak zjistíte, že za nimi často stojí profesoři matematiky, statistické úřady, finanční analytici apod. Tihle lidé se „nám“ nesnaží fušovat do „řemesla“ a programovat v tom jaderné ovladače nebo webový blog. Oni se jen snaží použít počítač jako chytrou kalkulačku, pomocí které si ulehčí práci při výpočtu. A stejně tak jako většina programátorů raději píše v C, C++, Javě, C# apod. místo v assembleru, stejně tak oni chtějí do programu psát „skalární součin dvou vektorů“ místo nějakého „for“, který navíc neumí vrátit hodnotu a tak věci ještě víc komplikuje nějakými dočasnými proměnnými.
Zkrátka, tyhle „jejich“ jazyky mají svůj účel, ta jejich „rozsypaná lomítka“ mají svou logiku a tihle lidé těm programům skutečně rozumí na první pohled. Naopak „opravdové“ programovací jazyky přinášejí obrovský balast (s Javou na kalkulačku) a pokud vám bude předložen program na redukci matice, budete bez komentářů jeho účel studovat možná i hodiny, natož pak nalézt v něm chybu, kdy jeden z mnoha cyklů jako maximum bere omylem druhý rozměr (to je příklad z praxe – pro matice M x N, kde M bylo menší rovno N to fungovalo, pro ostatní to kolabovalo – chybu jsme našli po pár minutách, ale hodinu trvalo, než jsme se shodli, zda je to skutečně ta chyba a zda tím naopak nerozbijeme něco jiného jen proto, aby nám prošly unit testy).
A nakonec, pokud vám někdo řekne, že píše v Haskellu webový prohlížeč, tak ho pošlete do … protože na tohle je skutečně lepší něco „imperativního“.

