1 - Amiga Magazine Online

1 - Amiga Magazine Online 1 - Amiga Magazine Online

amigamagazine.info
from amigamagazine.info More from this publisher
01.06.2013 Views

Sistemi per il Yideo Pro#essionale +,.O,, . I c& Ù prodotti Q ~ Q G ~ L ? ~ Q ~ u & + ~ ~ ~ L . )*_) " e b Munchen - Germania * i< *. -. .*i SIRIUS GENL 2 ingressi CC e composito 2 ingressi wdio Chrorna-ke/ a Alpha chonnel Diriovenzo manuale e automa . Controllo monuoe e roftware (Scal . Generatore di barre integrato . Controlli digitali (colore, contrasto, luminositàl . Banda parronte: cornporito 4 MHz, Y~C 5.5 MHr - di montaggio vidw ICIRL~L, Panaronic, RS 232, RS 4221 ' N - % Y-C GENLOCK il bert reller (Ingressi e uscite Y-C e cornporital f 990.000' l di Antonio Piscopo l I LA NOSTRA FLOTTA ... ... IL NOSTRO EQUIPAGGIO I S;ilcs Pri>rnotion: .S'icfi~tiini

Liste di Sistema ... ma non solo Come gestire strutture a lista sfruttando i servizi di Exec Quando si scrive un programma, due sono gli elementi fondamentali dei quali tenere conto fin dalla fase di pro- gettazione, che forniscono gli strumenti per esprimere e per implementare nel linguaggio che abbiamo scelto le idee su cui si basa il programma stesso. Questi due ele- menti sono riassunti nella famosa equazione di Wirth: strutture dati + algoritmi = programmi Le strutture dati descrivono il modo in cui sono organiz- zati i dati sui quali il programma dovrà operare, mentre gli algoritmi specificano quali passi il programma dovrà compiere su quelle strutture per giungere al risultato vo- luto: è quindi evidente che queste due componenti inte- ragiscono fortemente e concorrono a caratterizzare il comportamento globale del programma in termini di oc- cupazione di memoria e di velocità di esecuzione. È ne- cessario saper valutare questi due aspetti quando si vo- gliono confrontare implementazioni diverse delle stesse idee, in modo da poter scegliere I'implementazione che, anche se la migliore in assoluto, offra però caratteristiche che possono farla preferire alle altre. Le liste Tra le strutture dati più diffuse e universalmente cono- sciute annoveriamo i vettori e le liste. Rimandiamo al pa- ragrafo finale di questo articolo l'analisi dei pregi e dei difetti che entrambe presentano; per il momento sottoli- neiamo solo che si tratta di strutture contenitore, cioè at- te a contenere un certo numero di elementi, e che pro- prio questa loro comune funzione permette di metterle a confronto. Possiamo però anticipare i risultati del con- fronto: vedremo che i vettori offrono maggiore efficienza, in quanto ogni elemento è accessibile direttamente me- diante il suo indice, mentre le liste sono di gran lunga più flessibili, perché non richiedono che gli elementi ri- siedano in una zona contigua di memoria, né che il loro numero sia fissato a priori. i linguaggi cosiddetti imperativi, come il C, il C++, il Pa- scal, forniscono direttamente la possibilità di dichiarare una certa variabile come vettore, ma non offrono lo stes- so supporto per le liste, che devono essere costruite dal programmatore ricorrendo a strutture e puntatori. Questo naturalmente non significa che l'impiego di un vettore sia la soluzione migliore in tutti i casi, anzi si potrebbe soste- nere il contrario, esagerando nel verso opposto, e argo- mentare che i linguaggi non imperativi, come il Lisp e il Prolog, usano invece le liste come strutture dati principa- li. I1 linguaggio E rappresenta in questo panorama un'ec- cezione significativa, perché offre un supporto diretto sia per i vettori che per le liste, ma per questo rimandiamo alla serie di articoli su AmigaE. E Amiga? Vediamo allora l'esempio di una applicazione in cui le li- ste sono state scelte, per la loro flessibilità, come struttu- ra dati particolarmente conveniente: il Sistema Operativo di Amiga. Tutti noi sappiamo che la carta vincente delllAmigaDOS, uno dei suoi fiori all'occhiello, è la capacità di configurarsi dinamicamente, tipica di un sistema multitasking. Nel corso di una sessione di lavoro su Amiga ci sono task che vengono lanciati e che terminano, librerie che vengono aperte e chiuse, risorse che sono acquisite e rilasciate, messaggi che vengono inviati e ricevuti. La filosofia che sta dietro tutto ciò è che niente è fissato staticamente (tranne la locazione 0x0004!), ma tutto è in continua evoluzione. Questa visione del mondo si sposa perfettamente con la flessibilità delle strutture a lista, sulle quali è possibile intervenire inserendo ed eliminando elementi che possono risiedere ovunque nella memoria di Amiga. Gran parte della gestione delle risorse fa quindi ricorso a liste, che possono essere semplici, cioè percorribili in un solo verso, o doppie, percorribili in entrambi i versi. Per esempio la lista delle finestre aperte su uno schermo è una lista semplice, mentre tutte le cosiddette liste di siste-

Liste di Sistema ... ma non solo<br />

Come gestire strutture a lista sfruttando i servizi di Exec<br />

Quando si scrive un programma, due sono gli elementi<br />

fondamentali dei quali tenere conto fin dalla fase di pro-<br />

gettazione, che forniscono gli strumenti per esprimere e<br />

per implementare nel linguaggio che abbiamo scelto le<br />

idee su cui si basa il programma stesso. Questi due ele-<br />

menti sono riassunti nella famosa equazione di Wirth:<br />

strutture dati + algoritmi = programmi<br />

Le strutture dati descrivono il modo in cui sono organiz-<br />

zati i dati sui quali il programma dovrà operare, mentre<br />

gli algoritmi specificano quali passi il programma dovrà<br />

compiere su quelle strutture per giungere al risultato vo-<br />

luto: è quindi evidente che queste due componenti inte-<br />

ragiscono fortemente e concorrono a caratterizzare il<br />

comportamento globale del programma in termini di oc-<br />

cupazione di memoria e di velocità di esecuzione. È ne-<br />

cessario saper valutare questi due aspetti quando si vo-<br />

gliono confrontare implementazioni diverse delle stesse<br />

idee, in modo da poter scegliere I'implementazione che,<br />

anche se la migliore in assoluto, offra però caratteristiche<br />

che possono farla preferire alle altre.<br />

Le liste<br />

Tra le strutture dati più diffuse e universalmente cono-<br />

sciute annoveriamo i vettori e le liste. Rimandiamo al pa-<br />

ragrafo finale di questo articolo l'analisi dei pregi e dei<br />

difetti che entrambe presentano; per il momento sottoli-<br />

neiamo solo che si tratta di strutture contenitore, cioè at-<br />

te a contenere un certo numero di elementi, e che pro-<br />

prio questa loro comune funzione permette di metterle a<br />

confronto. Possiamo però anticipare i risultati del con-<br />

fronto: vedremo che i vettori offrono maggiore efficienza,<br />

in quanto ogni elemento è accessibile direttamente me-<br />

diante il suo indice, mentre le liste sono di gran lunga<br />

più flessibili, perché non richiedono che gli elementi ri-<br />

siedano in una zona contigua di memoria, né che il loro<br />

numero sia fissato a priori.<br />

i linguaggi cosiddetti imperativi, come il C, il C++, il Pa-<br />

scal, forniscono direttamente la possibilità di dichiarare<br />

una certa variabile come vettore, ma non offrono lo stes-<br />

so supporto per le liste, che devono essere costruite dal<br />

programmatore ricorrendo a strutture e puntatori. Questo<br />

naturalmente non significa che l'impiego di un vettore sia<br />

la soluzione migliore in tutti i casi, anzi si potrebbe soste-<br />

nere il contrario, esagerando nel verso opposto, e argo-<br />

mentare che i linguaggi non imperativi, come il Lisp e il<br />

Prolog, usano invece le liste come strutture dati principa-<br />

li. I1 linguaggio E rappresenta in questo panorama un'ec-<br />

cezione significativa, perché offre un supporto diretto sia<br />

per i vettori che per le liste, ma per questo rimandiamo<br />

alla serie di articoli su <strong>Amiga</strong>E.<br />

E <strong>Amiga</strong>?<br />

Vediamo allora l'esempio di una applicazione in cui le li-<br />

ste sono state scelte, per la loro flessibilità, come struttu-<br />

ra dati particolarmente conveniente: il Sistema Operativo<br />

di <strong>Amiga</strong>.<br />

Tutti noi sappiamo che la carta vincente delll<strong>Amiga</strong>DOS,<br />

uno dei suoi fiori all'occhiello, è la capacità di configurarsi<br />

dinamicamente, tipica di un sistema multitasking.<br />

Nel corso di una sessione di lavoro su <strong>Amiga</strong> ci sono task<br />

che vengono lanciati e che terminano, librerie che<br />

vengono aperte e chiuse, risorse che sono acquisite e rilasciate,<br />

messaggi che vengono inviati e ricevuti. La filosofia<br />

che sta dietro tutto ciò è che niente è fissato staticamente<br />

(tranne la locazione 0x0004!), ma tutto è in continua<br />

evoluzione. Questa visione del mondo si sposa perfettamente<br />

con la flessibilità delle strutture a lista, sulle<br />

quali è possibile intervenire inserendo ed eliminando elementi<br />

che possono risiedere ovunque nella memoria di<br />

<strong>Amiga</strong>.<br />

Gran parte della gestione delle risorse fa quindi ricorso a<br />

liste, che possono essere semplici, cioè percorribili in un<br />

solo verso, o doppie, percorribili in entrambi i versi. Per<br />

esempio la lista delle finestre aperte su uno schermo è<br />

una lista semplice, mentre tutte le cosiddette liste di siste-

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

Saved successfully!

Ooh no, something went wrong!