A dnes tu mám pro Vás připravenou druhou část rozhovoru s Ing. Miroslavem Němečkem, který nám poodhalí další osudy svých programů a také na čem v současné době pracuje.
Jaký byl další osud DOS Manažeru?
Přes úspěch DOS Manažeru jsme začali cítit i jeho nedostatky. Hlavním nedostatkem bylo omezení programu na 64 KB, protože byl překládán jako COM soubor. To bylo výhodné pro minimální náročnost programu, ale nedostačující pro rostoucí počty souborů v adresářích uživatelů. A také nebylo již možné přidávat do programu další funkce. Proto souběžně s vylepšováním DOS Manažeru 1 začala v roce 1992 vznikat verze 2 překládaná jako EXE program s mnoha novými funkcemi (opět v assembleru).
DOS Manažer 2 měl hromady výhod, jako počet souborů v adresáři omezený jen velikostí paměti (kolem 10 tisíc), souborové funkce nejen pro vybrané soubory, ale i pro soubory vyhledávané průběžně na celém disku nebo v adresáři, dále diskový editor, editor textů do 250 MB, 3 režimy spouštění programů, kalendář od roku 1, velmi přesný řádkový kalkulátor, dlouhá jména Windows a mnoho dalších. Bohužel jeho vývoj nebyl dostatečně rychlý. První verze byla vydána v roce 1996, kdy už se staly Windows 95 značně rozšířeným systémem a zájem o souborové manažery rychle upadal. Proto DOS Manažer 2 nebyl už tak úspěšný na trhu jako jeho předchůdce, přestože kvalitativně nebyly spolu srovnatelné. V dnešní době je stále ještě v nabídce nástupné firmy GEMA Soft pod verzí 2.10 (z roku 1998, http://www.gemtree.cz/gemasoft/dosman.htm), ale jeho vývoj dále nepokračuje, přestože se již ví o některých záporech, jako nepodporování dlouhých jmen pod Windows NT/2000/XP, havárie při rušení souboru se jménem delším než asi 200 znaků a zacyklení při přejmenování adresáře se změnou znaku na pozici vyšší než 11.
Vím, že jste se kromě DOS Manažeru věnoval i programu Petr. Jak ten vznikl?
Souběžně s DOS Manažerem jsem se příležitostně dále zabýval i programem Animator, jakožto grafickým programovacím nástrojem. Na nátlaky mého tehdy osmiletého syna jsem v roce 1996 začal pracovat na novém pokusu - vytvořit programovací nástroj pro děti. Využil jsem zkušenosti z programu Animator a vytvořil DOS interpreter programu, založený na principech Karla s rozšířenými možnostmi, jako např. možnost kladení libovolných ikon na políčka hrací plochy a tím zobrazování jednoduché grafiky. Málo dětský robot Karel s přítelkyní Karlou byl záhy změněn na králíka Petra s králičicí Petrou, inspirované obrázkem na tričku dcery a tehdy vysílaným seriálem "Příběhy králíka Petra". Později byla Petra nahrazena Luckou (kvůli rozlišení jmen v cizích jazycích).
Textový zápis programu se ukázal pro dětské uživatele nepřijatelný a tak jsem začal studovat programování pod systémem Windows, jakožto nutné prostředí i pro vznik nového souborového manažeru, který jsem plánoval. Programování v assembleru pod Windows se zdálo být velmi zajímavé, ale bylo dost pracné a neznal jsem prostředí Windows ještě dostatečně na to, abych v něm mohl tímto stylem tvořit. Vše změnila kniha "Mistrovství v Delphi". Byl jsem nadšený její přehledností a názorností a začal jsem pronikat do programování pod Windows v Delphi za podpory dalších knih o systému Windows (anglické dokumentační knihy od Microsoftu). Začaly vznikat první pokusy v souborovém manažeru pro Windows a objevila se první koncepce programovacího nástroje pro děti v grafickém prostředí.
Údajně jste se podílel i na vývoji Baltíka od SGP. Je to pravda?
Na podzim roku 1997 se na naši firmu obrátil pan Soukup (který byl stálým odběratelem ochranného systému Hradba), autor programovacího nástroje Baltazar (http://www.sgpsys.com), s prosbou, abychom pro něj vytvořili Windows verzi jeho programu Baltík. Jednalo se o dost krkolomný termín, pár týdnů, údajně měl předvádět nového Baltíka na Invexu 1997 zástupcům firmy Microsoft. Po dohadech jsme nakonec výzvu přijali (pan Soukup nás už několik měsíců předtím marně vyzýval ke spolupráci na jeho produktech). Bohužel kvůli časové tísni vše probíhalo přes telefon, bez jakékoliv písemné smlouvy.
Nového Baltíka 2.0 jsem začal tvořit v Delphi, protože jsem využil polotovar, který jsem měl připravený pro svého Petra. Chtěl jsem v Baltíkovi uplatnit své představy o novém programovacím nástroji pro děti. Hlavním zádrhelem v práci se však ukázal být pan Soukup. Příliš striktně vyžadoval své představy o programu, které vycházely z jeho DOS verze. Několikrát se i stalo, že jsem propagoval nějakou myšlenku, po velkých dohadech (opět po telefonu) jsem ustoupil a funkci z programu zrušil. No a po nějaké době pak Soukup přišel s přesně stejnou myšlenkou jako svou vlastní a musel jsem ji tam opět dodělávat. Takže - práce sice po několika bezesných týdnech velkého pracovního vypětí byla nakonec zvládnuta včas, ale s velkým odporem k výtvoru a přesvědčením, že s panem Soukupem už nikdy nechci mít nic společného. To byl také jeden z důvodů, proč jsem panu Soukupovi kromě hotového programu poslal i veškeré zdrojové texty programu, aby si případné další změny už dodělával sám (což nebyl ten nejsprávnější tah, jak jsem pak později pochopil).
Takže jste se pak vrátil opět k Petrovi?
K předvedení nového Baltíka firmě Microsoft nakonec nedošlo. Po výstavě jsem na programu ještě dále pokračoval podle požadavků a představ pana Soukupa až do února 1998, kdy jsem už další spolupráci odmítl. Čas plynul a pan Soukup se namísto dohodnutých plateb za provedené práce vykrucoval výmluvami o špatné finanční situaci. To pokračovalo i další roky. Mezitím jsem se pustil opět do práce na svém Petrovi. Realizoval jsem v něm své (panem Soukupem odmítnuté) představy - stavba programu umísťováním ikon do stromu, čímž bylo možné přehledně "sklapávat" části programu. A také automatická syntaktická kontrola, kdy lze k sobě připojit pouze smysluplné prvky.
Upustil jsem od Delphi, protože v něm nebylo možné psát program dostatečně efektivně, tj. na dostatečně nízké úrovni. Zvolil jsem Microsoft VC++, protože mě "pustilo níže" do systému, což bylo u takového real-time programu docela podstatné. Zpočátku jsem využíval MFC knihovny. Narážel jsem velmi často na až neřešitelné potíže s MFC a přicházel ke zjištění, že mě knihovna obcházením jejích nevýhod a chyb spíše zdržuje od práce než že by byla prospěšná.
A pak jste od MFC upustil a vrátil se zpět, k "jádru věci"?
Po půl roce práce jsem začal psát Petra prakticky znovu - tentokrát však bez MFC, pouze s holým API. S překvapením jsem zjistil, jak jde programování bez MFC snadno. Mnoho problémů naprosto zmizelo. Základním požadavkem na Petra bylo, aby byl dostatečně rychlý. Proto jsem hned na začátku vypustil CRT jádro programu a vše nahradil vlastními obsluhami. Prvním krokem tedy bylo vytvořit program, který měl 4 KB - tj. jen EXE hlavička a nějaké interní proměnné, které překladač vyžadoval a které běžně nachází v CRT modulu. Bylo to obtížnější než jsem si představoval, překladač vyžadoval spoustu věcí, o kterých byl problém něco zjistit, protože běžně nejsou dokumentované. Ale nakonec se zadařilo.
Jednou z prvních věcí, kterou jsem do Petra vytvářel, byl manažer paměti, který měl nahradit paměťové funkce z vypuštěné CRT knihovny. Ze zdrojových kódů Delphi i VC++ jsem věděl, jak pracují jejich manažery paměti a věděl jsem, že nepracují příliš efektivně. Manažer paměti, který jsem vytvořil, byl při testech 15x rychlejší než manažer z VC++ a 4x rychlejší než manažer z Delphi. Rozděloval virtuální paměť na skupiny bloků paměti o stejné velikosti mocniny 2 spojené do řetězce pomocí odkazů. I v mnoha dalších programech jsem tento manažer později úspěšně používal.
Čeho si na Petrovi nejvíce ceníte?
Jednou z věcí, co mnoho lidí na Petrovi překvapuje je, že se jedná o interpreter, protože rychlostí je v mnoha oblastech srovnatelný s kompilátory. Zdrojový kód (v binárním tvaru) je současně i prováděcím kódem programu. Každý program je uložen přímo v EXE souboru spolu s interpeterem, takže program vytvořený v Petrovi lze přímo spustit jako běžnou spustitelnou aplikaci Windows, aniž vyžaduje instalaci nějakého prostředí, a současně lze takový program otevřít v editoru Petra a program procházet či upravovat.
Za nejzajímavější část na Petrovi považuji 3D grafiku. Je to oblast, která mě velmi zaujala a kterou jsem tvořil s radostí. Petr vnitřně řeší správu objektů 3D světa, veškeré transformace matic, renderování scény, překryvy textur. To vše zajišťuje pro rozhraní DirectX 3 (kde se používají složité prováděcí buffery) až DirectX 8 a také pro rozhraní OpenGL. Petr zajišťuje, aby se programátor pokud možno nemusel o nic starat. Nemusí vědět, pod jakým rozhraním program pracuje (přestože to může určit pokud chce), Petr stírá rozdíly mezi rozhraními. A platí zde více než jinde, že program v Petrovi je velmi rychlý, což dokazují 3D hry v Petrovi vytvořené.
V Petrovi bylo napsáno mnoho her, mnohé z nich se vítězně umístily v soutěžích Becherovky (např. Bechtor, 13 duchů, Turbo Cars, Kóta 236 a další) a dokázaly tak kvalitu prostředí Petra.
Dobrou ukázkou rychlosti Petra je program Sinusovka. Jde sice o maličkost, ale - Baltík obsahuje obdobný program, vykreslení jedné sinusovky v něm trvá desítky sekund. V Petrovi se obdobných sinusovek vykreslí několik desítek za sekundu.
A jak dále pokračovalo uvedení Petra na trh?
Po ukončení "spolupráce" s panem Soukupem pokračovalo tahání peněz za provedenou práci. Pozorovali jsme, jak pomalu svého Baltíka dále upravuje (dnes ve verzi 3). Přesněji ne on, ale lidi, které touto prací zaměstnával. Informaci o Petrovi jsme z celkem pochopitelných důvodů zatím raději tajili. Nevěděli jsme, jak se k tomu pan Soukup postaví. Přece jen jsme byli pro něj nově vznikající konkurencí. Paradoxně jsem se stal konkurentem sám sobě (v programech Petr a Baltík).
1.6.1999 (na Den dětí) jsme konečně uvedli na trh první verzi Petra (http://www.gemtree.cz a http://www.gemtree.com). Zveřejňovali jsme o něm informace, uváděli jej v časopisech, účastnili se výstav a očekávali odezvy. První odezva přišla, ale byla poněkud z jiné strany než jsme čekali. Pan Soukup začal proti nám bojovat veškerými prostředky a to ne příliš čistými. Ve spolupráci s některými redakcemi PC časopisů, jako např. Chip, rozpoutal velkou pomlouvačnou kampaň "Kauza Králík" za vydatné pomoci spisovatele Rudolfa Pecinovského.
Ve zveřejněném článku dokazovali naše plagiátorství, jak jsme napodobili které programy, ale především jak jsme panu Soukupovi ukradli jeho myšlenky z Baltíka a jak jsme ho podrazili. Přitom nám pan Soukup stále neproplatil práce na Baltíkovi, prováděl prodeje Baltíka bez jakékoliv písemné smlouvy se mnou jako s autorem, takže nelegálnosti a rozporu s autorským zákonem se ve skutečnosti vlastně dopouštěl on (a dodnes dopouští). Připomíná mi to známé rčení "Zloděj křičí: chyťte zloděje!" Zajímavý důkaz plagiátorství předvedl pan Pecinovský, když srovnával Petra s Baltíkem porovnáním dvou ukázkových programů (vystavění domečku) vytvořených v Baltíkovi a v Petrovi (čili věc uživatelského použití nástrojů, ne porovnání nástrojů samých) a program v Petrovi sám upravil tak, aby se co nejvíce podobal Baltíkovské variantě. Ovšem nejvíce mě pobavily důkazy plagiátorství na základě hry Vlak, která se v Petrovi objevila, jako plagiát známé DOS hry - zřejmě pánové nevěděli, že jsem byl autorem i původní DOS verze.
Po mnoha dohadech ve firmě jsme nakonec zvolili taktiku ignorování, neboť na pomluvy a lži skutečně nemělo smysl reagovat. Přitom jsme měli obavy, čeho všeho se pan Soukup ještě může dopustit dále. Jen jsme pozorovali, jak pan Soukup Baltíka upravil tak, aby v něm nebyla patrná jména funkcí a proměnných (zřejmě nějakým korekčním programem, který je nahradil nic neříkajícími symboly), která by dokazovala původnost kódu. Časem hluk utichl (především když se pan Soukup protlačil do nechvalně známé akce Indoš) a my dál pokračovali ve své práci na Petrovi.
I přes naše velké nadšení pro věc byla však odezva trhu malá. Časem jsme dospěli ke zjištění, že je velmi málo tvůrčích lidí. Na druhou stranu byl ohromný zájem o programy v Petrovi vytvořené - obzvláště o program Desktop Hry, který se stal absolutně nejstahovanějším programem z našich www stránek a rozšířil se lavinovitě do celého světa (obzvláště do USA). Ovšem - freeware nikoho neuživí. Proto jsme byli nuceni se pustit i do jiných oblastí.
Na čem pracujete nyní?
V současnosti mám nového koníčka, který mě plně uchvátil. Začal ve chvíli, kdy jsem si nainstaloval na PC operační systém Linux. Ale Linux tím koníčkem není, právě naopak. Po mnoha pokusech proniknout do světa Linuxu jsem dospěl k závěru, že v této oblasti čeká ještě velmi mnoho práce. Zjistil jsem, jak je tato oblast uživatelsky nepřívětivá, těžko přístupná a nepřehledná a jak bych spoustu věcí udělal jinak. Je vhodná pouze pro mladé bystré počítačové odborníky, kteří nelitují času stráveného studiem a experimentováním.
Proto postupně ve mně uzrála myšlenka pustit se do tvorby vlastního systému, podle vlastních představ a požadavků. Systému, který bude přehledný, jednoduchý a přitom dostatečně výkonný. Nevadí, když nenahradí jiné systémy - i uplatnění v oblasti real-time aplikací může být dostatečným přínosem. Nejdříve jsem "na rozcvičku" začal vytvářením vlastní verze systému DOS (projekt Litux, http://litux.wz.cz). Měl jsem v úmyslu vytvořit volně šířitelný DOS, který přitom nebude mít nectnosti jiných podobných systémů - tj. musí být miniaturní a přitom musí pracovat v reálném módu procesoru (což je jedna z velkých předností systému DOS).
Časem jsem dospěl k závěru, že je to možná spíše jen ztráta času, že bych se měl raději věnovat "opravdovému systému". Proto jsem systém DOS zanechal v polovině, možná jako inspiraci jiným programátorům, a pustil se do multitaskového systému Litos (plně v assembleru, http://litos.wz.cz), na kterém v současnosti pracuji. Zda budu v této oblasti úspěšný nevím. Ale držím se myšlenky, že člověk by neměl přemýšlet předem "co za to", ale pokud je chuť něco tvořit, tak by měl tvořit - a ono se to všechno nějak samo poddá.
Velmi Vám děkuji za poskytnutý rozhovor a přeji Vám, za celý WEB a jeho čtenáře, hodně úspěchů ve Vašich dalších projektech.