Parte 1: Introduzione alla programmazione Macintosh

1.1 Gli eventi

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.
 

1.2 Il Macintosh ToolBox

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.
 

1.3 Il concetto di risorsa

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.
 
 

1.4 ResEdit

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.


Torna all'indice

Parte 2