Nejvíce old-school programovací jazyky

První program

Možná si pamatujete – ať už z hodin historie, z lístečků na Seznamováku nebo z minulého čísla věnovaného ženám v informatice – že první programátorkou na světě byla Ada Lovelace, dcera lorda Byrona. Za program který napsala, je považována její sada poznámek k výpočtům na mechanickém stroji zvaném Analytical Engine. Ten byl navržen (ovšem nikdy nesestrojen) již v roce 1837 Charlesem Babbagem. Také povědomé jméno, ne?

Ačkoliv ovšem byla k tomuto stroji zpětně sestavena jakási sada strojových instrukcí, originální poznámky lady Ady se rozhodně nedaly považovat za nic, co by bylo nějak blízké zdrojovému kódu. Úsvit programovacích jazyků tedy nastal až o něco později. Mnohem později.

O sto let později

Znáte ten kód, který vypadá, jako by byl textem k písni skupiny Rammstein? Tak s ním nemá první programovací jazyk vůbec nic společného. Narozdíl od něj ovšem skutečně pochází, možná trochu překvapivě, z Německa. Koncept jménem Plankalkül (čti se správně drsným německým přízvukem) začal navrhovat Konrad Zuse v roce 1943. Na tomto notačním systému, ze kterého se stal předek toho, čemu dnes říkáme programovací jazyky, je zajímavé to, že jeho původní zápis byl dvoudimenzionální a teprve mnohem později byl němu vymyšlen i zápis lineární. Jde o formální systém připomínající relační algebru a jeho pár klíčových slov je celkem nudně v angličtině.

Zde je malá ukázka lineárního zápisu:

P1 max3 (V0[:8.0],V1[:8.0],V2[:8.0]) → R0[:8.0]
max(V0[:8.0],V1[:8.0]) → Z1[:8.0]
max(Z1[:8.0],V2[:8.0]) → R0[:8.0]
END
P2 max (V0[:8.0],V1[:8.0]) → R0[:8.0]
V0[:8.0] → Z1[:8.0]
(Z1[:8.0] < V1[:8.0]) → V1[:8.0] → Z1[:8.0]
Z1[:8.0] → R0[:8.0]
END

Rozjezd po WWII

A pak už přicházel jeden programovací jazyk za druhým. Opravdu? Ehm, ne tak docela. Během 40. let vzniklo jen pár kódů, které se dají nazvat vyššími programovacími jazyky. Všechny navíc vznikly dost podobným způsobem. Když totiž měli Američané po druhé světové válce chvilku času na oddech, tak zjistili, že je úplně nebaví lézt po celé místnosti a zapojovat podle předem vymyšlených schémat dráty u ENIACu a dalších, v té době poněkud rozložitějších, počítačích. Vymysleli tedy primitivní systém, jak takové počítače donutit číst programy z read-only paměti.

Při té příležitosti vzniklo hned několik kódovacích systémů, neboli v podstatě programovacích jazyků, které definovaly, jak takový program zapsat. Nejznámější z nich je pravděpodobně Short code, který vznikl v roce 1949. Fungoval pěkně, jen s jedním drobným nedostatkem – interpretované programy pod ním běhaly asi 50x pomaleji, než kdyby je tam nacvakali ručně. Ale za pohodlí se holt platí – to vám potvrdí každý Java programátor.

A teď už doopravdy!

Když teď přeskočíme pár jazyků, které stejně nikdo nezná, tak můžeme říct, že se konečně dostáváme k jazykům, které jsou celkem známé. Za prvního zástupce z nich se dá považovat FORTRAN, což je zkratka je složena ze slov „Formula Translation”. To naznačuje jednak to, že přecházíme od matematických vzorců ke skutečným programovacím jazykům, a jednak to, že i všechny programy v tomto jazyce na vás budou křičet s takto „zaseknutým Caps Lockem”.

FORTRAN je velmi zajímavý jazyk. Přestože ho firma IBM vyvinula již v roce 1955, dokázal se po desetiletí udržet mezi nejpopulárnějšími programovacími jazyky. V jisté míře se používá i doteď, především u benchmarků nejvýkonnějších superpočítačů. To je ostatně blízko účelu, ke kterému byl stvořen a ke kterému byl i celé půl století využíván: pro svět intenzivních výpočtů, simulací a fyzikálních modelů. Pochopitelně, že od původního konceptu a první implementace až k současné podobě prošel značným vývojem, během kterého získal řadu nových vlastností. A tento vývoj stále není u konce – verze označovaná jako Fortran 2015 se právě připravuje.

Ty zatracené závorky

Další zastávku uděláme u programovacího jazyku (dokonce u rodiny programovacích jazyků, abych byl přesný), který se opět částečně používá i dodnes, například v softwarovém balíku AutoCAD nebo ve zvukovém editoru Audacity. Je o pouhý rok mladší, než FORTRAN a je jím… Lisp!

Jeho zkratka neznamená „Lots of Irritating Superfluous Parentheses”, jak se občas s nadsázkou uvádí, ale obyčejné „LISt Processor”. Každopádně oba názvy jsou poměrně výstižné: základními kameny Lispu jsou spojové seznamy, tedy lists, a tyto spojové seznamy jsou vždy ohraničenými kulatými závorkami, kterých tím pádem v programu nebývá zrovna málo.

Jednoduchý výpočet faktoriálu pak může vypadat například takto:

(defun fact (n)
   (if (zerop n)
      1(* n (fact (- n 1)))))

Algoritmy, algoritmy, algoritmy…

Zatímco vycházela druhá verze FORTRANu a Lisp byl zatím pouze konceptem na papíře, zrodil se ALGOL 58 (z čehož lze i bez pokročilého logického uvažování odvodit rok vydání). Z předchůdců dnešních programovacích jazyků byly jazyky z rodiny ALGOL zásadní, protože je na nich postaveno mnoho dalších jazyků včetně Pascalu – a to už přímo implikuje, že z něj těží i C. Jako první přinesl do programování bloky kódu, ohraničené klíčovými slovy beginend, a s tím spojené lokální proměnné. Syntaxe tohoto jazyka byla navíc definována matematicky přesně v tzv. Backus-Naurově formě, což po něm převzaly téměř všechny následující programovací jazyky.

Čo bolo, to bolo

Jestli se dá některý z programovacích jazyků označit slovy “die hard”, není to ani C, ani PHP, ale COBOL. Od počátku byl navržený pro oblast businessu a udržel se v ní dodnes.

COBOL byl vytvořen v roce 1959 za situace, kdy jediným mainstreamovým jazykem byl FORTRAN, který se ovšem pro obchodní účely nehodil. Hlavním požadavkem při jeho vytváření byla verbozita a čitelnost, jehož důsledkem je to, že COBOL používá cca 300 rezervovaných slov. Jeho programy pak připomínají text v anglickém jazyce (tedy opět až na verzálky, v té době snad všudypřítomné):

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.

ENVIRONMENT DIVISION.

DATA DIVISION.

PROCEDURE DIVISION.
DISPLAY "Hello, world!".
STOP RUN.

Vzhledem k malé podpoře strukturovanosti programů je každý trochu větší projekt v COBOLu tvořený nepřehledným spaghetti kódem. Banky a další podobné instituce v současnosti naříkají zoufalstvím, protože zkušení COBOL programátoři již pomalu odcházejí do důchodu a jejich systémy, jejichž upgrade by byl velmi finančně nákladný, nemá kdo udržovat.

Univerzální symbolické kódové instrukce pro začátečníky

Na závěr se z vyšších sfér superpočítačů a businessu přesuneme do škol. Programovací jazyk BASIC, neboli „Beginner’s All-purpose Symbolic Instruction Code”, byl vytvořen v roce 1964 speciálně pro výukové účely, což se mu díky relativní srozumitelnosti, kompilátoru poskytovanému zdarma a dobré podpoře podařilo. Možná i vaši tatínkové nebo maminky v něm na sálových počítačích programovali.

Stejně jako předchozí zástupci, i BASIC žije v různých transformacích dodnes. Nejrozšířenější je pravděpodobně Visual Basic od Microsoftu, známý především z maker VBA v aplikacích MS Office. Pravdou ovšem je, že s původním BASICem už toho má na první pohled společného pramálo.

Závěrem

V tomto místě časové osy, orientačně 8 let před vznikem jazyka C, náš průlet kmety programovacích jazyků zakončíme. Je vidět, že přes překotný vývoj posledních desetiletí jsou stále oblasti, kde čas běží trochu jinak a tyto dávno překonané programovací jazyky jsou stále používány, ačkoliv mnohdy ne zcela dobrovolně. Ale na druhou stranu, až budete zase jednou programovat pro assembler, vzpomeňte si s vděkem na lidi, kteří vytvořili to, čemu dnes říkáme vyšší programovací jazyky.

Zdeněk Kasner

Do fakultního časopisu jsem trvale přispíval od roku 2014. Po bakaláři z FITu jsem ovšem dezertoval na FEL, čímž jsem se stal ex-redaktorem – externím redaktorem. Rád bych se časopisu věnoval i dál, ovšem protože je málo času (a vzhledem k mé fakultní příslušnosti mohu přispívat pouze do rubriky “Zprávy ze zahraničí”), moje články existují pouze v kvantové superpozici. Neboli nevěřte, že nějaký skutečně bude, dokud ho neuvidíte na vlastní oči! 🙂 Kontaktovat mě můžete na kasnezde@fit.cvut.cz.