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