Kdysi jsem měl CB radiostanici na stole v kuchyni zatímco počítač jsem měl v pokoji svého „po-rozvodového 1+1„. Proto jsem koupil notebook Siemens-Nixdorf PCD-4ND, který původě stál kolem 200 000 ale v roce 2000 uz byl – plně funkční „na radioburze“ za 1500. Tenhle notebook jsem dal do kuchyně a surfoval na něm po „Packet radiu“ – které bych mládeži ( drze ) popsal jako pra-pra-babičku bezdrátového internetu dneška.
V okrese jsme měli jeden z nejlepších serverů packet radia v republice, kde jsme mohli do Internetu posílat maily a dokonce v textovém režimu surfovat po Webu. Než se rychlostí 1200 bitů za sekundu načetla stránka IDNES.CZ – trvalo to kolem 5 minut – tudíž u notebooku vznikaly značné prostoje. Proto jsem do něj postupně přesunul veškerou svoji roboty-konstruující činnost. DOSovský editor plošných spojů „Ferda Mravenec“ verze 3.5, kompilátor AVR assembleru, který jsem psal ve vestavěném editoru „ortodoxního“ souborového manažeru zvaného DOS navigator, který už tehdy měl zvýrazňování syntaxe a makra která umožňovala programovaný soubor „na jedno kliknutí“ přeložit slinkovat a vypálit do procesoru robota.
Ladění softwaru pak vypadalo takto – robot vysílal po RS232, já jsem přijímal terminálem vestavěným do DOS navigatoru, pak jsem uložené soubory přehrával Lap-Linkem do „velkého PC„, kde jsem je převáděl do Excelu a v něm analyzoval. Celý tento řetězec fungoval naprosto bezvadně, lépe než dnešní „softwary s přesýpacími hodinami„. Přece jenom ale narazil na své limity a to bylo v době kdy jsem „ladil“ stereofonnní sonary, kde jsem potřeboval poměrně složitě analyzovat přijaté ultrazvukové odrazy a sestavovat z nich mapy „ultrazvukové odrazovosti“ a to už bylo pro Excel, jeho makra a jeho (značně úchylnou) variantu Visual Basicu příliš.
Takže jsem už od roku 2008 přemýšlel o „programování pod Windows„, abych mohl data ze svých robotů zpracovávat svým softwarem. Tu variantu „pro Windows“ jsem uspokojivě nevyřešil nikdy. Měl jsem sice nainstalované C++, ale programy pro Grafické rozhraní systému WIN32 jsou naprostá úchylárna pro schisofreniky. Kdy software je „bordel“ různých call-backových funkcí, smyček obsluhy událostí, sáhodlouhých deklarací knihovních funkcí, kde nevíte co je kód a co je makro a k tomu (pro mně – Pascalistu) „bordel“ jazyka C++. Takže jsem nějakou dobu neprogramoval pro PC vůbec a mezitím nám WIN32 tak nějak „umřelo„. Přesněji řečeno doma mám už jenom jeden WIN-počítač – notebook z roku 2007 o kterém jsem psal minule, takže učit se (znovu) programovat pro WIN32 je prostě nesmysl. Windows jako takové jsou nesmysl a technologie, která sahá vysoko, ale kořeny už má uhnilé a sám Microsoft neví co s desktopovým softwarem dělat, proto do něj „pro jistotu“ tlačí Linuxové komponenty.
Takže jsem chtěl nějaké „multiplatformové“ programátorské prostředí aby se dalo volně přecházet z Windos na Linux. Pro robotiku se dosti často používá Python, ale ten se mi moc nelíbíl, protože od dob Turbo Pascalu jsem zvyklý, že programovací jazyk má jasně definované vývojové prostředí a že běží rychle i na mých, naprosto zastaralých počítačích. Navíc Python je pro mně „objektový až moc“ – nikdy nepoznám co je kód a co jsou data. A navíc oddělování procerdur a funkcí pomocí „odsazování textu“ – četli jste někdy něco po mně ?
Takže jsem jistou dobu ze zoufalství cvičil „takové to domácí programování“ na Visual Basic Scriptu a JavaScriptu. Zejména ten JavaScript s internetovými prohlížeči, které podporují HTML5 a tím pádem i „canvas“ – silně připomíná psaní softwaru pro Atari 800XL / Sinclair Spectrum – což je pro počítačového důchodce nekonečně příjemné. Takže jsem naprogramoval dva „velké programy“ – šifrované rozesílání laboratorních výsledků mailem podle databáze doktorů a automatické každodenní zálohování laboratorního softwaru a pak spoustu blbostí: vlnící se „wireframe“ 3D krajiny, skákající míčky a další, které se daly „rozkliknout“ v Internetovém prohlížeči a bezvadně (a překvapivě rychle) fungovaly. Jenomže JavaScript nemůže jen tak snadno překonat svůj Internetový původ – dostat do prográmku v JavaScriptu, který běží v prohlížeči data z robota posílaná po sériovém portu – pravděpodobně jde (pomocí volání Microsoftích COM komponent), ale jednak je to zase Microsoft – a za druhé množství „černé magie„, které to vyžaduje – neodpovídá dosaženému výsledku.
Takže jsem měl opět mnoho měsíců pauzu až jsem začal letos znovu „vrtat v počítačích„. Zejména pod dojmem té úvahy, že když mi manželka a dítě nedává dostatek času na „dělání hardwaru„, stále bych s sebou mohl tahat na USB flahce nějaké to „dělání softwaru„, abych nevyšel ze cviku. Takže jsem si už už už-už chtěl do PC nainstalovat Code::Blocks a znovu se pokusit o C++, ale neměl jsem vyřešenu fundametnální otázku „pro jaké prostředí programovat„. Asi tedy pomocí nějaké „multiplatformí knihovny“ typu vxWidgets, nebo Qt ale to jsou „obrovské softwary„. A pod pojmem „obrovské“ se kromě gigaBajtů na disku mysli i fenomén:“po 30 letech studia umím napsat prográmek s 3 tlačítky YES_NO_CANCEL“.
Při tomto rozvažování a sepisování srovnávacích tabulek do starého kalendáře mi náhoda přihrála do rukou Processing – což je „vývojové prostředí„, které je samostatné – nikam se neinstaluje, dá se nosit a spustit z USB Flashky a v tomto vývojovém prostředí můžete programovat v jazyce, který syntaxí silně připomíná (je to) Java.
„Opravdoví ajťáci“ teď umírají smíchy pod stolem, protože z „Processingu“ vznikl jazyk Wiring a z něj vzniklo „Arduíno IDE„. Tedy Kubáč skončil u „PC verze“ věci, které v mikrokontrolérech hluboce pohrdá. Jen na svou obhajobu bych poznamenal dvě věci – jednak „odříkaného chleba největší krajíc„. A potom – celé řízení robota pro mini Sumo psané v AVR assembleru jsem měl kratší než je standardní kód v C++ pro otevření (prázdného !!) okna pod WIN32.
Processing si od „matky Javy“ nese multiplatformovost a překvapivě slušnou výkonnost Interpretovaného / JIT kompilovaného kódu. Protože je pro programátorsky negramotné je programování ultra-jednoduché – pokud kliknete na SPUSTIT – tak se vám „spustí„, v podobě prázdného okna, i prázdná stránka bez jediného písmenka zdrojového kódu. Na druhé straně je možné programovat překvapivě mnoho – 2D grafiku, 3D grafiku pomocí OpenGL, vestavěny jsou knihovny pro práci se zvukem, s obrázky, s videem (bohužel jen ve formátu Quick Time), se sériovým portem (skutečně fungující ) abyste se mohli spojit se „synovcem“ Arduinem. Vše funguje z USB Flashky a to i na počítačích kde žádná Java nainstalována není. Mimochodem „pocit programování pro Atari 800“ je silně přítomen i zde, protože autoři přímo nutí uživatele zkoušet polo-rozdělané prográmky a pozorovat „co to dělá„.
Takže posmívejte se jak chcete, ale pokud potřebujete z robotického čidla vytáhnout dva buffery ultrazvukového echa a ty vzájemně „autokorelovat“ abyste spočetli souřadnice objektu odkud se echo odrazilo – strávíte při pokusu dělat to Excelem (příliš daleko od sériového portu) nebo C++ (příliš blízko chaotickým vnitřnostem Windows) daleko více času než u těchto „prototypovacích“ programovacích jazyků.
Znamená to že „Processing“ je denfinitivní řešení mých PC – programátorských potřeb ? Pokud se jedná o 30 minutový úsek od usnutí dítěte do okamžiku, kdy psi chtějí venčit – rozhodně ANO. Čímž se dostáváme k tomu proč (pro fotry středního věku) nedoporučuju Python a vlastně ani C/C++ :
- Python má své zvláštnosti, které pochopí jenom mládež, nebo matematici – 1.add (2) = 3, nebo for X in („hrušky“, „švestky“, „jabka“) print (X) – jinými slovy mlhavě tušítě, co by se mělo dělat, netušíte jak a doufáte že to tuší alespoň počítač.
- C++ – ani středověký mnich by se za celý život nenaučil nazpaměť deklarace typu : wincl.lpszClassName = szClassName; ani vy se to nikdy nenaučíte a prohospodaříte nad tím léta. ( chtěl to tak Microsoft ? )
- JavaScript – je na úsečce Python – C++ v 1/3 cesty – blíže k Pythonu, protože v něm taky máte podivuhodnosti jako funkce, které jako výsledek vrací objekty a tak.
- Java je na úsečce Python – C++ v 1/3 cesty – blíže k C++. Jak říkají „velcí ajťáci“ – je to zjednodušený programovací jazyk pro blbečky z korporátu a pro nás, co jsme mentálně zůstali v Turbo Pascalu pro MS-DOS a odtud se nemůžeme hnout už 30 let.
Jinými slovy JavaSctipt i Processing – jsou „někde mezi kozy“ s ještě rozumnou úrovní abstrakce a zároveň s ještě zvládnutelným množstvím deklarací a „věcí okolo“ které musíte udělat aby se prográmek vůbec rozběhl. Takže Hrr na to stáhnout Processing a hrát si po večerech. Konec konců i své současné místo ve zdravotnictví (!!) jsem získal větou, drze napsanou do kolonky „znalost PC“ : „Všichni umí PC používat. Já umím PC programovat !“ což tehdy byla ještě pravda.
Poznámka při druhém čtení – mládež ani netuší jak opojné může být 32 bitové programování pro „flat memory model„, kde máte k dispozici 4 gigabajty adresového prostoru a stejně veliké mohou být datové struktury, které používáte. V 16 bitovém DOSu byl systém Segment + Offset, kde největší datová struktura mohla být jen 64 kilobajtů – takže třeba už obrázky větší než asi 150×150 pixelů se složitě načítaly do paměti – po jednotlivých řádcích do „pole polí“ a práce s takovými daty byla čistokrevná pruda. Výsledkem „flat memory“ je, že dnešní programátoři otázku použití a spotřeby paměti (bohužel) vůbec nevnímají. Zatímco my dědci se nemůžeme zbavit nutkavého počítání : 800x600xTrue color bitmapa = 800x600x3 = 1.44 megaByte – mohu si dovolit použít 2 najednou že?