14. 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 zdrojových 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, …

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áme strojový kód) – Assembler. Ten je totiž v některých případech nenahraditelný.

Přehled programovacích jazyků

Programovacích jazyků je ohromné množství a stále vznikají další a další. Zde je soupis těch asi nejvýznamnějších.

Ada

Jazyk určený k výrobě bezpečných a spolehlivých programů. Vyznačuje se velmi silnou typovou kontrolou. Velmi univerzální jazyk, píše se v něm i řídící software pro různé stroje včetně letadel, raketoplánů a dalších. Syntakticky vychází z Pascalu.

Algol

Algorithmic Language = algoritmický jazyk. Jeden z nejstarších programovacích jazyků (byl vytvořen na přelomu 50. a 60. let). Byl zaměřen na řešení zejména vědeckých a technických úloh. Ačkoliv obsahoval mnoho moderních prvků (které se používají dodnes), příliš se nerozšířil. Je základem všech moderních jazyků. Existuje spousta verzí Algolu, např. Algol 58, Algol 60, Algol 68.

APL

A Computer Programing Language = počítačový programovací jazyk. Programovací jazyk, jehož syntaxe vychází z matematické notace, nepodobá se tedy žádnému jinému programovacímu jazyku. Má speciální sadu znaků, nedá se zapisovat pomocí ASCII kódování, ale kódování Unicode už stačí. Má velmi úsporný kód a vynikající vyjadřovací schopnosti.

ASP

Active Server Pages. Serverový skriptovací jazyk od Microsoftu. Má obdobné možnosti jako PHP, ale poněkud složitější syntaxi. Existuje jen na serverech s operačním systémem windows.

Assembler

Assembler = sestavitel (programu).

Baltazar a Baltík

Programovací jazyky českého původu, určené pro výuku programování u dětí. Baltazar je bližší normálnímu programovacímu jazyku, programy se v něm tvoří z klávesnice, používají se v něm česká slova a je určen zejména starším dětem. Naproti tomu Baltík je určen těm nejmenším, ovládá se pouze myší a soustředí se na rozvoj logického myšlení.

Basic

Beginners All-purpose Symbolic Instruction Code = Pro začátečníky určený víceúčelový programovací prostředek. Odkaz.

C

Jazyk relativně nízké úrovně, původně zaměřený na programování operačních systémů. Má velmi úsporné vyjadřování, a proto je poněkud nepřehledný. Existuje velké množství rozšíření jazyka, nejznámější je objektově orientované C++. Syntaxi „céčka“ převzala pousta dalších jazyků (PHP, Java, Perl, …).

Přehled syntaxe C/C++

Cobol

Common Business Oriented Language = obecně obchodně orientovaný jazyk. Jeden z nestarších vyšších programovacích jazyků. Vznikl z potřeby programovacího jazyka pro obchodní a ekonomické úlohy, pro úlohy s hromadným zpracováním dat. Opět existuje mnoho verzí tohoto jazyka, např. Cobol-60, Cobol-61, Cobol-65, Cobol-69,…

Delphi

Programovací jazyk pro Windows. Správně se jmenuje Object Pascal (objektově orientovaný Pascal). Jeho prostředí je vizuální, to znamená, že programátor určuje vzhled programu „kreslením“ myší, stejným způsobem i vytváří některé části kódu. Samotný kód se celý skládá z procedur – reakcí na události (klik na prvek, …).

Fortran

Formula Translation = překlad vzorců. Vůbec první vyšší programovací jazyk. Vznikl v padesátých letech 20. století (první oficiální verze 1957), byl vhodný spíše k matematickým výpočtům. Znamenal ohromný pokrok ve vývoji programování, v podstatě všechny vyšší jazyky z něj (alespoň nepřímo) vycházejí. Dnes se používá již jen velmi málo.

HTML

Není programovací jazyk, ale jazyk pro práci s hypertextem (resp. formát hypertextu).

odkaz Značkovací jazyky

Java

Objektově orientovaný programovací jazyk nezávislý na platformě. Vyvinula jej firma Sun Microsystems. Používá se téměř všude, jako doplnění internetových stránek klientským skriptem (java applet), serverový skript (JSP), stejně jako na hry do mobilů i obyčejné programy pro jakýkoli operační systém. Vychází z jazyka C++ (jako mnoho jiných jazyků), který poněkud zjednodušuje. Jako konkurenční jazyk od Microsoftu vznikl C#.

JavaScript

Nejčastěji používaný internetový klientský skriptovací jazyk. Proběhne až v internetovém prohlížeči (na rozdíl např. od PHP, které proběhne už na serveru). Z bezpečnostních důvodů může ovlivňovat jen internetovou stránku, nikoli uživatelský počítač. Podobně je na tom i méně používaný VBScript. Odkaz na JavaScript

Karel

Jednoduchý, prakticky nevyužitelný interpretovyný jazyk určený k výuce programování. Má pouze několik málo příkazů (záleží na verzi, většinou do jedné desítky). Těmito příkazy je ovládán robot, který se dokáže pohybovat se ve svém „městě“ a zvedat/pokládat značky. Původně byl anglický (byl však nazván česky: Karel po Karlu Čapkovi). Byla vytvořena i počeštěná verze s českými příkazy. Existuje i objektově orientovaný Karel++.

Lisp

Lisprocessing. Nejstarší neprocedurální jazyk. Veškeré problémy řeší pomocí symbolů a jejich seznamů. Používá se v programování umělé inteligence. Má velké množství dialektů. Odvozeny jsou od něj např. jazyky Tcl, Scheme, …

Logo

Interpretovaný programovací jazyk určený pro výuku dětí. Vychází z Lispu. Je známý zejména pro kreslení v tzv. „želví“ grafice – po kreslící ploše se pohybuje podle pokynů programátora „želva“, která za sebou nechává barevnou stopu.

Modula 2

Vychází z Pascalu, používal se i ke tvorbě hodně velkých projektů, podporuje modulární programování.

Pascal

Pascal je název programovacího jazyka, původně určeného hlavně k výuce programování. Jeho různé varianty a odvozeniny se však používají i k programování reálných aplikací. Jeho název byl zvolen na počest francouzského filosofa, matematika a fyzika Blaise Pascala.

Programovací jazyk Pascal navrhl na začátku 70. let profesor Niklause Wirtha z Vysoké školy technické v Curychu s těmito cíli:

  • vytvořit jazyk vhodný pro výuku programování, který by byl založen na omezeném počtu srozumitelných konstrukcí,
  • navrhnout strukturu jazyka tak, aby jej bylo možné snadno implementovat na většině tehdejších počítačů.

První verze Pascalu byla publikována v roce 1970, mírně opravená definice jazyka vyšla v roce 1974. V roce 1981 byla vydána norma ISO. Většina implementací Pascalu se od normy ISO více či méně odchyluje, zejména zavedením dalších konstrukcí zjednodušujících praktické programování. V oblasti PC dosáhla patrně největšího úspěchu implementace Turbo Pascal firmy Borland. Objektové rozšíření Pascalu se pak stalo i základem systému Delphi téže firmy.

Perl

Practical Extraction Report Language. Téměř univerzální interpretovaný jazyk. Dá se v něm napsat prakticky cokoliv, ale v praxi se používá zejména k psaní CGI skriptů (internetová technologie, serverový skript založený na výstupu .exe souboru) a v těch případech, kdy je potřeba složitě zpracovávat text. Je dosti nepřehledný.

PHP

Personal Home Page Tools (zkratka se vyvíjela – např.:Personal Home Page Construction Kit, dnes: PHP:Hypertext Preprocesor, a to první P je z historických důvodů.).

Internetový skriptovací jazyk (serverový) používaný k tvorbě webových stránek. Instrukce se vkládájí do HTML kódu, syntaxe je podobná jazyku C. Práce programu probíhá v serveru, na uživatelský počítač se posílají jen výsledky. Má ohromné možnosti: dokáže pracovat s databázemi, s velkým množstvím internetových protokolů (IMAP, POP3, SMTP – zpracování emailů; NNTP – news protokol; …), dokáže vytvářet obrázky a PDF soubory, má spoustu funkcí na zpracování řetězců, … Navíc je zdarma a volně šiřitelné! Oficiální stránky: www.php.net.

Další serverové skriptovací jazyky (ale už ne tak dobré) jsou: zastaralé SSI a výlučně windowsácké ASP.

PL/1

Programing Language 1. Starý neúspěšný programovací jazyk vycházející z Fortranu. Nepoužívá se. Byl to první pokus o co nejuniverzálnější programovací jazyk.

Prolog

Programming in Logic = logické programování. Je to neprocedurální jazyk (na rozdíl od většiny ostatních jazyků), popisuje programátorský problém pomocí logických výroků. Používá se k řešení problémů, které se dají popsat ve formě objektů a vztahů mezi nimi, k tvorbě umělé inteligence. Celý program v Prologu vypadá jako výpis jednoduchých vztahů mezi objekty. Z nich potom Prolog vyvozuje další informace na základě našich dotazů. Praktické využití Prologu je velmi malé.

Python

Název odvozen z názvu britského pořadu Monty Python’s Flying Circus. Python je značně univerzální interpretovaný programovací jazyk, rozšířený na všech běžně používaných operačních systémech. Má obdobné vlastnosti jako Perl, k němuž bývá často přirovnáván. Oproti němu je však přehlednější.

Scheme

Jazyk odvozený od Lispu, někdy považován za jeho dialekt.

Simula

Simple Universal Language – jednoduchý univerzální jazyk. Objektově orientovaný jazyk vhodný pro počítačovou simulaci.

Snobol

StrinOriented Symbolic Language – Jazyk určený pro práci s řetězci. První jazyk zaměrený zejména na zpracování textových řetězců. V dnešní době byl nahrazen zejména Perlem a dalšími jazyky.

SSI

Server Side Includes – vsuvky na straně serveru. Jednoduchý zastaralý serverový skriptovací jazyk. Nemá zdaleka takové možnosti jako PHP nebo ASP.

Tcl

Tool Command Language. Univerzální skriptovací jazyk. Je oblíben zejména díky knihovně Tk, která umožňuje psát programy s grafickým rozhraním.

Visual Basic

Programovací jazyk pro Windows od Microsoftu. Má vizuální prostředí. Dají jím vytvářet jak klasické aplikace, tak i makra do dokumentů wordu. Má prvky mnoha moderních jazyků (je objektově orientovaný), ale přetrvávají i zastaralé qbasicovské vlivy (absence složeného příkazu, „repeat..until styl“ všech cyklů i podmínek – viz QBasic).

VBScript

Visual Basic Script. Internetový skriptovací jazyk, běžící u klienta, obdoba JavaScriptu. Vychází z Visual Basicu. Jeho největší nevýhoda (oproti JavaScriptu) je, že jej podporuje jen IE. V podstatě se jedná o nepovedený pokus Microsoftu konkurovat JavaScriptu. Údajně jde jeho zdroják zakódovat, aby nešel okopírovat.

XML

Není programovací jazyk, ale jazyk pro práci s daty.

Základy programování

  • Programování – algoritmus, program, postup při tvorbě programu, metody programování
  • Programovací jazyky – rozdělení, srovnání – Pascal, Delphi, C# a Java
  • Vývojový diagram – značky a zásady, příklad diagramu
  • Programové struktury – podmínky, větvení, cykly – znázornění ve VD

Programování

  • Základní pojmy
    • algoritmus – postup řešení problému – recept, výrobní návod, návod k obsluze …
    • počítačový algoritmus – jednoznačný postup pro zpracování dat
    • program – posloupnost příkazů, která určuje způsob zpracování dat
  • Postup při tvorbě programu
    • Analýza problému – definice zadání a možností řešení dané úlohy
    • Koncept řešení – volba metod řešení, rozložení řešení na dílčí úlohy
    • Sestavení algoritmu řešení – návrh datové struktury, zápis algoritmu
    • Zápis programu v programovacím jazyce
    • Ověření programu – překlad – kompilace a ověření správnosti programu
    • Optimalizace programu – vylepšování programu, kontrola vstupních a výstupních dat
  • Metody programování
    • Strukturované programování – členění programu na jednoduché celky – struktury
    • Vizuální programování – sestavení programu pomocí vizuálních komponent a řídících akcí
    • Objektové programování – řešení je modelováno pomocí objektů, které obsahují data i metody zpracování

Programovací jazyky

  • Rozdělení

podle úrovně 

  • nižší pr. jazyky – využití sady instrukcí procesoru
Strojový kód nebo Assembler
  • vyšší programovací jazyky – srozumitelné příkazy a instrukce překládány pro OS a procesor
C, C#, Java, Pascal, VisualBasic …

podle způsobu překladu 

  • interpretované – spouštěné v běhovém prostředí(Interpreter), které postupně překládá a vykonává příkazy
JavaScript, PHP, Python …
  • kompilované – přeložené do spustitelného tvaru (exe) pomocí překladače (kompilátoru)
C, C#, Java, Pascal, VisualBasic …
  • Srovnání

C 

  • historicky nejstarší, vyvinutý v 70. letech pro OS Unix, předchůdce C++, Java a C#
  • programování OS, systémových aplikací, překladačů a interpreterů

Pascal 

  • jazyk vyvinutý na univerzite v Curychu v 70. letech pro výuku programování
  • programování aplikací pro DOS – TurboPascal, pro Windows – ObjectPascal a Delphi

Delphi 

  • v podstatě objektově rozšířený jazyk Pascal využívající vizuální komponenty (VCL)
  • rychlý vývoj jednodušších aplikací pro Windows

C# 

  • moderní, univerzální jazyk vyvíjený Microsoftem pro Windows
  • využívá běhové prostředí a knihovny MS .NET

Java 

  • univerzální, vyvinutý firmou SUN Microsystems v 90. letech
  • nejpoužívanější, vychází z C a C++, Open source licence
 
jazyky 

Vývojové diagramy

  • Vlastnosti a značky
    • názorný způsob zobrazení způsobu řešení úlohy
    • normalizované značky ČSN 36 9030 a ČSN ISO 58071996
  • Příklad diagramu

Programové struktury

  • Podmínka neúplná
  • Podmínka úplná
  • Vícenásobné větvení
  • Seskupení příkazů
  • Cyklus se podmínkou na začátku
  • Cyklus s podmínkou na konci
  • Cyklus s počítadlem