Programování není pouze o syntaxi konkrétního jazyka. Jde především o způsob myšlení, jak problém rozdělit na části a jakým stylem vyjádřit algoritmus. Různé jazyky podporují různá programovací paradigmata – tedy základní přístupy, jak psát kód.

Existují čtyři nejvíce používaná paradigmata:

  1. Procedurální programování
  2. Objektově orientované programování (OOP)
  3. Funkcionální programování
  4. Deklarativní programování

Moderní programovací jazyky si málokdy vystačí pouze s jedním přístupem, a tak vznikají multiparadigmatické programovací jazyky (jako například .NET, Java, atd.), které podporují více přístupů pro psaní kódu.

1. Procedurální programování

Procedurální paradigma vychází ze strukturovaného programování. Program se dělí na procedury (funkce), které vykonávají jednotlivé úlohy. Data se předávají jako argumenty.

Charakteristiky:

  • důraz na kroky (sekvence příkazů)
  • důraz na sdílený stav (globální proměnné bývají běžné, i když nevhodné)
  • dobře odpovídá imperativnímu stylu uvažování - program je sekvence příkazů (příkaz = imperativ), které se vykonávají v přesně zadaném pořadí

Reprezentanti:

  • C – klasický jazyk procedurálního stylu
  • Pascal – historicky významný ve výuce strukturovaného programování
  • Fortran – v technických výpočtech
  • PHP (v raných verzích) – původně čistě procedurální

Ukázka jazyka C:

#include <stdio.h>
 
void greet(const char* name) {
    printf("Hello, %s!\n", name);
}
 
int main() {
    greet("Alice");
    return 0;
}

2. Objektově Orientované Programování (OOP)

OOP organizuje kód kolem objektů – entit, které obsahují stav (data) a chování (metody). Hlavními principy jsou zapouzdření, dědičnost a polymorfismus.

Charakteristiky:

  • třídy a instance
  • dědičnost (odvozování tříd)
  • polymorfismus (stejné rozhraní, různé chování)
  • zapouzdření (ukrývání detailů implementace)

Reprezentanti

  • Java – velmi striktně OOP jazyk
  • C# – silně objektově orientovaný
  • C++ – kombinuje OOP s procedurálním stylem
  • Python – OOP přístup, ale podporuje více paradigmat
  • PHP (od verze 5) – silně rozšířené OOP prvky
  • Ruby – čistě objektově orientovaný jazyk (vše je objekt)

Ukázka jazyka C#:

public class Person
{
    public string Name { get; set; }
 
    public void Greet()
    {
        Console.WriteLine($"Hello, {Name}!");
    }
}
 
public class Program
{
    private static void Main()
    {
        var p = new Person { Name = "Alice" };
        p.Greet();
    }
}

3. Funkcionální

Funkcionální paradigma klade důraz na čisté funkce (bez vedlejších efektů) a práci s funkcemi jako s hodnotami. Časté je používání funkcí vyššího řádu (High order Function = funkce přijímající funkce jako své parametry).

Charakteristiky:

  • neměnnost dat (immutable data)
  • čisté funkce (pure functions) - nemají žádné side-effecty (nedělají nic jiného)
  • funkce vyššího řádu (High order Functions)
  • důraz na deklarativní styl zápisu

Reprezentanti:

  • Haskell – čistě funkcionální jazyk
  • Scala – kombinuje funkcionální a OOP prvky
  • F# – funkcionální jazyk na platformě .NET
  • Erlang – funkcionální, zaměřený na paralelismus
  • JavaScript – podporuje funkcionální styl díky vyšším funkcím a closures
  • C# – díky LINQ a lambda výrazům umožňuje funkcionální přístup
  • Elixir – moderní funkcionální jazyk

Ukázka jazyka Haskell:

-- Definice funkce square
square :: Int -> Int
square x = x * x
 
-- funkce main
main :: IO ()
main = do
    let numbers = [1, 2, 3, 4, 5]
    let squares = map square numbers
    print squares

4. Deklarativní

Deklarativní přístup říká co je cílem udělat, nikoli jak to provést. Typickým příkladem je jazyk SQL nebo třeba XML definice UI.

Charakteristiky:

  • popis co má být provedeno, ne jak to provést
  • vyšší úroveň abstrakce
  • méně detailů o řízení toku programu

Reprezentanti:

  • SQL – deklarativní jazyk pro práci s daty
  • HTML / XML – deklarace struktury dokumentů
  • XAML – deklarace UI v .NET
  • Prolog – deklarativní jazyk s logickým programováním

Ukázka jazyka SQL:

SELECT name
FROM users
WHERE active = 1;