PowerD
======
Co to PowerD vlastně je? Pokud čtete tento tutorial, tak je vám asi jasné, že to není žádná
eroticka pomůcka, ani depilační přístroj. Ano správně, je to PROGRAMOVACÍ JAZYK. Abych to
upřesnil, jedná se o moderní procedurální programovací jazyk pro operační systém AmigaOS a
kompatibilní, takže funguje i pod WinUAE, Amithlonem, či MorphOSem. Co znamená to slůvko
"procedurální"? To znamená, že nejpodstatnějším rysem tohoto jazyka jsou procedury. Ti z vás,
kteří programovali třeba v basicu, určitě znají příkaz GOSUB, což je příkaz, který vám umožní
skočit na nejaké místo, a až "to" tam skončí, tak se vrátí zpět, a program pokračuje dále. A
právě to "nejaké místo" je procedura. Jinými slovy funkce, která se provede a program pokračuje
dál. A teď si vezměte například to, že i hlavní program nezačína první řádkou, ale nejakou
procedurou (nebo pro basicaře: podprogramem). A to je právě ono. Každý program musí obsahovat
proceduru "main", protože tohle je (zjednodušeně řečeno) podprogram, na který si skočí systém,
když vy si spustíte váš program. Ale nezoufejte, není to omezením, spíš naopak. Také jsem dřív
programoval v basicu. Postupem času se to stane naprosto přirozeným. Každá procedura může
spouštět další procedury, a ty mohou spouštět zase další procedury včetně sebe samých...
Je ještě jedna velmi důležitá věc v tomto programovacím jazyce, a sice ta, že se všude rozlišují
velká a malá písmena! To znamená, že již nelze psát, jak se vám zlíbí s tím, že si to ten jazyk
nejak přebere. Nepřebere. Toto je daň, kterou zaplatíte ze programování v systému, není to věc
jazyka samotného. Sami časem přijdete na to, že je to tak vlastně lepší. Je to jen otázka zvyku.
Kde vzít další informace
========================
Zaprvé je možné se připojit do české PowerD konference. To uděláte snadno na stránkách
http://www.pandora.cz, kde se musíte zaregistrovat, a pak přihlásit do této konference. Pokud
si nejste jisti, kontaktujte mne (kuchinka@volny.cz), a já vás přihlásím. Pak už stačí jen
potvrdit emailem připojení, a pak už můžete posílat a přijímat příspěvky z a na
powerd@pandora.cz. Tato konference je česká, takže ji může používat každý, kdo si dokáže přečíst
tenhle článek :) Co se týče obsahu této konference, lze řešit jakékoliv dotazy, či problémy,
které mají co do činění s PowerD. To se samožřejmě dozvíte i na stránkách Pandory.
Instalace
=========
Tak nejprve bysme meli začít s instalací. Instalace je celkem triviální záležitost.
stačí si stáhnout archiv z domovské stránky PowerD (www.volny.cz/kuchinka/files/powerd.lzx).
Pokud tento archiv máte, je třeba stáhnout ještě tři další archivy z internetu pro
plnou funkčnost tohoto jazyka. Jsou jimi 68k assembler PhxAss, který je možné stáhnout
z ftp://ftp.uni-paderborn.de/ftp/aminet/pub/dev/asm/PhxAss.lha a PowerPC assembler PAsm,
který si můžete stáhnout z http://devnull.owl.de/~frank/pasm.gz. Dále je třeba stáhnout
ještě linker z http://devnull.owl.de/~frank/vlink.gz. To je všechno. Po rozpakování těchto
archivů si překopírujte tři soubory, které PowerD potřebuje ke své správné funkci do adresáře
C:, jsou to soubory PhxAss, PAsm a VLink. Nyní si rozpakujte i posledni archiv, a sice
powerd.lzx. Celý rozpakovaný adresář PowerD si nakopírujte kamkoliv, kde se vám to hodí.
Pro názornost udejme jako příklad třeba adresář Work:Programovani. Takže přesuňte rozpakovaný
adresář do tohoto adresáře. Dále je třeba rozarchivovat jeste soubor
Work:Programovani/PowerD/modules.lha, a přesunte vytvořený adresář vašeho PowerD adresáře.
Teď je třeba nastavit si pár řádek v souboru S:user-startup. Přidejte tam nasledující řádky:
C:Assign D: Work:Programovani/PowerD
C:Assign DMODULES: D:Modules
C:Path D:bin ADD
Nyní by mělo být PowerD připravené k práci.
Kompilace
=========
Nováčci, radši přeskočte, nebo vás to ještě odradí :)
Kompilace je neco jako překlad. PowerD, je kompilátor. Kompilátor překládá z jednoho jazyka
do druhého jazyka. PowerD překládá z PowerD jazyka do jazyka, kterému rozumí váš počítač, a
tak lze vámi napsané programy na vašem počítači spouštět. Jak to funguje? Kompilátor prostě
vezme zdrojový kód, a příkaz po příkazu ho přeloží do assembleru, což je další programovací
jazyk, který je ale oproti PowerD mnohem blíže počítači než člověku. K tomu, aby ho počítač
dokázal spustit, je třeba ještě něco. A tím je assemblování, nebo chcete-li další kompilace.
Tentokrát se ale překládá zdrojový kód assembleru do spustitelné podoby, k tomu je potřeba
právě výše zmíněný assembler PhxAss a PAsm. Ale to stále ještě není úplně všechno, ješte je
potřeba to všechno spojit s funkcemi, které ve svém programu používáte a dát tomu finální
podobu, k tomu slouží linker, o kterém jsem se také zmínil výše.
První program
=============
Tak, jako v každém programovacím jazyce na světě, i v tomto si můžete nechat vypsat text.
Stačí, když napíšete ve vašem oblíbeném ASCII textovém editoru nasledující řádky, a uložíte
je třeba do souboru RAM:hello.d:
PROC main()
PrintF('Hello world\n')
ENDPROC
Pak si otevřete CLI či SHELL, a v něm napište:
dc ram:hello.d
Toto bude mít za následek to největší kouzlo, které vám tento jazyk nabízí, a sice to, že vám
z předcházejícího zdrojového kódu udělá spustitelný program. Pokud proběhlo všechno v pořádku,
mělo by být v CLI/SHELLu napsáno:
PowerD v0.2: Done.
Nyní stačí jen v CLI/SHELLu napsat:
ram:hello
a tím se (zjednodušeně řečeno) skočí na proceduru "main", která obsahuje funkci PrintF(), což
je funkce, která vypisuje text do CLI/SHELLu, a tato funkce tam vypíše text "Hello world\n".
(na konci tohoto řetězce je vidět znaky "\n", což znaméná odřádkovat).
V tomto jednoduchém programu jsme použili hned dvě funkce. První je naše velmi oblíbená funkce
"main", kterou si definujeme my sami. Další funkce, kterou jsme tentokrát použili je funkce
"PrintF". Tuto funkce si ale nemusíme napsat, ta je již napsaná v systému. My jsme ji pouze
zavolali.
Teď detailnejší vysvětlení našeho zdrojového kódu. Jak jistě každého napadne, a jak z předchozího
textu vyplývá, je zřejmé, že procedura se definuje pomocí slova PROC a ukončuje pomocí slova
ENDPROC. Tato (a všechna ostatní klíčová slova se v PowerD musejí psát velkými písmeny) klíčová
slova označují začátek a konec procedury. Vše, co je mezi nimi, je vlastní kód procedury. Také
jste si jistě všimli, že za slovem PROC je již několikrát zmiňované slůvko "main". Ano, toto
slovo označuje název procedury. Takže "PROC main()" znamená "začátek procedury main". No, a
ENDPROC zase jeji konec :) Prosté. Asi vás zajímají ty dvě závorky "()" u procedury "main".
U této procedury nemají žádný význam (samozřejmě to význam má, ale jen pro velmi pokročilé
programátory), pouze nám sdělují, že procedura nemá žádné argumenty. Na druhém řádku je vidět,
volání funkce "PrintF". Jak vám již začíná být jasné, je to podobné, jako u funkce (=procedury)
"main". Je to ale samozřejmě jeden rozdíl. Tato funkce -má- argumenty. Teda jeden. Tímto
argumentem je text, který se má vypsat. A to je vlastně všechno, co tento prográmek dělá. Pro
bližší pochopení "procedurálnosti" tohoto jazyka si můžete představit, že i nase funkce "PrintF"
je definována podobně, jako procedura "main":
PROC PrintF(text)
<kód, který napíše do CLI/SHELLu obsah argumentu "text">
ENDPROC
Jsou tu vlastně jen dva rozdíly, první je ten, že tato procedura má argument, zatímco procedura
"main" žádný neměla a druhý je samozřejmě ten, že tato procedura obsahuje jiný kód.
A nyní maký úkol, kdo si dokáže z těchto poznatků napsat prográmek, který udělá to samé, ale
funkci "PrintF" si zavolá z jiné funkce, než "main", třeba z funkce "vypsat", ale text, který
se má vypsat, se musí zadat již v proceduře "main"? Řešení pro ty, kteří nechtějí přemýšlet je
níže.
PROC main()
vypsat('Hello world\n')
ENDPROC
PROC vypsat(text)
PrintF(text)
ENDPROC
Tak. To by pro první lekci mohlo stačit. V další lekci si vysvětlíme další kroky potřebné pro
úspěšné programování, a tím budou smyčky a podmínky. Samozřejmě nebude chybět ani hromada ukázek.
Pokud Vás tenhle článek zaujal, a máte hromadu dotazů, tak se mi ozvěte na martinkuchinka zavinac seznam tecka cz, a
já už z Vás programátory udělám. Není nic lepšího, než spustit vlastní program!!!