Studium softwaru a teorie kódu/old

Vyjmenujte autory a díla, která se konceptem kódu a softwaru zabývají. Jaké jsou ontologické, metafyzické, estetické, kulturní a politické aspekty softwaru a kódu? V jakém smyslu se koncept kódu používá? Jaké typy kódů znáte? Jaký je rozdíl mezi přirozeným a počítačovým jazykem? Co je sociální software? Co je umělecký software? Jaké příklady podobných projektů znáte?


Slovo Kód ve svém tradičním významu představuje pravidlo pro převod informace mezi dvěma typy její reprezentace. Takto s kódem pracuje například kryptografie. Nověji se o kódu hovoří v souvislosti se Softwarem, jenž je tvořen právě kódem. Softwarový (executable = spustitelný, vykonatelný) kód zapisuje instrukce pro algoritmický výpočet uskutečnitelný na hardwarové bázi, převádí informace v činnost.

Na počátku bylo slovo

Myšlenka spustitelného kódu není nová, její počátky lze najít v magii, kde zaklínadla-sady symbolů mají způsobit nějakou změnu hmoty. Představa, že určitá slova v určitém pořadí mají moc tvořit a měnit fyzický svět je vlastní také náboženství. V biblické tradici je tato magická moc přisouzena Bohu, jenž ji uplatňuje při aktu tvoření. Idea spustitelného a spuštěného kódu byla již ve starověku předmětem různých vědních oborů, což vedlo ke snahám celý kód zformalizovat. Filosofie, kosmologie či teologie se tak prolínaly s matematikou. Pythagoras hledal předobraz světa v číslech a jejich vztazích a získané poznatky dokázal aplikovat i na hudbu. Matematický kód dle jeho názoru kóduje a utváří přírodu i umění, sjednocuje makrokosmos s mikrokosmem. Matematické uchopení zvuku a jeho tonální organizace do podoby hudby znázorňuje raný kulturní efekt kódu. S představami o umění jakožto formální kráse, kterou lze vypočítat, se lze setkat i dnes – např. ve fraktálových obrazech.

Snahy o vyčíslení a formalizaci univerza pokračovaly i ve středověku. Katalánský myslitel Raimundus Lullus představil ve 13. století formální kombinatorický systém pro odvozování filosofických a teologických výroků. Jeho zdrojem bylo údajné boží zjevení, při němž Bůh Lullovi poskytl kategoricky uspořádaný soupis základních pojmů a jejich vztahů. Kombinace pojmů pak tvoří algoritmus pro stvoření kosmu, čímž se Lullismus metodicky poněkud odlišuje od židovské Kabaly, která používala podobný systém, avšak s permutacemi. V obou případech nicméně algoritmus přetváří chaos v řád. Lullus občas bývá považován za praotce informatiky, navázal na něj mimo jiné i Jan Amos Komenský.

Později byly permutace a kombinace využity v poezii. Přesouvání slov či jednotlivých znaků je v tomto případě dílem prostého algoritmu. Každá další permutace přitom otevírá další možný výklad, případně několik výkladů najednou. Permutačními básněmi se zabýval například Brion Gysin, který pro jejich tvorbu již používal i počítač. V takových případech vzniká otázka, kdo nebo co za dílem stojí. Je to autor, který dodá zdrojová slova a případně definuje algoritmus, nebo je to software – vykonavatel příkazů, jejichž výsledek mohl navíc ovlivnit generátor (pseudo)náhodných čísel? Vlastní permutační báseň si můžete vytvořit na stránce http://www.permugram.org/, z hlediska programování se jedná o jednoduché využití cyklů.

Příchod počítačů, zejména těch moderních elektronických s větší mírou re-programovatelnosti, výpočty výrazně urychlil. Rutinní výpočty mohly opustit prostředí mysli, jazyka a mechanických pomůcek a zautomatizovat se s efektivitou umožňující ovlivňovat fyzický svět v reálném čase. S rozvojem počítačů se rozšiřovala i doprovodná terminologie, a tak se v 50. letech 20. století začalo hovořit o softwaru. Ve stejné době shodou okolností došlo k objevu DNA, kterou lze také považovat za řídící kód, alespoň pro stavbu těl.

Software a jeho ontologie

Termín Software označuje libovolnou sadu instrukcí, jež má nějakým způsobem uvést v činnost Hardware, případně jiný software (rovněž za účelem aktivování určitého hardwaru, byť skrytého za oponou softwaru-prostředníka). Instrukce mají podobu kódu a liší se navzájem především mírou přímé a rychlé aplikovatelnosti na konkrétní svět mimo počítač, která těsně souvisí s jejich distancí od jazyka uživatele počítače. Přiblížení softwaru uživatelovu jazyku vyžaduje abstrakci od konkrétní architektury hardwaru k příkazům, jejichž syntax a sémantiku mohou uživatelé snadněji uchopit. Abstrakce nabývá různé vrstevnatosti, přičemž platí, že každá vyšší vrstva většinou využívá instrukcí nejbližší nižší vrstvy a přináší vyšší počet prvků.

Cesta od abstraktního ke konkrétnímu - od vyšších vrstev k nižším - začíná v počítači například u značkovacího jazyka HTML, jenž uživateli poskytuje poměrně efektivní možnost vyjádření určitého problému ve světě mimo počítač, a postupným odkazováním na nižší úrovně pokračuje skrze mezivrstvu mateřského operačního systému až ke strojovému kódu, s nímž procesor nativně pracuje. Na ještě nižší úrovni již dochází k rozostření hranice mezi softwarem a hardwarem, neboť instrukce se proměňují v činnost logických členů (hradel) a nakonec ve změny napěťových stavů (u elektronických počítačů) Ano-Ne uskutečňované na úrovni elektronů, které mají hmotnost, a lze je tedy považovat za hardware. Vynořuje se otázka ontologie softwaru – jak software je, kde je a kdy je. Jde o podobný problém jako dualita mysli a těla (mozku).

Třebaže na vyšších úrovních abstrakce může mít kód jednotnou podobu, s každým krokem směrem k jeho spuštění dochází v závislosti na použitém hardwaru a podpůrném softwaru k jinému přepisu. Výsledkem bývá rozdílný strojový (většinou binární) kód na různých výpočetních architekturách a operačních systémech. V praxi je tedy vnitřní zápis softwaru závislý na konkrétním hardwaru, a hardware tak stojí vůči softwaru v nadřazené pozici, ačkoliv moderní hardware pro jeho složitost prakticky již nelze navrhnout bez pomoci softwaru (spuštěném na hardwaru předchozí generace). Obecně se o softwaru hovoří jak v případě zdrojového kódu zapsaném v programovacím jazyce vyšší úrovně (např. C nebo Java), tak v případě strojového zápisu vzniklého překladem (kompilací) zdrojového kódu. Autorské právo se snaží chránit oba dva módy existence, přičemž přetrvávají spory, kde by u zdrojového kódu měla být hranice ochrany. Mají se chránit přesná znění zdrojového kódu, jeho logické části, nebo dokonce jednotlivé obecné algoritmy v kontextu deklarovaného použití softwaru? Míra triviality uznatelného obsahu tzv. softwarových patentů se liší v jednotlivých zemích.

Software jako kulturní produkt

Navzdory své formálnosti a blízkosti abstraktní matematice je software kulturní. Je tvořen a spouštěn za účelem vykonání příkazů určených lidským uživatelem-kulturní bytostí. Grafické rozhraní programu, umístění prvků v něm, použité barvy, účel softwaru: za vším lze spatřit kulturní podmíněnost. Samotné užívání softwaru pak vede ke kulturním změnám – zavádí nové praxe a ruší staré, vyvolává nové problémy a snahy o jejich řešení. Například nástup použitelných internetových vyhledávačů změnil způsob, jakým lidé vyhledávají informace, a tak poznamenal činnost knihoven, jež ztratily část své funkce. Společně s tím obohatil běžný jazyk slovem „vygooglit“. Software jakožto lidmi udržovaný produkt dále vytvořil nová pracovní uplatnění a zrušil některá jiná. I na laické úrovni stále zůstává objektem lidské imaginace, která v něm vidí někdy až magický způsob realizace skrytých přání. Motiv magie je tím silnější, čím více vnější stránka softwaru ukrývá svůj vnitřní kód.

Nekulturní software by musel být vytvořen skutečnou umělou inteligencí, a i poté by zůstala pochybnost o nekulturnosti, neboť umělá inteligence by měla počátek v lidském návrhu. Nekulturním softwarem by ovšem mohl být poruchou (např. nenadálé výboj elektromagnetického záření na paměťový čip) pozměněný program, který by zůstal v chodu a držel se nových instrukcí.

Politické aspekty softwaru

Jakožto kulturní produkt postihuje software lidskou společnost. Disponuje tedy politickou mocí, která je realizována v okamžiku jeho spuštění. Ve většině případů platí, že moc uplatňuje ten, kdo vlastní zdrojový kód, avšak neočekávané využití zkompilovaného kódu může nakonec software obrátit i proti jeho vlastníkům a správcům. Názorným příkladem politického softwaru je čínský návrh aplikace pro kontrolu obsahu, kterou by výrobci počítačů museli do svých produktů povinně předinstalovat. Možný protipohyb by pak mohl mít podobu soustředěného zahlcení (Denial of Service attack) počítačů určených pro sběr těchto politicky uplatnitelných dat, které by v případě nekorektní paměťové správy na sběratelské straně mohlo vést až k pozměnění jejího kódu.

Jelikož zkompilovaný kód není transparentní, není možné jednoduše určit, k čemu všemu může sloužit. Někteří uživatelé tuto skutečnost vnímají jako omezení své svobody a požadují znalost zdrojového kódu. Zároveň nevítají myšlenku zpoplatněných algoritmů. Proto už v 80. letech 20. století - v situaci kdy komercializace software překonala dětské nemoci a začínala dospívat - vznikla myšlenka svobodného softwaru (free software). Richard Stallman, duchovní otec celého hnutí, deklaroval základní požadavky na svobodný software.

-Uživatel má právo spouštět software za jakýmkoliv účelem.
-Uživatel má právo zkoumat jeho stavbu (k čemuž potřebuje zdrojový kód).
-Uživatel může svobodný software dále volně šířit.
-Uživatel může upravovat zdrojový kód a po jeho zkompilování vydat novou verzi programu.

Cílem svobodného softwaru je reagovat na vstup komerčních zájmů do oblasti kódu a přiblížit jej zpět počátkům programátorské éry (60. a 70. léta), která díky svému akademickému pozadí byla velmi svobodomyslná a vyznačovala se hackerským experimentováním a ochotným sdílením nabytých vědomostí – výsledkem bývalo obohacení znalostí v rámci celé komunity.

V závislosti na přístupu autora prvotního zdroje, mohou autoři derivátů uplatnit upravený kód v různých oblastech. Někdy musí derivát zůstat svobodným, jindy může nabýt uzavřené (proprietární) podoby. Tento princip je ukotven v množství licencí, např. GNU GPL či BSD license.

Někteří programátoři pragmaticky považovali hnutí svobodného softwaru za příliš idealistické, a tak v 90. letech přišli s ideou softwaru s otevřeným zdrojovým kódem (Open-Source Software = OSS). Otevřenost OSS nutně neimplikuje právo na úpravy a deriváty, slouží spíše jako záruka transparentnosti pro uživatele, kteří na jejím základě mohou zasílat autorům komentáře pro zlepšení bez toho, aby sami mohli vylepšenou verzi šířit. V praxi se myšlenky OSS a svobodného softwaru většinou prolínají a výsledek nabývá formou rozmanitých licencí mnoha podob.

Použité zdroje

Kittler, Friedrich: There is No Software , http://www.ctheory.net/articles.aspx?id=74
Gregory, Wanda Torres: Heidegger On Traditional Language And Technological Language
Cramer, Florian: Words made flesh: Code, Culture, Imagination http://pzwart.wdka.hro.nl/mdr/research/fcramer/wordsmadeflesh/