Objektové programování vs funkcionální programování

Nemám tyhle debaty o programování rád, ale čas od času jsem do nich i já nějakým způsobem zavlečen a musím se v nich, respektive k nim vyjadřít.

Takže předně

Každé programovací paradigma má své nějaké základní parametry, vlastnosti, respektive přímo důvody vzniku, které jej více či méně kvalifikuje pro řešení daného problému. Tohle je si potřeba uvědomit hned a postupovat podle toho. Z toho může po povrchní úvaze, bez hlubších teoretických znalostí vyplynout, že v podstatě vše jde napsat v čemkoliv. Což může být určitě taky pravda…

Na druhou stranu není dobré se dostat do extrému, kdy na základě výše popsané situace s univerzálnosti a všestranností porgramovacích jazyků, dojdete k názoru, že pak je vlastně jedno v čem píšete, a proto vše co píšete, nebo budete psát, budete psát striktně dle jednoho jediného paradigmatu.

Do této pasti se obvykle dostávají buď juniorští programátoři, v lepším případě dobře teoreticky připraveni, ale bez praktických zkušeností, které by jim pomohly identifikovat potřebné signály, které by je vedli k adekvátnějším závěrům, nebo naopak rádoby seniorní programátoři, kteří na nějakou teorii, kterou možná kdysi znali už zapomněli, a vidí jen to svoje.

Co z toho vyplývá?

Vedle každodenního psaní kódu je potřeba se stále vzdělávat. Znát věci nejen prakticky, ale vědět proč a jak fungují. Vědět, co stojí za jejich fungováním. A čím hlouběji půjdete, tím lépe. V dlouhodobém měřítku na tom rozhodně vyděláte.

A tady se dostávám k jednomu z programátorských doporučení: kterýkoliv programátor by se měl každý rok pokusit naučit nějaký nový programovací jazyk. Studiem nového jazyka si osvojujete nová paradigmata, která rozšiřují váši teoretickou znalost. Vedle toho vám tyto nově nabité poznatky dovolí podívat se na každodenně řešené úkoly novým úhlem pohledu a umožní vám úkol řešit novým způsobem, nebo i novým paradigmatem. Možná i novým programovacím jazykem… 🙂

A kde začít?

Našel jsem velice pěkný článek, který se dá použít jako materiál pro vlastní argumenty k těmto diskusím…

Kam dál?

Funkcionální programování
Deklarativní programování
Imperativní programování
Strojový kód
Referenční transparentnost
Strukturované programování
Objektově orientované programování
Multiparadigmatický programovací jazyk

Tenhle ví o programování skutečně všechno…