Základy programování v umělecké praxi
Z CASWiki
Definice: Programovací jazyk je způsob zápisu algoritmu, logicky uspořádané souslednosti kroků, které má vykonat počítač. [1]
Prakticky každé audiovizuální dílo využívající počítač, nebo jeho minimalizovanou formu (např. midi kontroler, telefon, digitální videomix) používá programy. Programy jsou nutnou součástí všech digitálních přístrojů. Tato sekce se týká programování, které je nadstavbou běžných nástrojů a směřuje ke specializovaným realizcím nad rámec běžné funkcionality. Jsou tu naznačeny základní principy programovacích jazyků a nejběžnější realizce v rámci audiovizuálních médií, které jsou specificky navrženy pro konkrétní dílo.
Aplikace v umění:
- Interaktivní části díla, interakce s divákem (např. přehrávání videa).
- Audiovizuální procesy v průběhu realizace díla (např. generovaná grafika).
- Nástroje pro obrazové a zvukové performance (např. specifické kontrolery zvuku a obrazu).
- Ovládání pohyblivých součástí díla, robotické komponenty.
- Vizualizace a sonifikace senzorických vstupů.
- a další.
Příklady umělecké realizce s použitím programování:
- Paul de Marinis - Raindance [2]
- Luke Dubois/Todd Reynolds - Moments of Inertia [3]
- Toplap - Live coding [4][5]
- Common Grounds [6]
- Golan Levin/Zachary Lieberman - Reface [7]
Ve skutečnosti představují tyto projekty velmi pokročilé formy počítačového a audiovizuálního umění. Základní programování se stejně tak používá pro řešení dílčních drobných problémů a pro diváka může být zcela "neviditelné".
Například:
- Fotobuňka spouštějící videosekvenci
- Vizualizace zvuku, VJing
- Zvláštní kombinace vizuálních efektů
- Jednoduchý ovládací prvek, např. tlačítko
- Synchronizace, přehrávání zvuků a obrazů z více zdrojů
Kde je program a jak je vykonán
Program obsahující soubor dílčích instrukcí je umístěný v paměti. Pamětí může být libovolný datový nosič, pamět RAM, HDD, CD, DVD, Flash paměť, atd. Program je vykonáván procesorem, jeho výstup obvykle směřuje na nějaké výstupní zařízení (grafická karta a monitor, zvuková karta a reproduktor, USB výstup, MIDI výstup atd...).
Typy programovacích jazyků
Programovacích jazyků je velké množství a lze je rozdělit podle nejrůznějších kritérií.
Dle složitosti:
- Nižší - jejich kód přesně odpovídá činnosti procesoru (např. Assembler)
- Vyšší - jejich kód je strukturovaný, využívají symbolický zápis, který je převeden pro činnost processoru tzv. kompilátorem. Dnes jsou prakticky všechny programovací jazyky tzv. vyšší.
Dle interpretace:
- Kompilované [8] - jejich kód je třeba před spuštěním kompilovat, tj. převést na strojový kód srozumitelný procesoru
- Interpretované [9] - jejich kód je interpretován pro procesor v průběhu běhu programu
Obvyklejší jsou různé kombinace kompilace a interpretace, například kompilace do tzv. mezikódu. V praxi je největší rozdíl v tom, že kompilovaný kód může být většinou proveden počítačem bez přítomnosti programovacího prostředí (naprostá většina komerčních aplikací), zatímto nekompilovaný kód je obvykle spuštěn v jeho editovatelné podobě přímo v programovacím prostředí. To však vyžaduje specifickou konfiguraci počítači a instalaci zvláštního software.
Výše zmíněné rozdělení se týká především "klasických" programovacích jazyků, které jsou zapisovány jako texty. Jednotlivé jazyky obsahují řadu podobných konstrukcí, liší se především ve vnitřní logice a syntaxi zápisu, dále také v různém rozpracování specifických funkcí, například pro práci s textem, řetězci, poli, grafikou, atd. Příkladem takového jazyka je např. Javascript, C++, Processing, ASP, SuperCollider, a další.
Zvláštní skupinou jazyků jsou tzv. vizuální programovací jazyky, které nevyužívají formu zápisu textu, ale vizualizovanou formu zápisu v podobě zvláštního rozhraní. Jsou zpravidla jednoduší, některé funkce mají omezeny, nebo upraveny specifickým účelům. Příkladem vizuálního programovacího jazyka je Max/MSP, nebo PureData.
Speciální formou programovacích jazyků jsou zvláštní zjednodušené jazyky navržené pro umělecké realizace. Zpravidla neumožňují řešení problému na zcela základní bázi, obsahují však řadu instrukcí a funkcí pro zacházení s mediálním obsahem. Některé jsou zjednodušeny do té míry, že o nich nelze mluvit jako o programovacím jazyce, jako spíše o vývojovém prostředí. Nejpoužívanější z nich jsou:
- Max - samotná aplikace MAX je určena primárně pro práci s daty
- MSP - volitelná část aplikace MAX, která rozšiřuje jeho zvukové možnosti
- Jitter - volitelná část aplikace MAX, která rozšiřuje jeho grafické možnosti
- PureData - volně šiřitelná aplikace vycházející s designu Max/MSP
- GEM - integrální součást software PureData pro práci s grafickým obsahem
- Processing - skriptovací jazyk navržený především pro potřeby generované grafiky
- SuperCollider - skriptovací jazyk navržený pro práci se zvukem
- QuartzComposer - nejde o programovací jazyk v pravém slova smyslu, spíše o grafické prostředí využívající některé postupy programovacích jazyků
Základní struktury
- Algoritmizace
- Proměnné a jejich typy (string, char, float, integer...)
- Operace s proměnnými (číslené, textové...)
- Řídící struktury: podmínky, cykly