Parte 1: Introduzione alla programmazione Macintosh
Una delle caratteristiche che ha reso il primo Macintosh cosi' differente dagli altri computer sta' nel fatto che il Mac e' un computer event-driven, controllato per mezzo di eventi.
Nei Macintosh prodotti fino a qualche tempo fa, il MacOs risiedeva
in parte sulla scheda madre, in un modulo ROM (memoria a sola
lettura) ed in parte era caricato al momento della fase di avvio dal
disco di boot. Oggi, i nuovi Mac non possiedo piu' le ROM fisiche, ma
caricano tutto il sistema operativo dal disco di avvio e ha fatto la
sua comparsa un file chiamato proprio ROM, contenuto nella cartella
di sistema (si parla anche di ROM in RAM, in quanto all'occorrenza
parte del file ROM viene caricato in RAM).
Comunque sia, uno dei compiti del sistema operativo, nel nostro caso
proprio il MacOs, e' quello di controllare tutto l'hardware di cui
dispone il nostro computer: mouse, tastiera, disk driver, ma anche
CPU, il microprocessore che controlla l'audio, e cosi' via.
Molti degli eventi vengono generati a livello hardware: quando
premiamo ad esempio il tasto del nostro mouse, lo rilasciamo, oppure
premiamo un tasto della tastiera, o ancora inseriamo un dischetto nel
floppy (per quelli che ancora lo hanno...) viene generato un evento,
che permette al Mac, o meglio al MacOs di rispondere adeguatamente
alle nostre richieste.
In passato, i computer controllavano il verificarsi di un
determinato evento in una particolare situazione: cosi' ad esempio se
veniva digitato un comando, il computer rispondeva eseguendo
determinate operazioni. Il comando spesso doveva seguire rigidamente
una propria sintassi altrimenti non era riconosciuto come corretto, e
doveva essere introdotto al momento giusto.
Il Mac si pone in un approccio completamente opposto: non e' piu il
computer che si occupa di controllare gli eventi, bensi' sono gli
eventi che hanno il pieno controllo del computer.
La parte software comunica costantemente con lo strato hardware, che
genera gli eventi. Questi sono posti in una coda intermedia, e da
questa sono prelevati, nell'ordine con cui sono stati introdotti, dal
software, sia esso il MacOs oppure la nostra applicazione.
Il software non e' a conoscenza di quale evento si verifichera' per
primo, anzi spesso sequenze di eventi diverse possono portare allo
stesso risultato. E' il caso della scelta di una voce da un menu:
possiamo premere una combinazione di tasti oppure utilizzare il
nostro mouse.
Tutte le applicazioni che girano sul nostro Mac hanno una cosa in
comune: l'aspetto, ovvero quel "look and feel" che tutti
conosciamo.
Questo perche' le applicazioni fanno uso delle A.P.I messe a
disposizione dal Macintosh: le Application Programming Interfaces,
anche se in ambiente Mac si preferisce parlare di system software
managers, pacchetti di funzioni racchiuse in quello che si chiama
Macintosh Toolbox.
Sono vere e proprie funzioni ad alto livello (almeno si utilizzano
come tali) che richiamate dal programmatore permettono di sfruttare
l'interfaccia grafica del Macintosh, e non solo. Originariamente, il
linguaggio di sviluppo ufficialmente scelto per il Mac era il Pascal,
e per tale ragione le funzioni dei ToolBox si aspettano come
argomenti dati e strutture di tipo Pascal, cosi' come lo sono i
parametri restituiti.
Questo non significa che il programmatore sia costretto a programmare
in Pascal, e' sufficente un po' di attenzione (bastera' ricordare ad
esempio che una stringa Pascal e' rappresenta in modo differente dal
C. Fortunatamente vi sono gia' pronte numerose funzioni che eseguono
le conversioni del caso).
Possiamo vedere il Macintosh Toolbox come un vero e proprio
contenitore di pacchetti di funzioni (system software routines) che
permettono di interfacciare il nostro programma alle risorse del
nostro Mac. Tipicamente esistera' un pacchetto per ogni tipo di
risorsa.
Per fare un esempio il Toolbox comprende i seguenti "managers" o
pacchetti di funzioni:
Per poter programmare in ambiente Macintosh e' necessario quindi avere una buona conoscenza delle funzioni messe a disposizione del Toolbox.
Altre system software routines non fanno parte del Toolbox ma sono fornite dal sistema operativo, ovvero dal MacOs. Ne sono un esempio:
Altre ancora sono introdotte dalle estensioni al sistema
operativo, l'esempio piu' evidente e' costituito dalle routines messe
a disposizione da QuickTime.
Il Mac sfrutta un altro concetto molto importante, che
fortunatamente puo' rendere piu' semplice il lavoro del
programmatore: nei programmi e' possibile, anzi consigliato,
mantenere separate l'area dati da quella codice.
L'area dati e strutturata in modo regolare, e racchiude quelle che si
chiamano risorse della applicazione. In generale una risorsa e'
costituita da un record consistente, unico e strutturato, e puo' ad
esempio essere usata per descrivere le finestre, i menu, delle
immagini, icone, bottoni, stringhe di teso e molto altro ancora.
A queste vanno a sommarsi le risorse messe a disposizione dal sistema
operativo, quali ad esempio fonts, patterns, ancora le icone di
sistema, ecc...
I vantaggi sono innumerevoli: senza dover ricompilare il sorgente e'
possibile modificare il linguaggio con cui appaiono i messaggi della
nostra applicazione, semplicemnte aprendo la risorsa che contiene le
stringhe di testo e modificandole. Allo stesso modo potremo cambiare
la disposizione dei menu, e cosi' via.
Tipicamente un file Macintosh si compone di due parti:
la Data Fork e la Resource Fork.
La prima generalmente contiene il codice oggetto, la seconda le
risorse, che come detto non sono altro che collezioni di dati
appartenenti ad una particolare e definita struttura.
Esistono programmi che permettono di editare la Resource Fork in
modo immediato e molto semplice. Tra tutti, uno dei piu' diffusi e
sicuramente ResEdit, della stessa Apple, che e' distribuito
gratuitamente :-).
Lo
si trova su numerosi CD, allegati alle principali riviste per
Macintosh, da "Macintosh Magazine and Internet", a "MacFormat
Italia", tanto per citarne alcune (senza la pretesa d'aver citato le
migliori, anzi...).
Il punto di forza di ResEdit sta nella sua semplicita' d'uso. E'
possibile creare ed editare le risorse in modo visuale, con
l'utilizzo del mouse, al punto che creare il proprio menu o le
proprie finestre di dialogo diventa semplice quanto disegnare a video
con un programma di grafica.
Non dovrebbe essere difficile riuscire a reperire ResEdit su qualche
sito http internet. Ad esempio lo potete trovare all'indirizzo:
http://asu.info.apple.com/swupdates.nsf/artnum/n10964
All'indirizzo:
http://developer.apple.com/techpubs/mac/resedit/resedit-2.html
è invece disponibile un'utile libro in formato PDF che riguarda ResEdit.
Se avete difficolta' nello scaricarlo, ricordatevi che sto preparando un CD contenente tutte le risorse freeware e sharewaree inerenti la programmazione Mac. Per maggiorni informazioni I CDROM del programmatore.
|
|