StormC 2.0Pavel Číž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
|