http://195.113.171.141/weby/python/


Formální a přirozené jazyky

Přirozené jazyky jsou jazyky, kterými lidé hovoří - čeština, angličtina, španělština, atd. Tyto jazyky nebyly člověkem vytvořeny (i když se snaží jim vnutit jistá pravidla), vyvinuly se přirozenou cestou.

Formální jazyky jsou jazyky, které sestavil člověk pro nějaký účel. Matematika například používá svůj formální jazyk k vyjádření vztahů mezi čísly a symboly. Chemici používají svůj formální jazyk k zobrazení chemických struktur.

Programovací jazyky jsou formální jazyky, které byly vytvořeny jako výrazový prostředek pro usměrnění práce počítače.

Formální jazyky mívají přísná pravidla pro skladbu (syntaxi). Například, 3+3=6 je syntakticky správný matematický výraz, ne už 3=+6$. H2O je syntakticky správné chemické označení, na rozdíl od 2Zz.

Pravidla skladby jsou dvojího druhu. Ty, které určují použitelné znaky (tokens) a ty, které určují jejich vzájemné propojení (strukturu). Znaky jsou základní prvky jazyka, jako jsou slova, čísla a chemické prvky. Jedním z problémů zápisu 3=+6$ je to, že $ není legálním znakem v matematice. Podobně zápis 2Zz není legální proto, že neexistuje chemický prvek se zkratkou Zz.

Druhý typ chybné skladby souvisí se strukturou výrazů, to je se způsobem, jakým jsou znaky uspořádány. Výraz 3=+6$ je skladebně nesprávný, protože nelze umístit znak plus bezprostředně za rovnítko. Rovněž tak označení molekul musí mít index za jménem, nikoliv před ním.

Čteme-li větu v angličtině či češtině nebo výraz formálního jazyka, musíme rozpoznat, jaká je jejich skladba. Tomuto procesu, který u přirozeného jazyka provádíme podvědomě, říkáme parsing, neboli analýza skladby.

Slyšíme-li například větu "Svíce mu dohořela", rozumíme, že "svíce" je podmět a "dohořela" je přísudek. Jakmile takto rozebereme větu, můžeme usoudit co vyjadřuje, neboli určit její sémantiku. Za předpokladu ovšem, že víme co znamená slovo svíce a co slovo dohořela.

I když formální a přirozené jazyky mají mnho společných rysů - znaky, strukturu, syntaxi a sémantiku - mají také mnoho rozdílů:

mnohoznačnost
Přirozené jazyky jsou plny mnohoznačností, s nimiž se lidé vyrovnávají pomocí větných souvislostí a jiných doplňkových informací. Formální jazyky jsou navrhovány tak, aby byly téměř úplně jednoznačné, to znamená, že každý výraz má pouze jeden význam bez ohledu na souvislosti.
nadbytečnost
Mnohoznačnost a z toho plynoucí možnost nedorozumění se u přirozených jazyků vyvažuje nadbytečností výrazů. Formální jazyky jsou méně nadbytečné (redundantní) a více stručné (concise).
doslovnost
Přirozené jazyky jsou plné idiomů a metafor. Řeknu-li "Svíce mu dohořela", mluvím jako poeta a nechci tím zajisté říci, že má teď o jednu hořící svíčku méně, nýbrž že skonal. Formální jazyky míní přesně to, co říkají.

Protože přirozený jazyk používáme od nejútlejšího dětství, můžeme mít problémy s používáním formálního jazyka. Někdy lze rozdíl mezi formálním a přirozeným jazykem přirovnat v menší míře k rozdílu mezi prózou a poezií.

poezie
Slova jsou užita pro jejich znění stejně jako pro jejich význam a celá báseň vyvolává emociální odezvu. Mnohoznačnost je nejenom častá, ale i často záměrná.
próza
Doslovný význam slov je zde více důležitý a větná skladba přispívá k významu vět. Próza je použitelnější pro analýzu než poezie, přesto je stále ještě příliš mnohoznačná.
programy
Význam počítačového programu je jednoznačný a doslovný a může být určen pouhou analýzou jeho znaků a struktury.

Zde je několik rad pro čtení programů (a jiných formálních jazyků). Za prvé, mějme na paměti, že text formálního jazyka je významově zhuštěnější než text přirozeného jazyka a proto jeho čtení zabere více času. Také jeho struktura je velice důležitá, takže nebývá dobrým nápadem číst pouze zhora dolů, zleva doprava. Místo toho si zvykejme provádět v mysli rozbor skladby (parsing), rozeznávaje znaky a hodnotíce strukturu. Nakonec nezapomínejme, že záleží na maličkostech. Nepřesnost, která nám projde v přirozeném jazyce, má ve formálním jazyce dalekosáhlý význam.


1.2 Co je program?

Program je posloupnost instrukcí, které určují jak má být výpočet proveden. Výpočtem může být řešení matematické úlohy, jako je např. řešení systému rovnic či určení kořenů polynomu nebo jím může být symbolický výpočet, jako je vyhledání a výměna textu v dokumentu nebo (kupodivu) kompilování programu.

Podrobnosti se v různých jazycích liší, ale některé základní instrukce se vyskytují téměř v každém jazyce:

vstup (input)
Vložit údaje (data) z klávesnice, souboru či jiného zařízení.

výstup (output)
Zobrazit údaje (data) na obrazovce nebo je poslat do souboru či jiného zařízení.

matematika (math)
Provést základní matematické operace jako je například sčítání a odčítání

podmíněné provedení (conditional execution)
Ověřit jisté podmínky a provést příslušnou posloupnost příkazů.

opakování (repetition)
Provést něco opakovaně, obvykle s jistou obměnou.

Věřte či nevěřte, to je téměř všechno z programování. Každý program, který kdy použijete, jakkoliv komplikovaný, se bude skládat z instrukcí více či méně podobných výše uvedeným. Programování můžeme vlastně prezentovat jako proces rozdělování komplexní úlohy do menších a menších podúloh, až tyto podúlohy jsou tak jednoduché, že se dají provést pomocí těchto zákládních instrukcí.