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!!!