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

AmigaLife 121 ?

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

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.