|
AmiVerse
Prime impressioni sull'Amiga SDK
In collaborazione con Quantum Leap
È passato molto tempo prima che qualcosa di interessante riguardante
Amiga fosse stato rilasciato da Amiga Inc. Il primo prodotto veramente
nuovo dedicato ad Amiga è proprio l'Amiga SDK, disponibile per gli sviluppatori
che vogliono avvicinarsi alla rivoluzione in anticipo.
È valso la pena aspettare, e che cosa abbiamo atteso precisamente? Questo
è ciò che affronteremo in questo articolo man mano che esploreremo i
vari strumenti dell'SDK, esaminandone i punti di forza e le caratteristiche.
Il nuovo Amiga SDK è uno sforzo per far fare un passo in più allo
sviluppo multipiattaforma, estendendo molte tecnologie che conosciamo
dalla piattaforma Java di Sun. Amiga Inc. introduce VP, il Processore
Virtuale, ed un formato di bytecode associato che può essere comparato
al bytecode Java di Sun. Comunque, il bytecode VP non è legato a nessun
linguaggio, al contrario del bytecode Java che è legato a Java. Infatti
l'SDK è provvisto di strumenti per compilare i sorgenti Java in bytecode
VP. Mentre il processore virtuale può essere l'obiettivo di ogni linguaggio
concepibile, l'Amiga SDK sta già facendo un buon lavoro per supportare
i linguaggi attualmente più diffusi, come C/C++ e pJava.
Gli strumenti
L'Amiga SDK contiene vari strumenti principali e distribuisce i compilatori
per C/C++ e pJava. I compilatori C e C++ sono stati implementati sulla
base di GCC, il compilatore GNU C (www.gnu.org/software/gcc/); modificando
la parte finale del compilatore in modo da fargli generare codice VP
anziché codice per un processore fisico esistente. Il compilatore GNU
C è distribuito sotto licenza GNU Public License, che stabilisce che
le modifiche apportate al codice devono essere rilasciate con tutto
il sorgente. Il codice sorgente delle modifiche apportate al GCC può
essere scaricato da www.amigadev.net.
L'ambiente di sviluppo pJava è un'insieme di strumenti di sviluppo certificati
da Sun. La versione del pJava distribuito con l'Amiga SDK ha dimostrato
di avere delle prestazioni molto buone in un buon numero di prove distinte.
PJava è l'abbreviazione di Personal Java. Personal Java ha una propria
fonte di informazioni in http://java.sun.com/products/personaljava/.
L'SDK mette a disposizione anche un gran numero di Application Programming
Interface (le API saranno discusse in articoli futuri). Altrettanto
interessante è il fatto che viene distribuito con una API POSIX (Portable
Operatine System Interface), quindi portare applicazioni da UNIX e altri
sistemi operativi compatibili POSIX non dovrebbe essere troppo difficile.
Infatti, guardando il codice immesso da terze parti su www.amigadev.net
di Amiga, si può tranquillamente dire che Amiga NG è già un successo:
oltre 75 programmi sono già stati caricati sul sito e può contare sul
supporto di molti sviluppatori di talento.
L'Ambiente Digitale L'Amiga SDK è venduto come un kit di sviluppo software,
ma contiene anche l'ambiente di esecuzione Amiga per Linux o per Windows.
Questo significa che potrete eseguire le applicazioni Amiga attuali
e future su Linux e Windows, a velocità che sono molto simili al sistema
operativo Amiga della prossima generazione (NG) nativo. Durante questo
studio ho provato l'SDK su sistemi che andavano da un Pentium II 200
MHz ad un AMD K7 750 MHz, e sembra essersi comportato bene su entrambi
i sistemi.
Ricordate, mentre c'è un "Amiga" in via di definizione, la novità del
nuovo Amiga è il fatto che l'Amiga DE gira su un gruppo di piattaforme.
Rilevante è l'ultima descrizione del prodotto di Amiga Inc. in cui si
elenca che i seguenti processori sono già supportati: x86, PowerPC,
Mcore, ARM, StrongARM, MIPS R3000, R4000, R5000, SH3, SH4 e NEC V850.
L'Amiga DE funzionerà anche "ospite" su Linux, Embedded Linux, Windows
95, 98, 2000 NT, CE e QNX4, ciò significa che le chiamate alle API Amiga
vengono passate attraverso il PII (Platform Isolation Interface) alle
funzioni del SO ospitante.
Molte persone stanno chiedendo informazioni sulla compatibilità verso
i sistemi operativi degli Amiga classici, e Amiga Inc lo sta promettendo
tramite emulazione software. Anche se importante, non è ciò che è realmente
eccitante del progetto che è stato scelto per l'Amiga NG. Ciò che è
realmente eccitante è che Amiga Inc. ha già circa 40 piattaforme su
cui far girare il codice VP. Visto lo scopo primario dell'Amiga SDK
di far scrivere codice una volta e renderlo eseguibile su piattaforme
che vanno fino ai telefoni cellulari, è probabile che vi saranno caricatori
per i Palmpilot, Windows CE, console come PlayStation 2, Nintendo Gamecube,
Dreamcast, sistemi Amiga classici (equipaggiati con hardware AmigaOne)
e così via.
Velocità
Queste note sulle problematiche riguardanti la velocità sono basate
su osservazioni della struttura dell'Amiga Digital Environment, e non
dell'implementazione attuale. Sebbene le assunzioni fatte possano essere
vere, i vari casi che saranno esaminati non sono ancora stati implementati
completamente nella versione attuale dell'SDK. Man mano che l'SDK maturerà,
verranno discusse le prove di velocità più accurate e dettagliate.
L'esperienza passata con i formati di bytecode compilato, come Java,
solleva un dubbio: Come saranno le prestazioni del sistema? In che modo
l'architettura e l'implementazione potranno influenzarmi come programmatore
quando sarò in grado di ottenere ciò che voglio dal computer?
Gli ambienti Java attuali eseguono una compilazione di tipo JIT ("Just
in Time" nel momento in cui è richiesta) del bytecode in codice nativo
per velocizzare l'esecuzione, e molti ambienti lo fanno molto bene;
le prove realizzate dimostrato che sono competitivi con il C/C++.
Siccome il codice VP viene convertito in codice nativo dal caricatore
prima dell'esecuzione, questo passo può essere confrontato con quello
JIT di Java. Ma osserveremo anche che il codice VP non viene interpretato
in nessuna circostanza, come può essere il caso di implementazioni Java
arcaiche.
Utilizzare il codice VP come il formato binario da distribuire porta
una serie di vantaggi, non solo per il fatto che permette la portabilità
dei binari. Scegliendo un caricatore che meglio si adatta alla piattaforma
su cui vuoi far girare il codice VP, si ottiene un instantaneo incremento
delle prestazioni, non solo sulle applicazioni che si installano dopo
aver aggiornato il caricatore, ma anche sulle applicazioni già presenti
nel sistema. Pensate ad esempio ad avere un caricatore che fa ottimizzazione
per un AMD 3DNow!: ciò influenzerà i processori di tipo Altivec, e l'ottimizzazione
verrà applicata a tutto il codice VP che sarà eseguito tramite il caricatore
specifico.
Ma non facciamoci prendere troppo la mano dall'entusiasmo. Questo tipo
di ottimizzazioni specifiche per la piattaforma non potranno mai raggiungere
il livello di qualità di un codice altamente ottimizzato per tali piattaforme,
anche se gli vanno vicino. Certamente sarà molto meglio che non rinunciare
a tali risorse, come con i formati binari attuali.
Gestire il codice altamente ottimizzato per piattaforme specifiche è
molto semplice con l'architettura dell'Amiga SDK. Utilizzando un'estensione
sulla parte finale del nome dei file, si da un'indicazione che un file
sia ottimizzato per una certa piattaforma. I file che terminano per
.00 sono codice VP nativo, le altre piattaforme hanno un'estensione
con numeri diversi. Il caricatore saprà in quale piattaforma si trova
e utilizzerà automaticamente parti di codice ottimizzato se ne troverà.
Altrimenti sceglierà il codice VP nativo .00 e farà del suo meglio per
creare il codice.
Il caricamento è un'altra cosa che potrebbe preoccupare le persone,
ma anche qui l'architettura del VP eccelle. Ricordate, la parte più
impegnativa della compilazione è già stata fatta nel momento in cui
il codice VP è stato salvato su disco. Il compilatore si è già occupato
dell'analisi lessicale e semantica, della segmentazione, traslazione,
canonicalizzazione, scelta delle istruzioni ed allocazione dei registri
(anche se sul processore virtuale). Questo creerà sul disco un piccolo
pezzo di codice oggetto trasportabile, che è il codice VP.
Non ho ancora fatto una prova pesante su questo, ma ho convertito uno
degli esempi forniti (l'ordinamento bubble) in ANSI C. Compilandolo
su Linux, viene creato un eseguibile di 12.031 byte. Dopo aver eliminato
i simboli il file era 3.300 byte, una buona dimensione per un programma
di ordinamento bubble di 20 linee. Il file in codice VP, che è l'equivalente
di un'eseguibile Amiga, è 432 byte. Come potete vedere è una riduzione
sostanziale.
Dunque, anche se c'è una perdita di prestazioni della CPU dovendo convertire
le istruzioni da codice VP a codice nativo, il processo complessivo
può risultare più veloce che caricare ed eseguire codice nativo, a causa
della ridotta dimensione dei file binari.
Documentazione
L'Amiga SDK viene distribuito con un (rudimentale) manuale di 300 pagine
che è scritto in modo molto informativo ed estremamente semplice da
leggere. La parte rilevante della documentazione è distribuita nel CD,
dunque se il manuale stampato sembra toccare superficialmente certi
argomenti, questi vengono meglio documentati nel CD. Molta documentazione
presente nel CD è scritta in formato HTML. Altra è in PDF, Portable
Document Format di Adobe, ed è quindi necessario avere l'Adobe Acrobat
Reader per leggerli. L'Acrobat Reader è liberamente scaricabile per
molte piattaforme differenti da www.adobe.com.
Conclusioni
Basandosi su queste osservazioni iniziali dell'SDK sembra chiaro che
l'architettura VP nel suo complesso sia abbastanza abbordabile, stabile
e funzionale. Se ci saranno problemi di prestazioni, non saranno probabilmente
dovuti all'architettura globale del VP. L'SDK rappresenta un nuovo approccio
alla programmazione. Ma mano che crescerà attrarrà l'attenzione sia
dei piccoli sviluppatori "casalinghi", che ne apprezzeranno la semplicità,
sia delle grandi aziende sviluppatrici di software, che riconosceranno
il suo grande potenziale. Essere coinvolto in questo primo stadio del
nuovo Amiga sarà sicuramente di beneficio sia agli amatori sia ai professionisti.
© 1996 - 2000 Amiga Inc
Per gentile concessione di Amiga Inc, detentrice
dei diritti sul testo originale, reperibile in http://www.amiga.com/press/zine/11-1-00/sdk/.
Tradotto da Luca Truffarelli e revisionato da Fabio Ferriccioli per
Quantum Leap.
Revisione e adattamento per Amiga Life di Daniele Franza.
Amiga è un marchio registrato di Amiga Inc.
Torna al sommario
|