PowerD
Mark
Jak to vsechno zacalo. Svou prvni Amigu jsem si poridil v rijnu 1993.
Tvrde jsem na ni smazil super gamesy, tvrde jsem ji obhajoval pred pomalejma
peeceeckama, ale smazeni me brzo prestalo bavit, zacal jsem mit potrebu neco
tvorit. Nejjednodusi a nejvykonnejsi alternativa v te dobe (2MB RAM+disketa)
byl AMOSPro. V nem jsem udelal par moc peknych programku na vsechno mozny,
proste me bavilo objevovat, co to vsechno dokaze. Pak, kolem roku 1995, to
jsem uz mel harddisk, a AMOS me prestal bavit, protoze jsem chtel programovat
systemove, a to v AMOSu moc nejde, tak jsem zacal hledat jine reseni. Zkousel
jsem GFABasic, ale ten na me Amize nejel, zkousel jsem HiSoft basic, ale nejak
mi moc nevyhovoval, protoze jsem ho mel nacerno a bez jakekoliv dokumentace.
Pak jsem zacal flirtovat s Pascalem, a pozdeji s Ceckem.
Ale tady byly 2MB RAM
zatracene malo. Pak mi zbyval uz jen Assembler. V AmigaReview vychazel dost
dobry clanek o programovani v assembleru, a svete div se, ja se v nem naucil
programovat!!! Pak me zaujala 3d grafika, tak jsem chtel vytvorit nejaky svuj
vlastni 3d program, tak jsem ho zacal psat v assembleru. Jenze kdyz mel
zdrojak asi 60 kilo, tak mi to zacalo pripadat silene zdlouhave, protoze to
jsem si teprve otevrel obrazovku, okno, a vytvoril par tlacitek... Tudy cesta
nevede. Pak jsem si jednoho dne precetl v casaku AmigaNews o jazyce
AmigaE. Horko tezko jsem si ho sehnal, a zacal prolezat dokumentaci.
Vsechno
vypadalo celkem snadne, par veci mi sice pekne zamotalo hlavu, ale diky
dokumentaci jsem to vsechno vzdycky nejak vyresil. Zacal jsem programovat v
AmigaE. Byl to naprosto uzasny programovaci jazyk, neskutecne rychly, exace
dokonale kratoucke, proste pohadka! Zakratko mi prestala stacit demoverze
Ecka, tak jsem si ho zakoupil primo od autora za neuveritelnych 1100 Kc,
platba sekem, a pak hura na programovani. Tak jsem zacal psat svuj 3d program.
Casem jsem se dostal na delku zdrojaku okolo 120 kilobajtu, a tady mi prestala
stacit pamet, stale jen ty 2 mega. Vytvoril jsem si specialni bootovaci
sekvenci, abych usetril jeste nejakou tu pamet, a dostal jsem se az na
neuveritelnych 170 kilobajtovy zdrojak, stale jeste jen pri 2 megabajtech. Pak
prisla na radu turbokarta 030/50 a 16 mega pameti. Ty blaaaho, to byl narez!
Ecko jelo jako po masle. Pak prisel i koprocesor. Ecko jelo porad jako po
masle, ale ja se ve svem programovani dostaval stale dal a dal, a najednou
jsem prisel na to, ze Ecko nedokaze primo vyuzivat fpu, coz mi zacalo dosti
vadit. Psal jsem autorovy, jestli s tim neco neudela, a on mi zdelil, ze prave
poslal na aminet novou verzi. A taky to byla verze posledni :((( Hruza a des
me polily, protoze fpu bylo nekde hluboko na todo listu, takze se ho stejne
nikdy nedockam. Nasel jsem si alternativni reseni, pouzivat ieee knihovny
napatchovane na koprocesor. Ale uz to nebylo ono. Tehdy jsem zacal premyslet,
jestli by se s tim nedalo neco delat...
Nekdy v roce 1998 jsem zacal premyslet o mych vlastnich funkcich, ktere by
prekladali funkci v textu (treba '1+2*3') do nejake tabulky, a podle te by se
pak ziskal ciselny vysledek. Po mnoha ruznych (ne)uspesich jsem jsem to zacal
trosku rozsirovat o matematicke funkce, konstanty, promenne atd. Tehdy se
zrodil napad, ze bych vlastne mohl Ecko nahradit svym vlastnim jazykem. Koncem
roku 1998 jsem na tom zacal pracovat. Prvni, prisne soukroma verze se objevila
13.1.1999, zdrojak mel 64 kilobajtu. Tohle si pamatuju jan proto, ze jsem si
to hezky pekne zalohoval. V te dobe jsem uz mel tusim PPC. Programoval jsem
jako blazen, a za dva tydny to melo uz 100 kilo, a stale to rostlo. Pomalinku
to zacinalo byt pouzitelne pro primitivni programky. V zari to melo uz pres
200 kilo, a ja se odhodlal, a poslal jsem to na aminet. Nejdriv nic moc, zadne
vlane ohlasy, ale obcas se ozval clovek, jako ze to co ma jako znamenat, nebo
k cemu je to dobry, nebo tak neco. A taky se na internetu ve stejnou dobu
(myslim) objevilo pokracovani AmigaE, a sice CreativE, jehoz autor
byl Tomasz
Wiszkowski (alias Error - pozn. AGASlayer). Pak jsem pridelal nejakou tu vymozenost, protoze jsem citil
konkurencni prostredi, a najednou koukam, ze CreativE ma tu samou vymozenost,
hned mi bylo jasny, ze autor CreativE to ode me obslehl :))) Konecne jsem
pocitil nejaky zajem ze strany nekoho jineho. V zapeti mi prisel email, od
nikoho jineho, nez od Tomasze, ze pouzil mou vymozenost, a jestli se mi to
nelibi, tak ji zase odstrani. Samozrejme jsem to tak nechal, a on casem
dodelal jeste dalsich par vymozenosti ode me :) Pak jsem ziskal par ohlasu, a
dotazu, jestli zabuduju i objektove programovani, a ja na tom zacal delat, ale
moc jsem tomu nebazil, takze to nestalo za moc. A pak se mi jednoho dne ozval
sam Velky Wouter, autor AmigaE, ze se mu moje prace libi, a ze mi preje hodne
stesti do budoucna. A uz mi bylo jasne, ze s tim jen tak neseknu :) No, casem
jsem zacal podporovat i PowerPC procesory. Decko, jak jsem svuj programovaci
jazyk nazval zacinalo byt cim dal tim lepsi a lepsi, pomalu mizeli detske
nemoci, a stale se prodluzovalo. Pak jsem si otevrel i vlastni stranky, na
kterych jsem si ho publikoval, a kdyz jsem tam poslal novou verzi, hned jsem
ji nechal zverejnit i na strankach CAN, a pozdeji i ANN. Tak se o tomto jazyce
dozvedelo par lidi, ktere to vazne zaujalo, a tak mi zacali posilat vlastni
bugreporty, i vlastni vytvory.
Dnes uz ma PowerD podporu snad vsech beznych standardu i nestandardu :) A ja
sam uz nedelam v nicem jinem, protoze tohle je jazyk, ktery mi vyhovuje! A
kdyz mi neco nevyhovuje, tak si to dodelam ;) Dnes ma zdrojak pres 830
kilobajtu, a pocitam, ze jeste nejakou dobu pekne poroste. Bohuzel v nem
dodnes nebyla vytvorena zadna vetsi aplikace, cemuz se ale nemuzu moc divit,
protoze do nedavna bylo Decko stale dosti nestabilni. Nemyslim, ze by padalo,
i kdyz i to se obcas stalo, ale hlavne to vsechno zkompilovalo v poradku, a
vysledek nefungoval. Par bug-reporteru na me tlacilo, abych napsal debugger, a
tak po dlouhem premlouvani jsem si k tomu sedl, a ouha, za 4 dny prace jsem ho
mel. Ted uz delam vic na programech v tomhle jazyce spis, nez na jazyce
samotnem, a stale tim hledam chyby, abych je mohl odstranit... Ale casu je
malo (jsem pracujici clovek), a prace hodne, takze to jde pomalu.
Ted neco ke specifikacim, a k tomu, proc prave tenhle jazyk (ne)pouzit:
Pozadavky na system jsou vcelku minimalni, staci tak 4 mega ram, pro minimalni
projekty mozna 2 mega (netestovano), pro vetsi projekty tak 8 az 16 mega. Co
mi stale chybi, je nejake API, ktere by usnadnilo praci zacatecnikum, ale par
lidi na tom uz dela, tak doufam, ze se casem neco objevi. A o cem to tady
vlastne celou tu dobu mluvim? Jde o jazyk, ktery ma syntaxi dosti podobnou
jazyku AmigaE/CreativE, ale tato syntaxe je znacne rozsirena, a clovek muze
pouzivat i veci, ktere by ho ani nenapadli, protoze v jinych jazycich ani
neexistuji. Tak napriklad WHILE/ENDWHILE pochopi snad kazdy, kdo nekdy
programoval. Ale jak tak jsem na to koukal, tak jsem si rekl, ze by se to dalo
hezky rozsirit, jako IF/ENDIF ma ELSEIF/ELSE, tak tohle o ELSEWHILE/ALWAYS.
Proste takovychhle vymozenosti je tam spousta, a casto dost usnadni praci,
nebo dokonce umozni veci, ktere jsou jinde temer nemozne :) Ta syntaxe je
hlavni duvod, proc se to lidem na prvni pohled zalibi, je to proste mnohem
prehlednejsi, nez treba Cecko:
#include <proto/exec.h>
#include <proto/asl.h>
#include <stdio.h>
VOID main(VOID)
{
struct FileRequester *req;
if(ASLBase=OpenLibrary("asl.library",37))
{
if(req=AllocFileRequest())
{
if(RequestFile(req) printf("file: \"%s\"\n",req->fr_File);
FreeFileRequest(req);
}
CloseLibrary(ASLBase);
}
}
MODULE 'asl','libraries/asl'
DEF ASLBase
PROC main()
DEF req:PTR TO FileRequester
IF ASLBase:=OpenLibrary('asl.library',37)
IF req:=AllocFileRequest()
IF RequestFile(req) THEN PrintF('file: "\s"\n',req.File)
FreeFileRequest(req)
ENDIF
CloseLibrary(ASLBase)
ENDIF
ENDPROC
Je na kazdem, aby si vybral, co se mu vic libi, a co mu vic vyhovuje.
Jen chci rict, ze kazdy, by to mel nejdriv vyzkouset, a az pak si o tom udelat
vlastni nazor. Decko je stale ve vyvoji, na rozdil od jinych jazyku, ktere
jsou stale stejne po mnoho desetileti ;) Ale zatim funguje pouze na Amize.
Verim, ze casem bude fungovat i na jinych platformach [mel jsem i ohlasy od
Macintoshistu ;)] ale zatim funguje jen na Amize, UAE, Amithlonu, AmigaOSXL a
dokonce i na Pegasosu pod MorphOSem!!! Jak mi bylo asi pred tydnem zdeleno!!!
Takze si myslim, ze stabilita zacina byt opravdu slusna.
Co se vyctu podpory tyce, v Decku se da pracovat snad se vsim, co se k Amize
dodava, pokud nekdo prepsal moduly ;) Momentalne je to podpora CGFX, P96,
Warp3D, RTG, AHI, MUI atd. atd. Bohuzel mi chybi pro ceskou Amiga komunitu to
nejdulezitejsi, a sice ceska dokumentace :((( Vzhledem k potrebam mych
zahranicnich uzivatelu jsem se soustredil spise na anglictinu, ale bohuzel na
ukor cestiny. Pokud by mel nekdo zajem to prelozit, urcite by to par cechu
uvitalo :) Momentalne je prelozena asi 1/3 z cele dokumentace, ktera ma kolem
300 kilobajtu v html.
Co rici na zaver, kdyz jsem vas uz urcite uspal timhle (ted koukam) silene
dlouhym blabolenim? Snad jen, ze se casem objevi vice cechu, kteri budou na
Amigu programovat, a i kdyz uz jsou vsechny nase Amigy stare, stale nam, tak
jako me, mohou cinit velike poteseni z tvoreni, ktere je, at si
kdo-chce-co-chce-rika, na Amize stale mnohonasobne snadnejsi, nez na jinych
platformach! A vezte, ze jsem to vyzkousel jak na PC, tak na MacOS 7 a X!
Amiga je proste nejlepsi, a nezalezi mi na tom, co konkretne to 'nejlepsi' ma
byt. Amiga Rulez!!!
Kontakt:
email: kuchinka@volny.cz
www: http://www.volny.cz/kuchinka