ATTIVITÀ : Programmare : Linguaggi : Linguaggio C : Imparare il C a costo ZERO

Referente: Alessandro MENOZZI (parti di Eugenio MORASSI)

Imparare il C a costo ZERO

Non tutti sanno che per programmare in modo hobbistico con il nostro Mac non è indispensabile comprare costosissimi compilatori ed ambienti di programmazione... Quella che trovate di seguito vuole essere una breve guida, per tutti coloro che si affacciano alla programmazione con il Macintosh sotto Mac OS Classic (7.x --> 9.x).

Alessandro MENOZZI

Purtroppo parti di questo articolo di Alessandro non sono più plausibili, ma la pagina resta ancora interessante, se non altro da punto di vista storico; peraltro, se fate un salto nella rinnovata pagina del Mac OS X, scoprirete che oggi è nuovamente possibile (grazie alla casa madre in Cupertino ed il programma sviluppatori ADC - Apple Developer Connection)... imparare a programmare a costo zero sul Mac.

Eugenio MORASSI

Indice

  1. Parte 1: Introduzione alla programmazione per Macintosh
  2. Parte 2: il linguaggio C (e...)
  3. Parte 3: preparatevi a diventare veri "guerrieri del codice"
  4. Bibliografia & Link
  5. Copyright e Licenza
Inizio

Gli eventi

Una delle caratteristiche che ha reso il Macintosh così differente dagli altri computer sta nel fatto che il Mac è un computer event-driven, controllato per mezzo di eventi.

Nei Macintosh prodotti fino a qualche tempo fa, il Mac OS (si chiamava System) 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. Oggi, i nuovi Mac non possiedo più le ROM fisiche, ma caricano tutto il sistema operativo dal disco di avvio e ha dunque fatto la sua comparsa un file chiamato proprio Mac Os ROM, contenuto nella Cartella Sistema (si parla anche di ROM in RAM, in quanto all'avvio il file ROM viene caricato in una zona riservata della RAM).
Comunque sia, uno dei compiti del sistema operativo, nel nostro caso proprio il Mac OS, è quello di controllare tutto l'hardware di cui dispone il nostro computer: mouse, tastiera, disk drive, ma anche CPU, il microprocessore che controlla l'audio, e così via.
Molti degli eventi vengono generati a livello hardware: quando premiamo ad esempio il tasto del nostro mouse, lo rilasciamo, oppure premiamo un tasto sulla 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 Mac OS di capire le nostre richieste. Gli eventi vengono memorizzati in una parte della RAM che si chiama EventQueue che ne contiene in una coda appunto fino a venti. Tutti i programmi per Mac consistono in un EventLoop, cioé di un ciclo che intercetta gli eventi leggendoli proprio da questa coda.

Con questo sistema il software è capace di intercettare solo gli eventi che gli interessano (quelli il cui case of è presente nel proprio EventLoop. Si dice che il software è un listner (ascoltatore) e reagisce solo ai 'suoni' conosciuti. Una conseguenza di questo modo di operare è ad esempio quella che il comando Cmd-C (Mela-C, Copia) viene eseguito dal sistema (dal Finder per l'esattezza) se non c'è alcuna applicazione attiva ovvero allinterno dell'applicazione correntemente utilizzata.

In breve un programma chiede alla EventQueue l'evento più vecchio e controlla se lo ha tra quelli di prorio interesse. Se si cancella l'evento dalla coda ed esegue il codice relativo, se no lascia che a fare questo siano le altre applicazioni aperte; per ultimo, se nessuan applicazione attiva lo ha riconosciuto, lo fa il Finder. Dovreste avere chiaro, ora, che il comando Copia, ad esempio, viene eseguito quasi sempre dal Finder, visto che quasi nessun programmatore si sentirebbe di riscriverlo. Alcune applicazioni (come Photoshop) invece utilizzano il proprio ed intercettano anche questo evento.

Inizio

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 API (Application Programmers Interface) messe a disposizione dal sistema: le API, anche se in ambiente Mac si preferisce parlare di System Software Managers, sono 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, così come lo sono i parametri restituiti.
Dal Mac OS 8 in poi buona parte dei Managers sono stati riscritti nativamente per PPC ed in linguaggio C, e dunque sono mutate anche le loro interfacce; per questo se ne è parlato tanto diffusamente nella pagina del Mac OS 9.
Questo non significa che il programmatore sia costretto a programmare in Pascal, è sufficente un po' di attenzione (bastera' ricordare ad esempio che una stringa Pascal è rappresentata 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 esisterà un pacchetto per ogni tipo di risorsa.
Per fare un esempio il Toolbox comprende, tra gli altri, i seguenti "managers" o pacchetti di funzioni:

  • QuickDraw
  • Window Manager
  • Dialog Manager
  • Control Manager
  • Menu Manager
  • TextEdit
  • Event Manager
  • Resource Manager
  • Sound Manager
  • ...

Per poter programmare in ambiente Macintosh è 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 Mac OS. Ne sono un esempio:

  • Process Manager
  • Memory and Virtual Memory Manager
  • File Manager
  • Device Manager
  • ...

Altre ancora sono introdotte dalle Estensioni al sistema operativo, l'esempio più evidente è costituito dalle routines messe a disposizione da QuickTime.
Le Estensioni sono un mezzo inesauribile per aumentare la capacità operativa dei Mac, ma anche la pricipale fonte di guai e di malfunzionamenti.

Inizio

Il concetto di risorsa

Il Mac sfrutta un altro concetto molto importante, che fortunatamente può rendere più semplice il lavoro del programmatore: nei programmi è necessario mantenere separata l'area dati da quella del codice.
L'area dati è strutturata in modo regolare, e racchiude quelle che si chiamano risorse della applicazione. In generale una risorsa è 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 è 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 così 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.

Inizio

ResEdit

Esistono programmi che permettono di editare la Resource Fork in modo immediato e molto semplice. Tra tutti, uno dei più diffusi è sicuramente ResEdit, della stessa Apple, che è 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 semplicità d'uso. È 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:ASU n.10964
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 difficoltà nello scaricarlo, ricordatevi che stiamo preparando un CD contenente tutte le risorse freeware e sharewaree inerenti  la programmazione Mac. Per maggiorni informazioni leggete il Paragrafo 3.3.

Inizio

Scopriamo il C

A parere di molte persone, l'utente medio Macintosh non è interessato alla programmazione. è parere degli stessi Apple Center, almeno di quelli che ho interpellato per richiedere informazioni su quali compilatori fossero disponibili per la nostra macchina. Alla domanda "vorrei un compilatore C" mi hanno passato di ufficio in ufficio, rimbalzandomi da una persona all'altra, per carita' tutte molto gentili, ma altrettanto ignoranti in materia. Alla fine la risposta è stato un timido: "credo che il C sia un linguaggio di programmazione per PC che si usava qualche anno fa.".
D'accordo che siamo lontani dai tempi del magico Aplle II, con tanto di linguaggio AppleSoft BASIC in ROM, pero'... Oggi qualcosa sta iniziando a cambiare, anche grazie all'introduzione dell'iMac che ha contribuito a diffondere il Macintosh anche al di fuori dell'ambito ristretto del settore grafico professionale, in cui il Mac è molto diffuso. Non crediate pero' che sia semplicissimo reperire informazioni utili riguardo alla programmazione con il Mac. Tutto questo lo dico non tanto per scoraggiarvi, quanto per mettervi subito in guardia: se volete programmare con il vostro Mac dovrete dari da fare per recuperare cio' di cui avrete bisogno, a partire dagli strumenti necessari: i compilatori.
Fortunatamente Internet ci viene in contro.
Non crediate che procurarsi un compilatore debba essere necessariamente dispendioso: in rete è possibile trovare moltissime risorse a poco prezzo, in alcuni casi senza spendere assolutamente nulla. La conoscenza del C è quasi obbligatoria: la maggior parte delle applicazioni oggi e scritta in C.
È anche vero comunque che oggi in commercio esistono strumenti che permettono di programmare secondo un principio molto più intuitivo ed immediato, ovvero i cosidetti ambienti di sviluppo visuali. Questi sono disponibili anche per l'ambiente Macintosh, per il quale troviamo pacchetti come "Vip-C", "Vip-BASIC", oppure l'ottimo "RealBASIC".
In ogni caso una volta che si è appreso il linguaggio C diventa molto più semplice produrre codice multipiattaforma, che con qualche modifica possa essere portato su diverse piattaforme. In questo CodeWarrior è maestro.

Inizio

CodeWarrior

Per progetti di un certo livello la conoscenza del C diviene praticamente indispensabile. L'ambiente C per eccellenza per la programmazione Mac è decisamente CodeWarrior della Metrowerks. Si tratta di un ambiente completo, che permette di realizzare codice eseguibile per Mac OS, ed addirittura per Windows, Linux ed altri sistemi operativi ancora (si avete capito bene. Potrete realizzare applicazioni Windows 95/98/NT che gireranno su piattaforma Intel con il vostro Mac) ottimizzato per x86, AMD, PowerPC o 68k. Il pacchetto comprende i compilatori C, C++, Object C, Java e Pascal, ed i linguaggi possono essere utilizzati tutti assieme grazie all'IDE (ambiente di sviluppo interno) integrato.
Unico neo, per un appassionato, il prezzo un po' alto. Esiste comunque la possibilita' di acquistare la versione Accademic, riservata a studenti ad un prezzo veramente competitivo.
Inoltre in rete si trovava la versione Lite, ora non più disponibile, che permetteva di compilare, modificare e realizzare applicazioni per Mac di progetti esistenti.
Ciò, non toglie che riusciate a venirne in possesso da CD-Rom allegati a riviste o da collezioni vecchie di Freeware. Sorgerà una domanda in voi: perché non ce lo dave voi?
Beh, l'intenzione c'è, ma attendiame che Metrowerks ci risponda ufficialmente in merito alla possibilità di ridistribuire il pacchetto come UserGroup. Comunque...
È sufficente procursi CodeWarrior in una delle sue incarnazioni, una manciata si esempi e con una spesa nulla possiamo gia' iniziare a realizzare qualche applicazione. Al sito della rivista MacTech troviamo una serie nutrita di esempi che possiamo modificare a piacimento, salvare e ricompilare con la versione lite di CodeWarrior.

Lo so cosa state pensando. È necessario procurarsi anche un buon libro, ed avete proprio ragione.
Non disperate pero', almeno se avete un minimo di conoscenza della lingua inglese. Beh, se la vostra conoscenza di base del C ha qualche lacuna vi consiglio il libro di Dave Mark "Learn C on the Macintosh", 2nd Edition, edito dalla AW (prezzo circa 34$, che lievitano a circa 100.000 lire nelle librerie italiane). Si tratta di un libro che vuole insegnare la programmazione in standard C ed è indirizzato a chi si trova alle prime armi, che NON tratta neppure di striscio la programmazione in ambiente Mac. Ha l'unico pregio di essere venduto con allegato un CD contenente proprio CodeWarrior Lite, ma puo' essere sostituito da un qualsiasi altro libro sul linguaggio C ansi, magari in italiano.
Se pero' masticate gia' qualcosa di C, allora il consiglio è di orientarsi su qualcosa di più impegnativo, che si addentri piu' nell'ambiente Macintosh, in modo da permette di sfruttare il supporto dei Macintosh Toolbox. Ad esempio "Programming Starter Kit for Macintosh" di Jim Trudeau, edito dalla Hayden Books (45$, l'ho comprato in Italia a circa 130.000), viene indicato come la soluzione completa, "The Complete Solution", contiene il solito CD con CodeWarrior Lite, e vi accompagna passo passo nella realizzazione di una vera applicazione Mac. Nelle oltre 800 pagine di cui e composto trova spazio anche un'appendice con una introduzione al linguaggio C, molto utile anche come riferimento veloce. Tutto sommato pero', a mio parere il migliore manuale di riferimento per il programmatore Mac a livello non professionale, e "MACINTOSH C - A Hobbyist's Guide to Programming the Mac OS in C" e, udite udite, è completamente gratuito!
Lo trovate anche questo a partire dal sito della rivistaMacTech, piu' precisamente nella sezione dedicata alla programmazione C http://www.mactech.com/macintosh-c/
L'ultima versione disponibile riporta indicazioni utili a chi voglia realizzare applicazioni per Mac OS 8, ed è (al momento) la numero 2.2.
Si compone di oltre 900 pagine ed è consultabile on line, oppure può essere scaricata gratuitamente nei formati PDF (richiede Acrobat Reader 3 o succ.) e Word (richiede Word98).

Non solo, chi preferisce il Pascal puo' trovare l'attrettanto indispensabile all'indirizzo Macintosh Pascal/. Sempre nei tre formati HTML, PDF e Word.

Inizio

MPW (Macintosh Porgrammer’s Workshop)

Un'altra occasione per programmare senza spendere una lira, è quella offerta dalla Apple, che ha da poco rilasciato gratuitamente una suite che permette di programmare in C su Macintosh. Il pacchetto si chiama MPW (Macintosh Programmer's Workshop) e si tratta di un prodotto completo, con supporto per C, C++ e Assembler per realizzare applicazioni Mac e PowerMac. Inoltre è estremamente configurabile ed espandibile. Utilizarlo pero' non è così semplice, e viste le dimensioni in MByte è quasi improponibile scaricarlo da internet. Speriamo che qualche rivista decida di inserirlo in uno dei tanti CD allegati, spesso pieni zeppi delle solite inutili applicazioni.

Inizio

e... (Java dove lo mettiamo?)

Non dobbiamo dimenticare che un modo gratuito per incominciare a programmare con il nostro Mac e quello di procurarsi un JDK (Java Development Kit), solitamente completamente gratuito, che permette di realizzare le proprie applicazioni Java.
Apple mette a disposizione gratuitamente il proprio SDK, SoftWare Development Kit, e il Mac OS Runtime for Java (MRJ) per poter eseguire le applicazioni Java. Purtroppo ancor oggi (agosto 2000) è disponibile solo la versione compatibile con la versione 1.1.8 del JDK ufficiale della Sun. Nessun supporto per il JDK 1.2 e versioni superiori, ovvero niente da fare per applicazioni scritte in Java 2.
Java puo' essere considerato come un linguaggio di programmazione a meta' tra il C ed il C++, che cerca di unire la semplicita' e versatilità del C con la potenza propria di un linguaggio orientato ad oggetti quale il C++, sollevando il programmatore da molti grattacapi.
Va ricordato che Java nasce come un linguaggio che permette di creare applicazioni totalmente svincolate dall'hardware e dalla piattaforma su cui sono implementate. Il vantaggio principale di tale filosofia risiede nel poter eseguire la propria applicazione Java su qualsiasi macchina, purchè dotata di un'opportuna Java Virtual Machine; il rovescio della medaglia sta nell'impossibilita' di sfruttare a fondo le risorse messe a disposizione dalla piattaforma su cui si sta' sviluppando, con il risultato in diretta conseguenza di applicazioni meno performanti (in Java non esiste alcun riferimento diretto a A.P.I - Application Programming Interfaces - proprie di alcun sistema operativo).
Un qualsisi libro sull'argomento puo' essere un buon punto di partenza: solitamente includono un CDROM contenente il JDK per Windows e per Macintosh.
In rete è d'obbligo dare uno sguardo al sito ufficale creato appositamente da chi ha introdotto Java: Sun http://java.sun.com
Unica nota decisamente negativa:
il rilasio delle ultime versioni di Java per Mac OS avviene spesso in ritardo rispetto a quelle per Windows e Linux :-(

Inizio

Finalmente si inizia!

Ecco quindi riassunto tutto cio' che vi serve:

  • Procuratevi ResEdit;
  • procuratevi CodeWarrior (magari Lite...);
  • scaricate "MACINTOSH C - A Hobbyist's Guide to Programming the Mac OS in C"...
  • ...dallo stesso sito scaricate i progetti degli esempi presentati nelle pagine della guida;

Sarete così pronti per realizzare le prime vostre applicazioni per Mac, senza aver speso assolutamente nulla!!

Inizio

Il primo programma in C: Hello World!

Iniziamo... Ho preparato un progetto pronto per essere compilato con CodeWarrior Lite (adatto alla versione IDE 3.0).
Per una volta concedeteci una divagazione dal "think different" e... indovinate cosa fa? Apre una console e saluta.
Di seguito trovate i links per scaricare il solo sorgente oppure il progetto completo di eseguibile (in versione 68k) già compilato:

Sono in un archivio compresso; per decomprimerli potete utilizzare Stufflt Expander (gratis :-). Compilare HelloWorld Procuratevi il sorgente, decompattatelo e cliccate sul file di progetto HelloWorld.prj.
Se lo avete installato correttamente (non vedo come avreste potuto non :-), si aprirà CodeWarrior Lite, presentandovi la finestra che segue:

HelloWorld.prj

HelloWorld.prj

A questo punto potete aprire il sorgente con l'editor di CodeWarrior, nel nostro caso il file HelloWorld.c, semplicemente cliccandovi sopra due volte. Per compilarlo ed allo stesso tempo eseguirlo è necessario selezionare Run dal menu Project

...per eseguire HelloWorld

L'esecuzione di HelloWorld può avvenire direttamente dall'IDE di CodeWarrior

L'output L'esecuzione si presenta come segue

L'output di HelloWorld

L'output di HelloWorld

Nota: potete modificare il sorgente a piacere, salvarlo e ricompilarlo. Purtroppo la versione Lite di CodeWarrir non vi permette di creare nuovi progetti.

Inizio

I CD-Rom del programmatore

Stiamo cercando di preparare un paio di CD contenenti tutte le risorse inerenti alla programmazione Mac. Si DEVE trattare di materiale freeware, eventualmente shareware, E DEL QUALE SIA COMUNQUE LEGALE FARE UNA COPIA. Avremmo il piacere di scambiare materiale o link sulla programmazione Mac con tutti quanti si interessano dell'argomento, per rendere sempre più completa la raccolta di risorse. Potete contattarci attraverso la form di Feedback.

Inizio

Bibliografia & Link

Inizio

Home | Programmare | Utilizzare | Aiutarsi | Regalare | Software | Dizionario
Eventi | Roma | Vantaggi | Oggetti | Informazioni | Novità | Link | Mappa


Copyright © Roam - Conoscere Possibile.
Il sito è Documentazione Libera sotto FDL 1.2 o successiva.
La copia letterale e la distribuzione del materiale qui raccolto nella sua integrità sono permesse con qualsiasi mezzo, a condizione che questa nota sia riprodotta (se non diversamente indicato).
[J] Informazioni Legali