08.11.2012 Views

dettagli - Amiga Magazine

dettagli - Amiga Magazine

dettagli - Amiga Magazine

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

viare comandi oppure di riceverli (consentendo così un<br />

controllo esterno sulle GUI generate). Esiste anche un certo<br />

numero di framework specifici per ARexx, che si integrano<br />

completamente nel linguaggio estendendolo con comandi<br />

e costrutti specifici per la creazione di GUI.<br />

I1 primo che esaminiamo è MUiRexx che, come il nome<br />

lascia immaginare, consente di usare la MUI di Stefan<br />

Stuntz all'interno di script ARexx. MUIRexx fornisce un<br />

command host per ARexx che implementa alcune decine<br />

di comandi, in gran parte equivalenti alle macro predefinite<br />

di MUI per il linguaggio C. Questi comandi permettono di<br />

definire finestre, gruppi, oggetti MUI e gadget BOOPSI con<br />

relativa facilità; purtroppo il livello di astrazione non è mol-<br />

to alto (è praticamente lo stesso della programmazione di<br />

MUI in C), e ciò richiede che il programmatore ARexx si<br />

destreggi fra puntatori, metodi, attributi e taglist che non<br />

sono particolarmente ben supportate dal linguaggio. I1 van-<br />

taggio dell'approccio a basso livello è, come sempre acca-<br />

de, la maggiore flessibilità che se ne ottiene; di contro, non<br />

è difficile mandare in crash l'intera macchina per un solo<br />

errore di battuta. L'accesso alle caratteristiche di MUi è qua-<br />

si completo, ma resta preclusa la possibilità di creare classi<br />

custom (che, da MUI 3.0 in poi, sono lo strumento principe<br />

della programmazione con MUI). I1 pacchetto viene fornito<br />

con abbondante documentazione e, nel rispetto della tradi-<br />

zione, con alcuni script dimostrativi fra cui una directory<br />

utility e un notevole costruttore interattivo di interfacce.<br />

L'implementazione di MUIRexx come comrnand host con-<br />

sente di adottare una sintassi basata su comandi, di cui il<br />

lettori possono avere un assaggio nel listato 3 (che imple-<br />

menta un file requester tutt'altro che completo), sintassi<br />

che, pur raggiungendo il suo scopo, non è particolarmente<br />

elegante (per esempio, le taglist vengono espresse in forma<br />

numerica.. .).<br />

/* Un semplice file requester */<br />

options results<br />

address FREQ<br />

window TITLE '"Scegli un file"' COMMAND 'quit' PORT FREQ<br />

group<br />

dirlist ID DLIST PATH '"SYS:"' PORT FREQ,<br />

COMMAND '"string ID FILE CONTENT %s"'<br />

group HORIZ<br />

label 'File'<br />

string ID FILE CONTENT "<br />

endgroup<br />

group HORIZ<br />

button ID BTN1 PORT FREQ COMMAND 'quit' LABEL 'Ok'<br />

button ID BTN2 PORT FREQ COMMAND 'quit' LABEL 'Annulla'<br />

endgroup<br />

endgroup<br />

endwindow<br />

exit<br />

Listato 3 - Un file requester in MLNRexx.<br />

Agli antipodi di MUIRexx troviamo un altro pacchetto, Tri-<br />

tonitexx, che ovviamente consente di interfacciare gli<br />

script ARexx con la Triton.library di cui abbiamo parlato<br />

nelle precedenti puntate. TritonRexx è implementato come<br />

function host, e quindi la sintassi per accedere alle GUI è<br />

basata su chiamate di funzioni (corrispondenti a quelle na-<br />

tive della Triton.libras.1 e su variabili stem equivalenti alle<br />

strutture necessarie; le taglist vengono gestite attraverso va-<br />

riabili stem con indice numerico, praticamente degli array.<br />

Anche in questo caso, il livello di astrazione è estremamen-<br />

te basso (anche più che nel caso precedente), lo stesso che<br />

si avrebbe programmando l'applicazione in C: si perdono<br />

dunque molti dei vantaggi derivanti dall'uso del REXX, e i<br />

sorgenti si allungano oltre misura. Particolarmente spiace-<br />

vole è la necessità di costruire manualmente persino il ciclo<br />

di ricezione dei messaggi (in ARexx!) ... Quali che siano i<br />

meriti di questo ambiente (?l, ci sentiamo di sconsigliarne<br />

l'uso ai programmatori meno poliglotti, poiché attualmente<br />

l'unica documentazione disponibile è completamente in<br />

lingua tedesca.<br />

Non tutti i framework per ARexx si appoggiano a librerie<br />

esterne come MUI o Triton: esistono anche ambienti "nati-<br />

vi", in genere maggiormente integrati con il linguaggio.<br />

Uno dei migliori è ZedRexx, un pacchetto che vanta un<br />

padre illustre: l'autore è infatti David Jlinod, noto ingegnere<br />

della vecchia Commodore che ha all'attivo, fra l'altro,<br />

1'Arniga User Interface Style Guide, diversi datatype, buona<br />

parte di GadTools e che, prima degli incresciosi ameni-<br />

menti che hanno posto fine all'esistenza di Commodore,<br />

aveva iniziato il lavoro sulla nuova versione di Intuition.<br />

ZedRexx (che è un comrnand host, come MUIRexx) rende<br />

disponibile un insieme di comandi molto ricco, che spazia<br />

dalla definizione "in linea" di immagini (tramite stringhe<br />

esadecimali) alla descrizione logica della GUI; dalla<br />

gestione di Commodities alla definizione delle azio-<br />

ni (sotto forma di subroutine ARexx) da eseguire in<br />

risposta agli eventi relativi alla GUI. L'espressività<br />

del linguaggio di ZedRexx è molto buona e il livel-<br />

lo di astrazione decisamente elevato (non è mai ne-<br />

cessario "abbassarsi" a gestire puntatori, taglist e si-<br />

mili): si tratta evidentemente di un pacchetto pro-<br />

gettato con cura e realizzato da professionisti. Pur-<br />

troppo, il maggiore punto di forza di ZedRexx (l'in-<br />

tegrazione di un proprio motore di GUI) è anche<br />

un ostacolo alla sua evoluzione: la versione 1.0 ri-<br />

sale infatti al 1994, e non ci risulta che ne siano sta-<br />

te rilasciate altre da allora. Sebbene l'implementa-<br />

zione del motore delle GUI fosse notevole per<br />

l'epoca, e tuttora attuale, il futuro di questo pac-<br />

chetto (che è un prodotto commerciale, anche se a<br />

prezzi da Shareware) non sembra assicurato.<br />

Più antica di ZedRexx è la rexxarpiib.library,<br />

probabilmente la prima soluzione disponibile (in<br />

ordine cronologico) per dare un'interfaccia grafica

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!