Rozcestník

Počátky programovacích jazyků: první algoritmy

Tkalcovský stav a děrné štítky

V 18. a 19. století proběhly v tkalcovství takové technologické inovace, které původně ruční řemeslo změnily k nepoznání. Tkalcovství, proces proplétání vláken při výrobě tkaniny, se vyvinulo z ruční práce na automatizovanou, přičemž jedním z klíčových vynálezů byl žakárový tkalcovský stav, pojmenovaný po francouzském tkalci a vynálezci Josephu Marie Charlesovi Jacquardovi (1752–1834). Tkalci čelili výzvám při vytváření složitých vzorů a technologický pokrok v tomto období měl hluboký sociální a ekonomický dopad na tkalcovský průmysl i celou společnost. [1]

Výhody a nevýhody žakárového tkalcovského stavu:

Žakárový tkalcovský stav, který Jacquard vynalezl na počátku 19. století (1801), znamenal revoluci v tkalcovské výrobě. Jeho hlavní výhoda spočívala v použití děrných štítků pro kontrolu vzoru, což umožnilo automatizovanou reprodukci složitých vzorů. Tím se zvýšila efektivita a přesnost tkaní a snížila se závislost na ruční práci. Složitost systému děrných štítků však představovala výzvu, protože jakákoli chyba nebo poškození štítků mohly narušit proces tkaní. Počáteční náklady na žakárové tkalcovské stavy a jejich údržbu byly vysoké; drobní tkalci si moderní stavy nemohli pořídit. [2]

Sociální a ekonomické dopady:

Zavedení žakárových tkalcovských stavů mělo dalekosáhlé důsledky pro tkalcovský průmysl a společnost. Na jedné straně vedlo ke zvýšení produktivity a schopnosti masové výroby složitých tkanin, což podpořilo hospodářský růst v textilním odvětví. Na druhé straně vedla mechanizace k vytlačení kvalifikovaných ručních tkalců, což vedlo k sociálním nepokojům a protestům (rozbíjení strojů ve 40. letech 19. století). Přechod k mechanizované výrobě přispěl k zrychlení procesu první průmyslové revoluce, která zásadně změnila tradiční a dosavadní způsoby výroby a práce. [3]

Ada Lovelace a analytický motor:

Ada Lovelace (Augusta Ada King, hraběnka z Lovelace /1815–1852/, narozená jako Augusta Ada Byron), dcera básníka lorda George Gordona Byrona (1788–1824), se od útlého věku zajímala o matematiku. Její nadšení žakárovým tkalcovským stavem, který používal děrné štítky, v ní vzbudilo zájem o možnosti strojů provádět složité výpočty. V roce 1833 se na jednom setkání seznámila s Charlesem Babbagem (1791–1871), vynálezcem diferenčního a analytického stroje.

Překlad a anotace Menabreaova článku:

Ada Lovelace přeložila a rozsáhle opatřila poznámkami článek o Babbageově analytickém motoru, který napsal italský inženýr Luigi Federico Menabrea (1809–1896). Ve svých poznámkách šla nad rámec pouhého překladu, nabídla vlastní postřehy a rozšířila možnosti analytického motoru. Lovelace si stroj představovala nejen jako kalkulačku, ale jako univerzální zařízení schopné manipulovat se symboly a vytvářet složité sekvence operací. [4]

Použití děrných štítků v programování:

Nejvýznamnějším přínosem Ady Lovelace bylo její rozpoznání potenciálu děrných štítků jako prostředku pro instrukce analytického stroje. Ve svých poznámkách popsala, že děrné štítky mohou reprezentovat nejen číselné hodnoty, ale také symboly a operace. V podstatě navrhla koncept stroje, který by bylo možné naprogramovat tak, aby prováděl různé úlohy nad rámec čistě numerických výpočtů, a položila tak základ myšlence univerzálního počítače.

Lze shrnout, že spojení Ady Lovelace s žakárovým tkalcovským stavem a její spolupráce s Charlesem Babbagem sehrály klíčovou roli v rané historii výpočetní techniky. Její vizionářské myšlenky o programování analytického stroje pomocí děrných štítků předznamenaly širší koncept algoritmického myšlení a položily základy pro vývoj moderních počítačů. [5]

Samohrající klavír a rozvoj ukládání informací na štítcích

Vývoj technologií automatického zpracování hudby a dat na konci 19. a počátku 20. století vedl k propojení strojírenství, elektrotechniky, hudby a raných počítačových konceptů. Pozoruhodným příkladem tohoto vývoje je automatický klavír, zvaný také pianola.

Automatická piana:

Samohrající klavíry, vynalezené koncem 19. století, získaly obrovskou popularitu na počátku 20. století. Tyto klavíry využívaly pneumatické nebo elektromechanické systémy k automatickému přehrávání hudby. Klíčovou inovací bylo použití kovových nebo perforovaných papírových válců, které obsahovaly řadu otvorů představujících noty a jejich trvání. Po vložení do klavíru tyto válečky spustily odpovídající klávesy, čímž vzniklo pozoruhodně realistické přehrání hudební skladby. Samohrající klavíry tak přinesly hudbu do domácností, aniž by bylo třeba zkušeného klavíristy, a znamenaly tak významný skok v zábavní technologii [6] před nástupem rozhlasového vysílání (ve 20. letech 20. století v Evropě). [6]

Děrné štítky a pásky:

Na začátku 20. století došlo k dalšímu vývoji v oblasti ukládání dat, a to pomocí děrných štítků. Tyto štítky byly často používány pro řízení automatizovaných procesů, například ve strojírenství nebo při sčítání lidu. Děrné štítky mohly obsahovat perforace, které představovaly instrukce nebo data. Kombinace otvorů a jejich umístění umožňovala programování strojů a automatizaci různých funkcí.

Toto období přechodu z perforovaných papírových válců k děrným štítkům odráží rostoucí potřebu efektivnějšího a univerzálnějšího způsobu ukládání a přenosu informací. Tato technologická inovace zpřístupnila možnost programovatelného řízení zařízení a přispěla k rozvoji automatizace a počítačové vědy v dalších letech. [7]

Technologická inovace v oblasti ukládání a přenosu informací pomocí děrných štítků měla klíčový vliv na formování základů počítačové vědy. Zde jsou některé důležité aspekty této inovace a její přínosy pro další vývoj počítačové vědy:

      1. Základní principy programování:
Děrné štítky umožňovaly ukládání informací v binární formě pomocí perforací. Tento způsob kódování informací poskytoval jednoduchý, ale efektivní způsob pro programování a reprezentaci dat.
Principy práce s děrnými štítky, jako je čtení děr, rozpoznávání vzorů a dekódování informací, poskytly základní myšlenky pro návrh algoritmů, což je klíčový koncept v počítačové vědě.

      2. Programovatelnost a univerzálnost:
Přechod k děrným štítkům znamenal programovatelnost zařízení. Děrné štítky mohly obsahovat různé kombinace děr, které odpovídaly specifickým instrukcím nebo datům. To umožnilo univerzální použití zařízení pro různé účely.
Koncept univerzálního programování, který začal s děrnými štítky, byl klíčový pro vývoj moderních programovacích jazyků a systémů.

      3. Předchůdce binárního kódování:
Způsob, jakým byly děrné štítky používány pro ukládání a přenos informací, představoval předchůdce binárního kódování. Tato jednoduchá, binární reprezentace se stala základem pro další vývoj digitálního zpracování informací a počítačové architektury.

      4. Rozvoj hardwaru a architektury:
Pro práci s děrnými štítky byly vyvinuty specializované stroje a periferní zařízení. Tato specializace vedla k rozvoji hardwarové architektury zaměřené na efektivní čtení, zpracování a ukládání děrných štítků.
Zkušenosti s těmito zařízeními poskytly náhled do návrhu a optimalizace hardwaru, což bylo klíčové pro následný vývoj moderních počítačových systémů.

Celkově lze říci, že technologie děrných štítků poskytla první kroky směrem k efektivní manipulaci s informacemi a programovatelným řízením zařízení. Tyto základy pak položily pevné základy pro budoucí vývoj počítačové vědy a technologie, který postupně vedl k vytvoření moderních počítačů a programovacích jazyků. [8]

Lambda kalkul a Turingovy stroje:

Lambda kalkul, výpočetní model, který na přelomu 20. a 30. let 20. století navrhl americký matematik Alonzo Church (1903–1995), slouží jako formální systém pro manipulaci s funkcemi a výrazy. Původně byl lambda kalkul koncipován jako nástroj pro zkoumání základů matematiky a logiky, ale má významné důsledky v oblasti výpočtů. Lambda kalkul je takzvaně Turingově kompletní, má tedy schopnost vyjádřit jakýkoli výpočet, který může provést Turingův stroj (viz níže). Tento formalismus se stal základním pojmem v teorii výpočtů a návrhu programovacích jazyků. [9] [10]

Turingův stroj, který navrhl Alan Turing (1912–1954) v roce 1936, je konceptuální model výpočtu, který se skládá z pásky, hlavy a souboru pravidel. Turingovy stroje, které slouží jako teoretický základ pro definování algoritmů, mohou pomocí vhodných kódovacích schémat simulovat jiné Turingovy stroje a v důsledku toho i jakýkoli výraz v lambda kalkulu. Toto spojení zdůrazňuje hlubokou provázanost různých výpočetních modelů. [11]

Turingův stroj poskytuje teoretický rámec pro porozumění algoritmů a výpočetních procesů. Je klíčovým pojmem v oblasti teoretické informatiky a sloužil jako základ pro koncepty moderních počítačů a výpočetní teorie. [12]

Hlavní prvky a principy Turingova stroje:

      1. Stavový prostor:
Turingův stroj může být v jednom z konečného počtu stavů. Chování stroje je definováno přechodovými funkcemi, které specifikují, jak se stroj má chovat v závislosti na aktuálním stavu a symbolu na páskovém místě, které právě čte.

      2. Přechodová funkce:
Přechodová funkce určuje, jak se Turingův stroj pohybuje po pásce a mění svůj stav. Každý přechod je popsán jako trojice (aktuální stav, symbol na pásce, nový stav, nový symbol na pásce, směr posunu). Při každém kroku stroj čte symbol na aktuálním místě na pásce, aplikuje přechodovou funkci a může změnit svůj stav, napsat nový symbol na pásce a pohybovat se po pásce.

      3. Konečný automat:
Páskový automat: Turingův stroj má nekonečnou pásku rozdělenou na buňky. Každá buňka může obsahovat symbol z konečné abecedy, kterou Turingův stroj používá. Páskový automat lze pohybovat dopředu a dozadu po pásce.
I když má pásku, která je teoreticky nekonečná, Turingův stroj je schopen simulovat všechny algoritmy, které lze vyjádřit pomocí algoritmického postupu. To je možné díky jeho schopnosti měnit svůj stav, zapisovat a číst symboly na pásce a pohybovat se po ní.

      4. Turingova úplnost:
Turingův stroj je schopen simuloval všechny algoritmy, které jsou v principu spočetné. Tato vlastnost je známá jako Turingova úplnost a znamená, že pokud lze nějaký výpočet popsat algoritmicky, lze jej také simulovat na Turingově stroji.

      5. Univerzální stroje:
Existují univerzální Turingovy stroje, které mohou simulovat chování jiného Turingova stroje. To znamená, že jediný univerzální stroj může provádět jakýkoliv výpočet, pokud je dostatečně konfigurován. [13]

Plankalkül a počítač Z3:

Ve 40. letech 20. století, německý inženýr Konrad Zuse (1910–1995) navrhl Plankalkül, první vysokoúrovňový programovací jazyk na světě. Plankalkül byl vytvořen mezi lety 1942–1945 pro jeho počítač Z3 a jeho cílem bylo usnadnit inženýrské aplikace. Obsahoval pole, záznamy, smyčky, podmíněné příkazy a aritmetické operace a předznamenával prvky moderních programovacích jazyků. Navzdory svému inovativnímu designu se Plankalkül dočkal opožděné implementace a publikace, která se objevila až v 70. letech 20. století (ZUSE, Konrad. Der Plankalkül, Berichte der Gesellschaft für Mathematik und Datenverarbeitung, Nr. 63, Sankt Augustin, 1972), což omezilo jeho přímý vliv na pozdější programovací jazyky. [14]

Počítač Z3, který Konrad Zuse konstruoval v Berlíně mezi lety 1938–1941, se pyšní titulem prvního funkčního programovatelného, plně automatického digitálního počítače na světě. Počítač Z3, zkonstruovaný pomocí mechanických relé a kovových tyčí, dokázal provádět aritmetické a logické operace s 22bitovými binárními čísly a uchovávat až 64 slov paměti. Bohužel Z3 byl předčasně zničen při spojeneckém náletu na Berlín v roce 1943, což znamenalo tragický konec tohoto průkopnického výpočetního zařízení. [14]

V roce 1960 byla postavená plně funkční replika Z3 společností Konráda Zuse ZuseKG, nyní umístěná v Deutsches Museum v Mnichově. Replika Z3 zvládla v roce 1998 úspěšně test Turingovo-vyčíslitelných funkcí a byla označena za turingovsky úplný.

Lze shrnout, že lambda kalkul a Turingovy stroje vytvořily teoretické základy pro výpočty a ovlivnily vývoj programovacích jazyků a konceptualizaci algoritmů. Plankalkül Konrada Zuseho a počítač Z3, navzdory svému zničení a opožděnému uznání, sehrály klíčovou roli v rané historii vysokoúrovňových programovacích jazyků a digitálních počítačů. Tyto milníky společně určily směr vývoje informatiky a položily základy digitální éry. [16]

Reference

[1] Amy Tikkanen, “Britannica.com”, Jacquard loom, 15. září 2008 [Online] https://www.britannica.com/technology/Jacquard-loom

[2] Almut Bohnsack, “Google Arts & Culture”, Loom with Jacquard Mechanism, 3. března 2016 [Online] https://artsandculture.google.com/asset/loom-with-jacquard-mechanism-joseph-marie-jacquard/bAEckPCyJz_Xm

[3] “Computer History Museum California”,1801: PUNCHED CARDS CONTROL JACQUARD LOOM, 24. srpna 2015 [Online] https://www.computerhistory.org/storageengine/punched-cards-control-jacquard-loom/

[4] Mgr. Magda Králová, Techmania.cz, ADA LOVELACE, 2007 [Online] https://edu.techmania.cz/cs/encyklopedie/vedec/1243/lovelace

[5] Gloria Lotha, Britannica.com, Ada Lovelace, 15. listopadu 2023 [Online] https://www.britannica.com/biography/Ada-Lovelace

[6] Allpianos.com, Self Playing Pianos, 18. prosince 2023 [Online] https://www.allpianos.com/self-playing

[7] The Pianola Institute, Composers and the Pianola, červenec 2018 [Online] https://www.pianola.org/history/history_composers.cfm

[8] John Drew, Family Piano Company, 1.července 2023 [Online] https://familypiano.com/blog/self-playing-piano-history/

[9] Brilliant.org, Lambda Calculus, 27. prosince 2023 [Online] https://brilliant.org/wiki/lambda-calculus/

[10] Jrebel.com, What Is Lambda Calculus?, 4. června 2013 [Online] https://www.jrebel.com/blog/what-is-lambda-calculus

[11] Liesbeth De Mol, standford.edu, Turing Machines, 24. září 2018 [Online] https://plato.stanford.edu/entries/turing-machine/

[12] Emily Rodriguez, Britannica.com, Turing machine computing device, 28. prosince 2023 [Online] https://www.britannica.com/technology/Turing-machine

[13] Brilliant.org, Turing Machines, 5.ledna 2024 [Online] https://brilliant.org/wiki/turing-machines/

[14] Raúl Rojas, Cüneyt Göktekin, Gerald Friedland, Mike Krüger. Plankalkül: The First High-Level Programming Language and its Implementation. Frei Universität Berlin, Berlin, 2000. 27. prosince 2023 [Online] http://www.zib.de/zuse/Inhalt/Programme/Plankalkuel/Plankalkuel-Report/techreport.pdf

[15] History-Computer.com, Plankalkül Programming Language: History, Origin, and More, 31. července 2023 [Online] https://history-computer.com/plankalkul-guide/

[16] “Computer History Museum California”, Konrad Zuse finishes the Z3 Computer, 5.ledna 2024 [Online] https://www.computerhistory.org/timeline/computers/#169ebbe2ad45559efbc6eb35720d57b7