Něco málo z teorie

Programovací jazyky

Programovací jazyky jsou jazyky sloužící k tvorbě počítačových programů (programování). Programování je proces algoritmizace dané úlohy, tj. vytváření postupu, jenž vede k řešení dané úlohy.
XML, HTML, WML apod. nejsou programovací jazyky ale jazyky značkovací. Dělení programovacích jazyků

Programovací jazyky se dají rozdělit podle mnoha kritérií. Nejčastější způsoby jsou tyto:
Vyšší a nižší

Nižší programovací jazyky jsou jazyky primitivní, jejichž instrukce (víceméně přesně) odpovídají příkazům procesoru. To znamená, že procesor bude vykonávat ty instrukce, které programátor napíše. Jsou závislé na svém procesoru a nepřenositelné na jiný (nepříbuzný) procesor (program z 386 na Pentiu pojede, ale na Atari (s procesorem Motorola) ne). V praxi to vypadá tak, že programátor musí vypisovat "každou pitomost", i jednoduchý program má neúměrně složitý zdrojový kód. Výhodou je, že programátor má takto přístup i k funkcím počítače, které by měl ve vyšším programovacím jazyce nedosažitelné. Patří sem jazyk symbolických adres (Assembler) a strojový kód (to, co uvidíte, když se vám podaří natáhnout obsah exe souboru do textového editoru). Vzláštním typem nižšího jazyka je tzv. autokód, který spojuje prvky nižších a vyšších jazyků. Vznikl rozšířením Assembleru o jednoduché příkazy pro často používané skupiny instrukcí. Vyšší (problémově orientované) programovací jazyky jsou podstatně srozumitelnější, struktura jejich zdrojáků je logická, nejsou závislé na strojových principech počítače. Do strojového kódu se převádějí kompilátorem (případně se rovnou spouštějí interpretrem viz dále). V praxi je vyšší programovací jazyk vše, co není Assembler, to znamená: Pascal, Basic, Prolog, Lisp, Algol, Fortran, ... Často se uvádí, že jazyk C je jakýmsi přechodem mezi vyššími a nižšími jazyky, má však blíže k vyšším. Imperativní, logické a funkcionální

Imperativní (též procedurální) jazyky jsou téměř všechny jazyky, které se běžně používají. K řešení úlohy se používá algoritmu (postup, jak se má daná úloha vyřešit). Např. Pascal, C, Basic, PHP, Perl, ... U logických jazyků programátor pouze popíše daný problém pomocí logických výroků. Program z nich potom vyvozuje požadované informace. Někdy se používají ke tvorbě umělé inteligence, k praktickému programování jsou nevyužitelné. Např. Prolog. Ve funkcionálních jazycích se vše popisuje pomocí funkcí, často neexistují proměnné, program je vlastně jen složitou soustavou funkcí. Často se pracuje se seznamy. Tento způsob programování je bližší klasické matematice, obecně je však velmi nepřehledný. Avšak pro některé problémy jsou tyto jazyky vhodnější než imperativní. Např. Lisp, Haskell, Miranda, ... Logickým a funkcionálním jazykům se někdy společně říka deklarativní jazyky (též neprocedurální). Některé jazyky mají prvky funkcionální i imperativní. Například víceméně funkcionální Scheme dovoluje programovat i imperativně, naopak imperativní Python umožňuje i funkcionální styl programování. Interpretované a kompilované

Interpretované jazyky jsou překládány až za běhu programu. Jsou pomalejší, ale nemají tak velké formální požadavky (není potřeba inicializovat proměnnou, její datový typ se může za běhu měnit, ukazatele jsou zbytečné). Překládají se interpretrem, ten instrukce zároveň při překladu provádí. Hlavní nevýhodou těchto jazyků je, že se musejí vždy spouštět v interpretru. Do této skupiny patří většina verzí Basicu, všechny skriptovací jazyky (PHP, Python, ...). Kompilované jazyky jsou celé přeloženy a až potom mohou být spušněny. Jsou rychlejší, mají vyšší nároky na formální správnost kódu. Překádají se kompilátorem, výsledkem překladu je (většinou) .exe soubor. Patří sem většina klasických programovacích jazyků. Teoreticky může mít jeden programovací jazyk verzi interpretovanou i kompilovanou.

Další způsoby dělení

Existuje ještě celá řada způsobů, jak dělit programovací jazyky. Např. u imperativních jazyků se mnohdy rozlišují ty, které podporují objektově orientované programování (OOP) nebo programování strukturované. Dělení podle účelu. Zde je velmi obtížné přesně vymezit jednotlivé skupiny. Mnohé jazyky mají velmi široké použití, mnohdy jsou rozšířeny v mírných úpravách na většině operačních systémů. Avšak dosud nebyl vynalezen jazyk, který by byl vhodný úplně na všechno. A asi ani nikdy vynalezen nebude. Například velmi rozšířený jazyk C je vhodný hlavně na programování operačních systémů a dalších "nízkých" aplikací. Assembler se používá k přístupu k hardwaru. PHP se dá použít pouze u internetových stránek. Atd. atd. Jazyky se dají rozdělit na moderní a zastaralé. Toto dělení je však poněkud subjektivní. Mezi moderní jazyky však určitě patří PHP, Python, Delphi a Java. Zastaralé jsou zase např. Algol, Fortran a QBasic. Určitým evrgrínem je jazyk C, který sice vznikl na začátku 70. let, avšak používá se (většinou v modernizované podobě – C++) dodnes. Podobně je na tom i nejstarší programovací jazyk (pokud nepočítám strojový kód) – Assembler. Ten je totiž v některých případech nenahraditelný.