AMIGA REVIEW obsah časopisu online!
  Domov     Software     Hry     Obaly     Download  

StormC 2.0

Pavel Čížek

Jak jste se mohli dočíst v předchozím čísle AMIGA Review, objevila se nová verze vývojového prostředí StormC 2.0. Nyní máte možnost seznámit se s ní podrobněji.

O verzi 1.1 jste si mohli přečíst na stránkách Amiga Review v loňském roce. Proto jen ve stručnosti připomenu základní informace a pak se vrhneme na novinky. StormC je vývojové prostředí od firmy HAAGE & PARTNER. Koncová cena produktu je 598 DM, studenti mohou uplatnit 100 DM slevu. K dispozici je i tzv. cross-upgrade při přechodu z jiného komerčního kompilátoru. V tom případě vsím „postačí“ 400 DM. Upgrade z verze 1.x přijde na 170 DM. Pro ty, kteří nechtějí nebo nemohou investovat tolik do vývojového systému, byl nově vytvořen StormC Starter Kit, který je výrazně levnější (250 DM), ale je ochuzen o skvělý debugger a profiler, o podporu GoldEDu a také nelze vytvářet programy pro MC 68040/MC 68060 či FPU. Kromě standardního StormC se navíc v současnosti připravuje verze kompilátoru pro PowerPC a také pro již zmíněný p-OS.
Vzhledem k tomu, že dodávka ani samotná instalace se nijak výrazně neliší od předchozí verze, vrhneme se rovnou na novinky této verze. Připomeňme jenom, že potřebná hardwarová výbava není zrovna skromná - jako minimální (ale téměř nedostačující) je uváděna 3 MB RAM a 5 MB místa na harddisku. Pro slušnou práci lze doporučit minimálně 6 MB (raději však 8 MB) paměti, rychlejší procesor (nejlépe s MMU) a také větší harddisk. No a bez multisync monitoru to také nebude to pravé.

Jazyk
Připomeňme, že StormC nabízí programátorům na Amize úplnou implementaci jazyka ANSI C a C++ 3.0. Chybí pouze některé nejnovější prvky jako prostory jmen apod. Problém zmiňovaný v recenzi na předchozí verzi, tj. nedostatečnou nabídku v oblasti nabízených knihovních funkcí, je částečně řešen tím, že je k dispozici zvláštní knihovna „Fast-ANSI-Lib“, která repertoár funkcí rozšiřuje (stále to ovšem není žádný zázrak). Také některá klíčová slova používaná jinými kompilátory byla doplněna (například _saveds, stále však chybí _far, _negr, _aligned, _stackext včetně možnosti je nějak jednoduše nahradit v případě lokálního použití), tak aby byla zajištěna poměrně slušná přenositelnost především ze SAS/C. Vzhledem k tomu, že toto téma je rozebráno v nápovědě, nemělo by se jednat o příliš složitý proces.

Prostředí (StormShell)
Prostředí StormC je reprezentováno správcem projektu zvaným StormShell - to je lišta s ikonami, která je však doplněna o poměrně rozsáhlé menu. Z toho správce lze otevírat, modifikovat a zavírat projekty, kompilovat, spouštět a odlaďovat programy, editovat jejich zdrojové texty... Každý projekt je reprezentován oknem, které obsahuje soubory k němu se vážící. Přitom soubory jdou přehledně rozděleny do skupin (C++, assembler, dokumentace, AmigaGuide, programy...). Práce s projektem byla v nové verzi dále zdokonalena. Kromě toho, že došlo ke zpřehlednění jednotlivých konfiguračních oken a také k přidání nových skupin projektu, zvýšila se i použitelnost jednotlivých sekcí projektu (těch, které neobsahují zdrojové texty v Céčku).
Předně, nyní je možno soubory v jednotlivých skupinách, ale i celé skupiny v projektu, uspořádat podle vlastní libostí. To znamená, že si můžete často používané skupiny a soubory umístit na přední, snadno dostupná místa v seznamu a nemusíte je za pomocí posuvné lišty hledat kdesi na konci. Ke stávajícím skupinám souborů byly doplněny skupiny pro StormWIZARD (tvorba uživatelského prostředí od téže firmy) a dále pro Céčkovské knihovny. Podstatné ovšem je, že zatímco v předchozí verzi jste soubory v projektu mohli pouze editovat, popř. prohlédnout v MultiView (výjimkou samozřejmě jsou zdrojové texty, které lze kompilovat), nyní můžete zpracovávat (= kompilovat) libovolný typ souborů. Celý vtip je v tom, že StormShell standardně při kompilaci spustí pomocí ARexxu kompilátor (samozřejmě s potřebnými parametry ). Od verze 2.0 je však možno tento ARexxový skript zadat explicitně pro celý projekt nebo pro zvolený typ (skupinu) souboru; takový skript pak nemusí nutně volat StormC, ale například CatComp či StormLibrarian. Několik příkladů je již ve standardní dodávce (pro Librarian. PhxAss, Fd2pragma, CatComp, Oma assembler...) a nic nebrání vytvoření vlastních podle těchto vzorů. Pokud tedy váš výtvor podporuje například lokalizaci, pak stačí skupině „Locale files“ přiřadit dodávaný skript pro CatComp; při kompilaci pak budou (v případě změny katalogu) automaticky vytvořeny příslušné lokalizační soubory.
Dalším zlepšením je možnost vložení jiného projektu (do projektu stávajícího (například projekt pro podpůrnou knihovnu). To bylo možné již ve verzi předchozí, nyní však jsou k dispozici příkazy pro automatickou (re)kompilaci nejen projektu aktuálního, ale i všech projektů vnořených. Toho se dá šikovně využít i pro zjednodušení práce v případě, kdy pracujete na verzích pro více procesorů (či do budoucna pro více operačních systémů :-)). Projekty totiž mohou samozřejmě sdílet zdrojové texty, ale od verze 2.0 může mít každý projekt svůj speciální adresář pro ukládání objektových souborů (= produktů kompilátoru). Při změně v programu pak stačí provést !hierarchickou“ kompilaci, která vytvoří pro modifikované soubory nové objektové soubory v příslušných procesorových verzích - ty pak linker spojí s těmi zbývajícími do programů pro příslušné verze procesoru. Toto bude patrně velkou předností v momentě, kdy bude k dispozici kompilátor pro PowerPC, popř. p-OS.

Editor (už nejen StormED)
První z činností, kterou začne tvorba programu, je editace. V rámci standardní dodávky získáte editor StormED; ten je využíván nejenom k editaci, ale i k odlaďování programů. Možnosti StormEDu odpovídají možnostem editorů v integrovaných prostředích - k dispozici je práce s bloky, „nekonečné“ undo a redo, vyhledávání a nahrazování, nově také skok na sdruženou závorku. V nové verzi je především výrazně zjednodušeno nastavení zvýrazňování syntaxe - mažete používat i vlastní slovníky, na rozdíl od GoldEDu lze využít pro zvýraznění nejen barev, ale i stylů písma (tučné, kurzíva, podtržené).
Protože však kvalit takových sharewarových programátorských editorů na Amize jako je GoldED tento editor zdaleka nedosahuje, přibyla nyní již kompletní podpora GoldEDu. Pro její plné využití potřebujete GoldED 4.4.x nebo vyšší a také příslušné „StormC“ prostředí. Stejně jako vyšli HAAGE & PARTNER vstříc autorovi GoldEDu, vyšel autor vstříc jim. Vytvořil například modul pro zvýrazňování syntaxe, který využívá slovníku dodávaných se StormC a který tedy zvládá i zvýrazňování funkcí, struktur a symbolů operačního systému Amigy. Nakonec vznikla konfigurace, která umožňuje plné ovládání StormC přímo z GoldEDu. V podstatě lze z menu GoldEDu založit, otevřít či uložit projekt (přičemž v případě. kdy ještě není spuštěno StormC, dojde k automatickému nahrání jednotlivých modulů), můžete spouštět kompilaci, procházet jednotlivé chyby při překladu nalezené, spouštět odlaďování včetně toho, že lze otevírat libovolné okna vážící se k debuggeru (proměnné, disassembler,...). Samozřejmě lze z GoldEDu StormC i vypnout. Přitom funkční klávesy jsou zcela shodné s nastavením ve StormC; v GoldEdu však navíc naleznete nástrojovou lištu (kromě té standardní pro práci se soubory) obsahující všechny základní operace týkající se kompilace a odlaďování - můžete tedy přímo v GoldEDu používat titíž ikony pro řízení ladění, které používáte i v standardním StormRun debuggeru. Pokud vám to tedy ještě nedošlo, připomínám, že GoldED již od verze 4.0 může sloužit pro zobrazování textů pro libovolný debugger (můžete tedy nastavovat breakpointy, zvýrazňovat aktuální řádek apod.) a nahrazuje tedy ve všech funkcích standardní StormED. A to je dobře, neboť je přece jenom výrazně rychlejší a schopnější.

StormC++
Součástí balíku je samozřejmě kompilátor C a C++. Vlastní kód generovaný kompilátorem je i nadále omezen na procesory řady MC 68000 - MC 68060 a může podporovat práci s koprocesorem (v případě StormC Starter na MC 68000 - 68030 bez koprocesoru). Na kompilátor samozřejmě navazuje linker, který je poměrně rychlý. Navíc umožňuje přilinkovat k výslednému programu také binární data - jedná se zatím o data StormWIZARDu popisující uživatelské rozhraní programu (nemusí tedy nutně být uložena v externím souboru).
V nové verzi kompilátoru se autoři zaměřili spíše na zpohodlnění programátorské práce než na zdokonalení optimalizace či rychlosti. Optimalizace byla zdokonalena u linkeru, který nyní například umožňuje automaticky slučovat části kódu, které jsou v programu vícekrát a jsou identické. Dále byly optimalizovány knihovny „storm.lib“ (standardní funkce StormC) a matematické knihovny. Přibyla také matematická knihovna pro MC 68020, která může být nyní použita na všech procesorech vyšších než klasická MC 68000 (v předchozí verzi existovala pouze pro MC 68040 či koprocesor).
Z novinek jmenujme například možnost vypnutí inline funkcí - to jsou funkce (většinou krátké), pro které se negeneruje zvláštní kód, který je pak zavolán jako podprogram, ale instrukce funkce jsou vloženy přímo na místo, kde je daná funkce použita. Zjednodušeně lze říci, že fungují podobně jako makra v C, ale podstatně efektivněji. Problém spočívá při ladění - neexistuje žádný kód inline funkce, nelze ji ladit. Vypnutí inline funkcí tedy umožní, aby se (alespoň dočasně) kompilovaly jako normální funkce, které lze bez problémů ladit. Podobnou volbou je ignorování výjimek jedná se zdokonalený mechanismus ošetření chybových stavů programu, který ovšem způsobuje, že program je značně rozsáhlejší (pokud výjimky intenzívně používáte). Pro případy, kdy výjimky používáte pouze pro fázi ladění a nejsou nezbytně pro běh programu, vám tato volba umožní je výjimky při finální kompilaci vypustit a program tak značně zkrátit.
Práci určitě urychlí také „rapid prototyping“ - jedná se o následující mechanismus: pokud pracujete na programu, často potřebujete u funkcí na vyšší úrovni použít funkce, které nejsou ještě definovány (prostě chcete dokončit implementaci některých vlastností později, ale hlavní funkce chcete mít již v koneční podobě). To programátora nutí tyto funkce definovat, zavést deklarace - zbytečná práce. StormLink vám nyní umožní takovéto neznámé symboly nahradit jediným „_stub“ - pokud tedy nadefinujete funkci toho jména, která prostě ohlásí něco ve smyslu „tato funkce ještě není dokončena“, budete moci používat při psaní i funkce, které hodláte možná někdy v budoucnu dodělat a které zatím prostě ohlásí, že je ještě nikdo neudělal.

StormRun
Na kompilátor zpravidla navazuje debugger, který se snaží hledat, co zbrklost programátora napáchala. StormRun byl již v předchozí verzi velmi dobrý. V nové verzi toho opět hodně přibylo (kromě již zmiňované spolupráce s GoldEDem). V nové verzi máte k dispozici spoustu voleb, které určují režim práce, v němž bude debugger spuštěn. Bylo také výrazně přepracováno a zdokonaleno uživatelské prostředí StormRun. Zdá se, že také problémy se stabilitou jsou minulostí.
Jednom z hlavních změn je to, že už nemusíte ladit pouze na úrovni zdrojového kódu, ale můžete současně krokovat program v assembleru a místo proměnných si můžete nechat zobrazit obsah registrů procesoru. Přitom se registry pracuje jako s ostatními proměnnými - lze je přidat mezi sledované proměnné, měnit jejich hodnotu apod. To je doplněno možností editování obsahu v paměti pomocí HEX editoru.
Další velkou novinkou je profiler - jedná se o nástroj, který (jednoduše řešeno) umožní sledovat, kolik které části programu spotřebují času. V případě StormC stačí určit, že profiler má být aktivní a po skončení programu získáte tabulku, v níž naleznete dobu potřebnou k provedení jednotlivých funkcí (včetně volání podprogramů nebo bez nich) v procentech celkového času a v sekundách. Dozvíte se také, kolik času bylo potřeba při nejrychlejším a nejpomalejším provedení funkce a kolikrát byla funkce zavolána. Pro lepší orientaci v rozsáhlejších projektech můžete zadat minimální čas (kratší dobu prováděné funkce se nezobrazí) a také standardní masku (wildcard pattern), takže není problém sledovat pouze funkce začínající na „h“ nebo všechny, které nezobrazují GUI.
A co dále? Byla sjednocena okna pro sledování proměnných do jednoho a celé rozhraní se zjednodušilo. V jediném okně nyní můžete prohlížet a měnit globální, aktuální (lokální) a sledované proměnné (a navíc již zmiňované registry procesoru). Novinkou je možnost třídit proměnné podle abecedy nebo podle času jejich poslední změny - tak můžete mít aktuálně měnící se proměnné vždy na počátku seznamu. Ve verzi 2.0 se u každé proměnné vypisuje informace o tom, kde se nachází (je na zásobníku, v registrech procesoru nebo kdesi v paměti). Samozřejmé zůstaly zachovány možnosti „inspekce“ objektů, zobrazení zdrojového textu a seznamu funkcí daného objektu. Nyní můžete také předat proměnnou přímo HEX editoru (i když ve většině případů je výrazně jednodušší změnit hodnotu sledované proměnné přímo ve sledovacím okně.
Dále přibyla okno „history“ (naposledy prováděná místa = řádky programu) a dále „stack“ (zásobník) to je okno, v němž se zobrazuje posloupnost vnořených volání funkcí (například pokud se z funkce „main()“ zavolá „fce()“ a z ní „test()“. uvidíte posloupnost „test, fce, main“). Pro libovolnou funkci na zásobníku lze zobrazit jeji zdrojový kód, místo, odkud byla zavolána, dále její lokální proměnné (takže třeba při rekurzivním volání funkce máte stále přístup k lokálním proměnným na všech úrovních stromu volání funkcí, nikoli jen k poslední instanci). Můžete také nastavit breakpoint (přerušení) na konec zvolené funkce, aniž by bylo nutné jej hledat ve zdrojovém textu.
Vylepšeno bylo také okno s breakpointy (zarážkami, přerušeními), v němž je vidět seznam všech přerušení - ta pak můžete snadno mazat, deaktivovat či zobrazit si tu část kódu, která dané přerušení obsahuje. Bohužel, podmíněná přerušení stále nejsou k dispozici.

Závěr
StormC je produkt, který se snaží nabídnout programátorům na Amize plnohodnotné vývojářské prostředí ve všech směrech. Především uživatelské rozhraní, které umožňuje snadnou práci s tímto prostředím, velmi dobrý debugger s profilerem a podpora kompletní specifikace ANSI C++ 3.0 patří mezi hlavní klady. Nevýhodou pro zdejšího uživatele je však cena (i když Starter Kit ji má podstatně přijatelnější) a pro někoho i nároky na hardware počítače.
Pokud se však bude StormC vyvíjet stejně jako doposud, má před sebou velmi dobrou perspektivu. Pro uživatele, kteří nepožadují přenos jistých speciálních funkcí z jiných kompilátoru je StormC jistě dobrá volba. Ti ostatní si mohou na domovské stránce HAAGE & PARTNER http://ourworld.compuserve.com/homepages/HAAGE_PARTNER nahrát demoverzi, která je sice omezena co do velikostí výsledného programu, ale programy projdou kompilací celé a je tedy možné si ověřit. jak snadný by byl případný přechod na tento kompilátor. A ty, kteří již přišli do styku s verzí 2.0 a mají nějaké problémy, upozorňuji, že na výše zmíněné stránce naleznete také patche z verzí 2.00.02 a 2.00.04 na verzi 2.00.08 (opravy některých chyb v optimalizaci, podpora „ interrupt“, zrychlení vytváření překompilovaných hlaviček apod.)..

StormC

Hodnocení: 8,5 z 10
Autor: Haage&Part.
Cena: DM 598,-
Typ: komerční

+

ANSI C a C++ 3.0, správce projektu, debugger, profiler, podpora GoldEDu

-

nároky na hardware, cena

Vytlačiť článok



Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.

Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing



none

AMIGA REVIEW

57 ( 11-12 / 2000 )
56 ( 9-10 / 2000 )
55 ( 7-8 / 2000 )
54 ( 5-6 / 2000 )
53 ( 3-4 / 2000 )
52 ( 1-2 / 2000 )
 
51 ( 12 / 1999 )
50 ( 11 / 1999 )
49 ( 10 / 1999 )
48 ( 9 / 1999 )
46-47 ( 7-8 / 1999 )
45 ( 6 / 1999 )
44 ( 5 / 1999 )
43 ( 4 / 1999 )
42 ( 3 / 1999 )
41 ( 2 / 1999 )
40 ( 1 / 1999 )
 
39 ( 12 / 1998 )
38 ( 11 / 1998 )
37 ( 10 / 1998 )
36 ( 9 / 1998 )
35 ( x / 1998 )
34 ( x / 1998 )
33 ( 1-2 / 1998 )
 
32 ( 11-12 / 1997 )
31 ( 9-10 / 1997 )
30 ( 7-8 / 1997 )
29 ( 6 / 1997 )
28 ( 5 / 1997 )
27 ( 4 / 1997 )
26 ( 3 / 1997 )
25 ( 2 / 1997 )
24 ( 1 / 1997 )
 
23 ( 12 / 1996 )
22 ( 11 / 1996 )
21 ( 10 / 1996 )
20 ( 9 / 1996 )
18-19 ( 7-8 / 1996 )
17 ( 6 / 1996 )
16 ( 5 / 1996 )
15 ( 4 / 1996 )
14 ( 3 / 1996 )
13 ( 2 / 1996 )
12 ( 1 / 1996 )
 
11 ( 12 / 1995 )
10 ( 11 / 1995 )
9 ( 10 / 1995 )
8 ( 9 / 1995 )
7 ( 7 / 1995 )
6 ( 5 / 1995 )

ATLANTIDA NEWS

5 ( 3 / 1995 )
4 ( 1 / 1995 )
 
3 ( 11 / 1994 )
2 ( 9 / 1994 )
1 ( 7 / 1994 )
0 ( 5 / 1994 )