Pagina principale faq Amiga Life a Pianeta Amiga La redazione
Galleria Indice generale
Enigma Amiga Life

AmigaLife 121 ?

StormC 4.0
di Gabriele Santilli

Il famoso ambiente di sviluppo commerciale C/C++ per Amiga è ormai giunto alla sua quarta versione. Potevamo noi di EAL mancare di recensirlo?

Contenuto della confezione

La scatola azzurra dello StormC contiene un CD e la cartolina di registrazione. Non ci sono manuali cartacei, ma la cosa ormai non stupisce più nessuno; ciò che invece può far storcere il naso una volta installato il prodotto è lo scoprire che la documentazione, in formato AmigaGuide, è presente solo in lingua tedesca: cosa che si presenta subito come una mancanza gravissima per un prodotto che si presenta come l'ambiente di sviluppo "per il futuro dell'Amiga".
Ma procediamo con ordine. I requisiti di sistema sono: un Amiga con 68020 o superiore, AmigaOS 3.0 o successivo, 8 MB di RAM e un hard disk con una settantina di megabyte liberi. Inserito il CD nel lettore ne visualizziamo il contenuto: oltre all'ambiente di sviluppo StormC sono presenti il compilatore GCC (GNU C Compiler) e il sistema di controllo delle revisioni CVS, completi di sorgenti, il GUI builder StormWizard, lo StormServer (che permette di distribuire la compilazione di un progetto di grandi dimensioni attraverso più Amiga connessi in rete), il convertitore PPC680x0 (che permette di "tradurre" - più o meno automaticamente - un sorgente assembler 68k in uno PowerPC) e, nel cassetto Contributions, l'assembler PhxAss, il tool FD2Pragma e vari kit di sviluppo, tra cui quelli di WarpOS e Warp3D.
Lo script di installazione permette di installare lo StormC, lo StormServer oppure lo StormWizard. L'installazione dello StormC richiede un po' di tempo, soprattutto se non si possiede un Amiga particolarmente veloce, ma non presenta alcuna difficoltà.

Lo StormC

L'ambiente di sviluppo comprende l'editor StormEd, un debugger a livello di sorgente, un profiler, e la StormShell, che racchiude il nostro programma durante la fase di test, in modo da evitare crash del sistema. Quest'ultimo è in grado di rilevare anche la mancata deallocazione della memoria e altri problemi simili, facendo le funzioni di resource tracker.
Al lancio appare una toolbar tramite la quale è possibile creare o aprire un file di testo oppure creare o aprire un progetto; essa contiene anche i bottoni per il salvataggio e per compilare, eseguire o fare il debug di un progetto. Creando un nuovo progetto, si apre la finestra del New Project Assistent, nella quale è possibile scegliere se usare il CVS, il percorso base per i file, il nome del progetto e il suo tipo (programma C, programma C++, libreria condivisa, libreria statica), e infine se generare un eseguibile per 68k, uno per PPC o un mixed binary.
Cliccando su "Ok" si apre la finestra del progetto, con tutti i suoi componenti; tramite questa è possibile gestire anche progetti molto complessi in maniera gerarchica. L'editor di testi StormEd offre l'evidenziazione della sintassi tramite colorazione del testo e una utilissima linea di aiuto in cui appare il prototipo di una qualsiasi funzione di sistema (insieme all'include in cui è definita) non appena se ne digita il nome, oppure l'include che la definisce nel caso in cui si digiti il nome di una struttura o di una costante. Si tratta di una di quelle funzioni alle quali non si può più rinunciare, una volta che ci si è abituati ad usarla!
Per il resto, StormEd ha tutte le caratteristiche di un buon editor per programmatori, con indentazione automatica del codice, eccetera; tuttavia, se si preferisce è possibile usare al suo posto GoldEd, che si integra perfettamente con l'ambiente Storm, o qualsiasi altro editor.
Durante la programmazione, specialmente se si lavora in gruppo, è utilissimo il tool StormDOC, che permette di gestire todo, bug e documentazione, integrando potenti funzionalità di catalogazione e ricerca.
La compilazione dei sorgenti è normalmente affidata al GCC, sia che si compili per 68k che per PPC. È possibile anche scegliere di usare il compilatore StormC 3, se ce n'è necessità. E qui mi aspetto che siate almeno un po' stupiti: ebbene sì, non esiste una versione 4 del compilatore Storm; lo "StormC 4" è semplicemente un ambiente di sviluppo costruito intorno al GCC (in particolare una versione modificata di quest'ultimo, in grado di generare hunk AmigaOS anche per il codice PPC). Tutto sommato, questo garantisce una elevata affidabilità del compilatore e un'ottima qualità del codice generato; manca tuttavia il classico front-end a linea di comando, e non si capisce il motivo di questa scelta.
Una volta compilato il proprio progetto, è possibile passare alla fase di test. Come abbiamo già anticipato, l'esecuzione è protetta dalla StormShell, che ci risparmia le noie dei "guru" e tiene traccia di tutte le risorse allocate; il debugger può essere attivato in qualsiasi momento, tuttavia il suo funzionamento non mi è sembrato particolarmente intuitivo, e i manuali in tedesco non aiutano (almeno il sottoscritto, per il quale tale lingua non si distingue dall'arabo). Conclusione: non sono riuscito ad usarlo; spero che voi abbiate più fortuna. In ogni caso, esso permetterebbe di eseguire il programma passo passo, visualizzandone le variabili, i registri, il codice disassemblato, ecc.

Lo StormWizard

Il gui builder StormWizard si presenta come un'applicazione molto interessante. L'approccio scelto da Haage&Partner si distingue dal solito, in quanto il tool non genera codice C, bensì un file IFF che contiene le informazioni necessarie alla wizard.library per generare e gestire l'interfaccia utente. Il programmatore non deve quindi far altro che lasciare la gestione dell'interfaccia a questa libreria fornendogli il file generato da StormWizard; è automatica anche la localizzazione dell'interfaccia, e viene generato anche il descrittore del catalogo.
Gli elementi fondamentali di una GUI StormWizard sono le finestre. La prima pagina del tool è atta proprio alla creazione e gestione di queste ultime. È possibile aprire immediatamente la finestra che si sta creando e modificarne al volo gli attributi.
Una volta creata una finestra, è possibile aggiungervi dei gadget tramite la pagina apposita. Essi sono gestiti ad albero, come è ormai comune su Amiga, con gruppi verticali o orizzontali che possono contenere gadget o altri gruppi; le interfacce risultanti sono scalabili e indipendenti dal font e dalla lingua utilizzata. Sono presenti un buon numero di gadget diversi, e dovrebbe essere possibile aggiungerne di nuovi tramite BOOPSI (si tratta di una mia supposizione, di documentazione neanche l'ombra...). È anche possibile impostare le notifiche tra i vari gadget con pochi clic del mouse.
Un'altra pagina permette la creazione dei menù. Anche qui il tutto è gestito con una struttura ad albero, tuttavia il modo di inserire elementi in un menù o di creare sottomenu mi è apparso un po' controintuitivo: è necessario prima aggiungere un nuovo elemento cliccando sul pulsante "Add", e quindi renderlo "figlio" dell'elemento precedente cliccando sul pulsante "Move Up". Fate attenzione a non superare i tre livelli, però: anche se non viene segnalato alcun errore, ci pensa il guru a ricordarvi che avete sbagliato.
Le altre pagine permettono la definizione dei pannelli di richiesta (o requester per chi preferisce l'inglese), dei font e delle immagini da utilizzare, e delle librerie necessarie all'applicazione; tramite quest'ultima pagina è infatti possibile far sì che sia la wizard.library ad aprirle per voi.
In conclusione, non si può negare che questo tutto sommato semplice programma riduca notevolmente il tempo di sviluppo delle interfacce grafiche; le mie critiche riguardano ancora una volta la documentazione: in questo caso, infatti, essa è assente del tutto, cosicché non si salva neanche chi conosce il tedesco. La cosa non sarebbe grave per il programma in sé, ma mi chiedo come si pretenda che gli utenti usino la wizard.library senza avere nemmeno gli autodoc...

Conclusioni

In sintesi, lo StormC si presenta come un ambiente di sviluppo integrato molto potente, almeno relativamente al mercato Amiga. La scelta di abbandonare il compilatore Storm a favore del GCC non può essere criticata; l'unico elemento a sfavore di quest'ultimo è infatti la sua pesantezza. Interessante l'idea dello StormServer, come l'utile (anche se a mio avviso immaturo) StormWizard. Quello che sconcerta è che la developer suite considerata di riferimento su Amiga sia documentata esclusivamente in lingua tedesca, cosa che ne limiterà probabilmente le vendite al di fuori della Germania; non mi sembra facile, infatti, valutare lo StormC un buon investimento per chi non conosce questa lingua, per quanto il suo utilizzo sia sufficientemente intuitivo.

Dal C al C++
Quando fu inventato il linguaggio C, le mode e le tecnologie informatiche erano notevolmente diverse da quelle attuali. I cosiddetti "cervelli elettronici" occupavano intere stanze e nel caso migliore servivano diversi utenti connessi tramite terminali costituiti da rumorose telescriventi. Le esigenze (e anche la mentalità) dei programmatori di allora erano molto diverse da quelle attuali, e i linguaggi "di alto livello" come il C cominciavano appena ad affacciarsi al mondo.
Col passare del tempo, le mode e gli scenari sono cambiati. Agli inizi degli anni Ottanta un ricercatore della AT&T, tale Bjarne Stroustroup, che si occupava di compilatori e dell'allora appena nata "Object Oriented Programming", iniziò a progettare delle estensioni al più famoso ed usato linguaggio di programmazione. Stroustroup si impose di realizzare un linguaggio che fosse compatibile con il C, ma che aggiungesse ad esso nuove funzionalità e ne generalizzasse alcuni aspetti. In particolare, il C++ (il nome deriva dall'operatore di incremento del C, ++ appunto: si tratta di un "C incrementato") avrebbe dovuto supportare il paradigma di programmazione orientato agli oggetti basato sulle classi, senza tuttavia aggiungere il costo in termini di prestazioni che un ambiente di supporto run-time avrebbe richiesto. In sostanza, il C++ è sì un linguaggio OO, ma è quasi totalmente "statico", ovvero, per fare un esempio, l'invocazione di un metodo di un oggetto viene risolto in un "salto a subroutine" al momento della compilazione, e non al momento dell'esecuzione del programma.
Per questo motivo il C++ ha una tipizzazione ancora più stringente del C, e viene fortemente scoraggiato il type-casting selvaggio che è usuale in questo linguaggio. Altre novità introdotte nel C++ e permesse proprio dallo strict typing delle espressioni sono la possibilità di "sovraccaricare" operatori e funzioni (e quindi metodi) di diversi significati in base al tipo dei loro parametri e la possibilità di scrivere codice generico (in grado cioè di funzionare con diversi tipi di dato); anche in questo caso comunque il codice viene risolto nel momento della compilazione. Inoltre il C++ offre la possibilità di definire dei "namespace" distinti per i vari moduli di un programma, in modo da evitare problemi dovuti al conflitto di nomi.
Tutte queste estensioni hanno però fatto del C++ un linguaggio piuttosto complesso; tuttavia, un compilatore C++ è in grado di compilare anche del semplice codice C, e questo fa sì che molti programmatori non siano nemmeno consapevoli della differenza esistente tra i due linguaggi e tendano a sottoutilizzare (o a utilizzare in modo sbagliato) le funzionalità offerte dal C++.

Scheda prodotto
StormC 4.0
Produttore: Haage & Partner - http://www.haage-partner.com
Disponibile presso: Tutti i rivenditori italiani Amiga
Prezzo: 498 marchi tedeschi (prezzo consigliato)

Torna al sommario

Copyright (C) 1999-2002, la redazione di AmigaLife.
Il logo e le copertine della rivista sono tratti dal sito Pluricom e sono Copyright (C) 1992-2001 Pluricom S.r.l.