Vývoj programovacích jazyků

Z MediaWiki SPŠ a VOŠ Písek
Verze z 11. 6. 2010, 08:32, kterou vytvořil Sfroula (diskuse | příspěvky) (Založena nová stránka: *Pod pojmem programovací jazyk rozumíme prostředek pro zápis programů, jež mohou být provedeny na počítači. V tomto smyslu je programovací jazyk komunikačním n…)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Skočit na navigaci Skočit na vyhledávání
  • Pod pojmem programovací jazyk rozumíme prostředek pro zápis programů, jež mohou být provedeny na počítači. V tomto smyslu je programovací jazyk komunikačním nástrojem mezi uživatelem počítače, který jeho jazykovými prostředky specifikuje algoritmus řešení daného problému, a počítačem, jenž svými technickými prostředky algoritmus interpretuje a realizuje tak transformaci vstupních údajů na výstupní.
  • 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ělění programovacích jazyků

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

Vyšší a nižší

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šší

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ý.

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ýznamě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). Mám jej na vlastní stránce.

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.

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, ...).

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).

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č.

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

List processing. 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, ...

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í.

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

String Oriented 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

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.

Literatura

http://k-prog.wz.cz/progjaz/index.php

http://www.fi.muni.cz/usr/jkucera/pv109/2000/xkrubova.htm


--Sfroula 11. 6. 2010, 08:32 (UTC)