Programování
- je proces psaní instrukcí pro počítač. Tyto instrukce musí být napsané v programovacím jazyku, který zařízení dokáže přečíst a vykonat (tzv. interpretovat) nebo přeložit (kompilovat) do strojového kódu, který může být vykonán,
- zahrnuje nejen samotné psaní kódu, ale také návrh instrukcí a postupů, testování, ladění a optimalizaci programu,
- umožňuje automatizovat úkoly, zjednodušit procesy, analyzovat data, vývoj aplikací, her, webových stránek, desktopových programů a mnoha dalších softwarových řešení.
Programovací jazyk
- komunikační nástroj mezi programátorem a počítačem
- prostředek pro zápis algoritmů (přesných postupů)
- různé verze téhož jazyka nazýváme dialekty (programovacího jazyka)
Programovací paradigma
- je přístup nebo styl řešení problémů a psaní programů
- určuje, jakým způsobem programátor strukturuje a organizuje kód
- ovlivňuje, jak efektivní (rychlý) a čitelný (přehledný) bude výsledný program
- Jednotlivé programovací jazyky využívají jeden ze stylů (paradigmat), existují ale i jazyky, které podporují více stylů.
Typy programovacích jazyků:
Podle spouštění:
- kompilované – musí být před spuštěním přeloženy kompilátorem (překladačem) do strojového kódu a až poté je možné je spustit
např. C++, C#, Java - interpretované – pouze se interpretují (čtou) za pomocí speciálního programu (interpreta),
např. BASIC, Python, HTML, JavaScript
Podle oblasti použití:
- univerzální
- doménově specifické
Podle míry abstrakce:
- vyšší (většina jazyků)
- nižší
Vyšší jazyky se dělí na
- Procedurální (imperativní) – popisuje výpočet pomocí posloupnosti příkazů a určuje přesný postup (algoritmus), jak danou úlohu řešit. Využívá konkrétních existujících příkazů (algoritmů)
- Strukturované – lepší srozumitelnost, jeden vstup a jeden výstupní bod
- Objektově orientované (např. Smalltalk, Java) – kód je propojen s uloženými daty, dož umožňuje snadnější přenos kódu mezi různými projekty a jeho rozvíjení pomocí dědičnosti
- Neprocedurální (deklarativní) – vzniká popisem toho, co má být výsledkem programu (opak procedurálního, které popisuje jednotlivé kroky místo výsledku)
- Funkcionální – výpočet jako vyhodnocení matematických funkcí
- Logické – vyuužívá matematickou logiku
Proces programování:
Rozvoj myšlenky (analýza problému)
- Co potřebuji udělat?
- Jak mi v tom může pomoct počítač?
- Tato fáze slouží k určení úkolu, který chceme řešit a promyšlení způsobu, jak to udělat.
Návrh řešení
- Když už máme jasnou představu, co od programu chceme, navrhneme jeho strukturu, pořadí příkazů (algoritmů) apod. pomocí modelu ve formě diagramů, plánů a tzv. stavového automatu (model chování programu)
Psaní kódu (implementace)
- Až v této fázi začínáme psát kód!
- Vytváříme soubor instrukcí v daném programovacím jazyku
Testování
- Program je potřeba vyzkoušet a prověřit. Nejlépe ho otestuje někdo jiný než autor, který se podvědomě vyhne chybám.
- Práce testera je velice důležitá!
- Není potřeba jen chybu najít, ale také ji umět zopakovat, zjistit, co ji vyvolává a navrhnout řešení
Ladění (debugging)
- Pokud během testování objevíte chyby nebo problémy, musíte je opravit.
- Nejnáročnější část práce!
- Zabere nejvíc času
Dokumentace
- Součástí dokumentace je dobrý popis funkcí přímo v kódu
- U složitějších programů je dokumentace uvedena na webové stránce, nebo v dokumentu přiloženém k programu jako takzvané Reference
- Je důležité nejen pro ostatní lidi, kteří by mohli chtít s programem pracovat, ale i pro vás jako autora, pokud se k programu vrátíte za měsíc nebo později!
Distribuce a údržba
- Program je předán uživatelům, publikován, odevzdán…
- Tím ale práce nekončí!
- Program je potřeba udržovat a aktualizovat a poskytovat technickou podporu