V dětství jsem programoval jak blázen. Tehdy ještě neexistovala žádná Java, .NET ani Ruby, takže jsem psal v dřevních jazycích jako assembler, Basic, Pascal a dalších. Mým největším dílkem byl výukový jazyk Turbo Karel, který ode mě koupila pěkná řádka škol. Na benešovském gymnáziu to dlouho byla maturitní otázka, což mé popularitě mezi studentkami věru neprospělo.
Stáhnout funkční verzi Turbo Karla z roku 1993
Stáhnout emulátor DOSBox – nutný ke spouštění starých programů
Takhle vypadalo Karlovo město. Zadali jsme příkaz KROK.
Karel běhal v 80. letech na strojích jako IQ 151 či PMD 85, no a já jsem se ho rozhodl vylepšit a převést na PC. Základ Karla jsem napsal o prázdninách mezi druhým a třetím ročníkem gymnázia, tedy v roce 1993. A když říkám o prázdninách, myslím tím 60 x 10 hodin denně – během těch dvou měsíců jsem prakticky nevyšel na ulici a i oběd jsem jedl u počítače. V dalších dvou letech jsem pak Karla ladil a vydával další verze, až jsem se dostal k šestce. Celý program byl napsán v Turbo Pascalu a používal uživatelské rozhraní Turbo Vision od Borlandu. Hotový Turbo Karel také svým vzhledem Turbo Pascal připomínal – cílem bylo dosáhnout co nejsnazšího přechodu mladých programátorů z Karla na Pascal.
Když se lidi o Turbo Karlovi doslechli, byl jsem vyzván, abych jej představil na pedagogické konferenci v Českých Budějovicích – to byl myslím rok 1994. Pak se objednávky hodně rozjely a zakrátko už jsem zásoboval základní školy i gymnázia. Napsal jsem více než stostránkový manuál i učebnici jazyka, Karla jsem vybavil i obří nápovědou. Nikdy později už jsem tak velký projekt sám nedokončil. Později jsem za Karla dostal i Duhovou disketu – cenu ministerstva školství za nejlepší vzdělávací software. Diplom mi tehdy předával Ivan Pilip – kde jsou ty časy…
Zápis programů v Turbo Karlovi
Uvítací obrazovka. Jediná kopie, která mi zbyla, patřila ZŠ Sušice.
Ukázka menu
O zdrojový kód Karla jsem přišel v srpnu 1997, kdy mi byl ukraden počítač i všechny záložní disky a diskety. Tuto krádež dodnes vnímám jako jednu z největších ztrát svého života – během jednoho dne jsem přišel o všechno, co jsem za cca 10 let do počítače nabušil. Kromě mých programů to byly především výpisky z mnoha set knih a spousta blbostí, které jsem sám napsal. Tyto věci už jsem nikdy nedokázal nahradit. Od té doby už neříkám záloha ničemu, co není rozmístěné alespoň ve 3 městech a 3 odlišných technologiích záznamu. A pámbu ví, že zálohuju jak blázen.
Hlavní zdrojový soubor Karla (má 3 794 řádek kódu) se mi podařilo získat zpět, chybí ale některé vlastní knihovny, takže už nemůžu znovu vytvořit spustitelnou verzi. Sehnal jsem ale spustitelnou verzi, která kdysi patřila ZŠ Sušice. K jejímu spuštění budete potřebovat emulátor starého operačního systému DOS, který se jmenuje DOSBox. Není to žádný problém.
1. Stáhněte si Karla a někam ho uložte – třeba do c:karel
2. Stáhněte si DOSBox z těchto stránek a nainstalujte ho.
3. Spusťte DOSBox. Objeví se vám černé okno – starý dobrý DOS. Zadejte
mount c c:karel
c:
cd karel
karel
Karel se spustí. A všechno funguje – můžete programovat, ukládat příkazy i editovat město.
Turbo Karel byl největší samostatný výkon, na jaký jsem se v životě vzmohl.
[…] MHz, 2 MB RAM, skvělá VGA grafika. Zlaté časy Wolfensteinu 3D a Turbo Pascalu. V něm jsem napsal PC klon Karla, českého jazyka pro výuku programování. Turbo Karla 6.0 ode mě koupilo pěkných pár […]
Nikdy jsem nevěděl nic o autorovi Karla. Náhodou jsem se dnes při pauze mezi učením na zkoušku ocitl zde. Smekám!
Nevím, jaká byla korelace úspěchu u studentek gymnázia s autorstvím Karla, ale pro větší část vyučujících IVT jsi se stal žijící legendou…
Wow, tady smrdí nostalgie. Připomíná mi to trochu baltíka :) Všechna čest…
Mám problém- potřeboval bych vyluštit co znamená toto:
BEGINNING-OF-PROGRAM
DEFINE Move3
AS BEGIN Move Move Move END
DEFINE Move4
AS BEGIN Move3 Move END
DEFINE TurnBack
AS BEGIN TurnLeft TurnLeft END
DEFINE TurnRight
AS BEGIN TurnBack TurnLeft END
DEFINE MoveBack
AS BEGIN TurnBack Move TurnBack END
DEFINE OnNorth
AS BEGIN while not isNorth do turnleft END
DEFINE OnSouth
AS BEGIN OnNorth TurnBack END
DEFINE INV1
AS BEGIN if IsBrick then Take else Put END
DEFINE INV2
AS BEGIN INV1 Move INV1 END
DEFINE INV3
AS BEGIN INV1 Move INV1 Move INV1 END
DEFINE Put_NE_INV1
AS BEGIN
if IsBrick then BEGIN END else Put
OnNorth
Move TurnRight Move
INV1
END
DEFINE Put_SE_INV1
AS BEGIN
if IsBrick then BEGIN END else Put
OnSouth
Move TurnLeft Move
INV1
END
DEFINE Put_SW_INV1
AS BEGIN
if IsBrick then BEGIN END else Put
OnSouth
Move TurnRight Move
INV1
END
DEFINE Deg
AS BEGIN
TurnRight INV3
TurnLeft Move INV2
TurnLeft Move INV2
TurnLeft Move INV1
Move TurnBack
END
DEFINE Init
AS BEGIN
While Not IsNorth do TurnLeft
While Not IsWall do Move
TurnLeft
While Not IsWall do Move
TurnBack
END
BEGINNING-OF-EXECUTION
Init
TurnRight INV3
TurnLeft Move Move
TurnBack INV2
TurnLeft Move
INV2 Move3 Put
Move TurnRight Move Put
TurnLeft Move Move TurnLeft
Move Move TurnLeft
INV3 Move INV2
Move Move TurnRight
Move Move INV3
TurnLeft Move Put
Move TurnLeft Deg
TurnBack Move
Move TurnLeft
Deg
TurnBack Move4
TurnLeft Deg
TurnRight
Move3 Move3
Put_SW_INV1 Put_SW_INV1
Put_SE_INV1 Put_SE_INV1
TurnBack Move3 TurnRight
INV3 Move INV2
Move Move TurnLeft
Move TurnBack
INV3 TurnLeft Move
INV2 TurnLeft Move
INV2 TurnRight Move
INV2 TurnRight Move INV2
Move3 Move3 INV3
TurnRight Move Move
INV3 TurnRight Move
INV2 TurnRight
Move Move INV2
Move4 Move Put_NE_INV1
Put_NE_INV1 TurnRight Move
INV2 Move INV2
Move4 TurnRight
Move INV1
TurnLeft Move4 Move
Put_SW_INV1 Move Put_SW_INV1
TurnLeft Move INV1
TurnLeft Move3 TurnLeft
INV3 TurnLeft Move3
TurnRight INV1 Move
Put_NE_INV1 Move INV1
Move3 INV3
Put_SE_INV1 TurnRight
Put_SW_INV1 Move
INV1 Move
Put_SE_INV1 Put_SE_INV1
TurnBack Move Move
TurnRight INV3 INV1
Move INV1
Move3 TurnRight
Move INV3 Move
Move INV1 TurnLEft
Move TurnLeft Move4
INV1 TurnRight Move
TurnRight INV3
TurnLeft Move INV2
TurnLeft Move INV2
TurnRight Move
Move TurnRight
INV3 Move
Move INV1 TurnLeft
Move TurnLeft Move4
INV1 TurnRight Move
TurnRight INV3
TurnLeft Move INV2
TurnLeft Move INV2
TurnBack Move3 Move3
INV3 TurnRight Move
INV2 Put_SW_INV1
TurnLeft Move INV1
TurnLeft Move3
TurnLeft Deg Move3
Put_NE_INV1
Move INV1
Move3 INV2 TurnBack
Move Move TurnLeft
Move INV1 Move
TurnLeft Deg TurnRight
Move3 Move Move
INV3 Move TurnLeft
INV3
TurnLeft Move INV2
Move INV2 TurnLeft
Move INV2
Move Move TurnLeft
INV3 Move INV2
Move3 Move3
TurnRight INV3
Move TurnRight
INV2 Move Inv3
TurnLeft Move Move
INV3 Move TurnLeft
INV3 TurnLeft
INV3 Move TurnRight
Move Move TurnRight
INV3 Move TurnRight
INV3
Move4 Move4 TurnRight
Move Move TurnRight
INV3 Put_SE_INV1
TurnRight Move INV1
TurnBack Move Move
TurnRight INV2
Move Move
Put_NE_INV1
Move4 Move3
END-OF-EXECUTION
END-OF-PROGRAM
Tys byl od mala úplně mimo tabulky a statečně v tom pokračuješ :)
Jen pro po pořádek, pan Mareš napsal program, který si s Karlem umožňuje hrát, ale nevymyslel ho (ani to o sobě netvrdí). Vymyslel ho pan Pattis a do Československa se dostal nejpozději v 80letech, kdy ho zde šířil pan Pecinovský (a další, jejichž jména neznám).
Nebudu to natahovat. Smekám Martine. Vůbec jsem netušil, že něco takového má pozadí, na kterém figuruje jméno Martin Jaroš……… uufffffffffff.. smekám!!!!!!!!