Commodore PET 64 Informatica

03-07-2005

Home
Informatica
Musica
Commodore 64
Doom Levels - TheZoo
Appunti di Ingegneria
Elettronica
Pensiero notturno
Links

 

Sommario

Linguaggio C

     - Introduzione

     - Documentazione di riferimento

     - Ambienti di programmazione e compilatori

Linguaggio Assembly x86

     - Introduzione

     - Documentazione di riferimento

     - Ambienti di programmazione

     - UCRWin Library download

Linguaggio C

Introduzione
Il C è un linguaggio di alto livello (HLL - High Level Language) piuttosto versatile. Consente di sviluppare una vasta gamma di applicazioni, da quelle scientifiche a quelle gestionali, database ecc. Meno intuitivo di altri linguaggi di alto livello, come ad esempio il BASIC, il C risulta però essere più flessibile, consentendo operazioni (anche rischiose per la stabilità o la sicurezza del sistema) che altri linguaggi non permetterebbero. Sebbene la portabilità (cioè la possibilità di utilizzare un programma su computer dall'architettura differente) sia un obbiettivo sfuggente, è comunque possibile, con le dovute accortezze, scrivere programmi che possono essere compilati da vari sistemi diversi, grazie all'esistenza dello standard internazionale ANSI-C. Infine bisogna aggiungere che, a differenza del C++, il linguaggio C non è object oriented (orientato agli oggetti).

Documentazione di riferimento
Per quel che riguarda la sintassi del linguaggio, in rete sono disponibili dispense di vari docenti universitari (le quali spesso sono un buon compromesso tra completezza e sintesi) nonché programmi esemplificativi. Tuttavia per chi si avvicina per la prima volta ad un linguaggio di programmazione, questo materiale potrebbe non essere sufficientemente esauriente. In questo caso è possibile fare qualche ricerca nel web con un semplice motore di ricerca quale Google. Da consigliare sono anche i siti www.manuali.it, www.tutorialpc.it e www.mokabyte.it dove è possibile reperire altri testi in formato elettronico su vari linguaggi tra cui C, C++ e Java, anche in lingua italiana. Oltre a questo, in libreria è possibile trovare un gran numero di manuali di linguaggio C, per tutti i livelli.

Ambienti di programmazione (IDE) e compilatori
Mentre gli utenti di sistemi operativi basati su UNIX (Linux, per esempio) dispongono già di tutto quello che occorre per programmare in linguaggio C (visto che basta un editor di testi e un compilatore, che, nel caso di UNIX, è GCC), chi usa Windows (qualunque versione) non dispone di nessuno strumento per sviluppare programmi. Vi sono un paio di ambienti di programmazione adatti ai sistemi Windows con processori x86, che includono anche il compilatore (per trasformare il "listato" del programma in codice eseguibile - quello che in ambiente Windows è il file .EXE) e che, almeno fino a oggi, sono freeware: LCC-Win32 e Dev-C++.
Mentre nel primo caso si tratta di un ambiente adatto solo alla programmazione in C, il Dev consente di compilare anche codice in C++, permettendo quindi al programmatore di iniziare a programmare in C e poi migrare verso il C++ senza dover necessariamente cambiare IDE. Ovviamente entrambi i programmi supportano lo standard ANSI-C, e il Dev supporta anche lo standard C++.
Personalmente ho avuto qualche difficoltà ad utilizzare LCC con Windows XP, in particolare quando tentavo di lavorare sui file. E' possibile (ma non ne sono certo) che il problema si possa verificare anche su sistemi Windows 2000/NT 4, ma non si dovrebbe riscontrare in sistemi Windows 95/98/ME.
A pagamento sono disponibili varie versioni del Borland Turbo C/C++ (sia per DOS che per Windows), e, sempre della Borland, sono disponibili software molto più complessi (e costosi) per la programmazione C/C++ in ambiente Windows, come C++Builder.


L'ambiente di programmazione integrato "Borland Turbo C++ 3.0".


L'ambiente di programmazione integrato "Dev-C++ 4.9.4.1".


L'ambiente di programmazione integrato "LCC-Win32".

Linguaggio Assembly x86

Introduzione
Il linguaggio Assembly è il più basso livello di programmazione di un processore in genere (a parte la programmazione diretta in codice binario, assolutamente improponibile). Le istruzioni in assembly corrispondono esattamente alle istruzioni che il processore può eseguire, ovvero le più elementari (anche se alcune sono meno elementari di quanto si possa credere, specie nel caso dei diffusissimi processori x86, che includono tutti i processori dall'Intel 8088 all'Intel Pentium IV, nonché i processori di AMD, almeno fino all'Athlon). Dunque un grosso svantaggio sta nel fatto che per eseguire operazioni per noi elementari, come ad esempio visualizzare una frase sullo schermo, possono essere necessarie diverse righe di codice assembly, anche se fortunatamente spesso ci si può avvalere di macro per facilitare la programmazione (delle macro si parlerà più avanti, nella sezione Ambienti di programmazione). Altro svantaggio è che un programma scritto in Assembly funziona solo con il tipo processore per cui è progettato (e compatibili) e non è possibile, almeno facilmente, convertirlo per altri sistemi. Per cui un programma scritto in assembly x86, usando magari delle particolari istruzioni presenti dal i80486 in poi, funzionerà, ad esempio, con processori 486, Pentium, Pentium III, ma non funzionerà mai su un Macintosh e neppure su un i80386 poiché in quest'ultimo non sono presenti quelle istruzioni del 486 usate nel codice. Questo problema di portabilità sussiste in misura minore nei linguaggi di alto livello: un programma scritto in C con i giusti criteri, potrà essere compilato sia per sistemi x86 che per MAC, basterà cambiare compilatore. A proposito di compilatori, è bene sapere che un programma in assembly non ha bisogno di essere compilato, proprio in virtù del fatto che le istruzioni corrispondono già a quelle che il processore può eseguire, quindi non resta che convertirle in codice binario utilizzando un programma chiamato macro assembler (o semplicemente assembler).
I vantaggi di una attenta programmazione in assembly sono però notevoli, si ha infatti il controllo totale di tutte le parti del sistema, le dimensioni dei programmi sono inferiori rispetto agli equivalenti scritti in linguaggi di alto livello e compilati, e la loro velocità di esecuzione è maggiore. E' chiaro che una programmazione avventata in assembly può sortire effetti contrari come, ad esempio, instabilità del sistema dovuta ad una errata gestione dello stesso, dimensioni maggiori e inferiori velocità di esecuzione dei programmi per l'uso di algoritmi più complessi del necessario o non ottimizzati per il processore.
Sebbene l'assembly presenti notevoli svantaggi (i quali hanno portato la maggioranza dei programmatori ad abbandonarlo in favore dei linguaggi di alto livello), consente di comprendere la struttura del calcolatore in modo abbastanza approfondito, visto che si vanno a controllare direttamente i circuiti del computer. Anche se non si programmerà mai in assembly, il suo studio risulterà più utile di quanto si pensi.

Documentazione di riferimento
Sull'argomento esistono numerose pubblicazioni in formato elettronico. Il sito internet www.autistici.org/itassembly fornisce già una ottima scelta di manuali, tra cui il testo The Art of Assembly Language (circa 1400 pagine) il quale tratta il linguaggio a tutti i livelli, dal più semplice dei primi capitoli fino all'assembly avanzato degli ultimi; una specie di enciclopedia sull'argomento. Purtroppo la maggior parte del materiale è in lingua inglese.

Ambienti di programmazione
Non è facile trovare ambienti "free", tuttavia è sufficiente utilizzare un qualsiasi editor di testi, anche MS-DOS Editor, eseguibile semplicemente digitando edit al prompt del DOS oppure, in Windows, selezionando il comando Esegui e digitando edit. Oltre all'editor di testi, serve un macro assembler per generare un file eseguibile. Ce ne sono di gratuiti, ad esempio NASM, ma se ne trovano anche a pagamento o in versione di prova, come, ad esempio Microsoft MASM32, Borland TurboASM, e A86.
Per facilitare la programmazione in assembly sono state realizzate delle macro in grado di ridurre drasticamente la quantità di codice da scrivere automatizzando e sintetizzando processi noti e ciclici (ad esempio la visualizzazione di una frase sullo schermo, tanto per riprendere un concetto già citato).
La libreria UCRWin, realizzata da Randall Hyde e altri dell'università della California (Riverside) contiene un insieme di macro simili a quelle dello standard ANSI-C ed è disponibile gratuitamente. E' possibile scaricarla anche da questa pagina vista la difficoltà con la quale l'ho reperita.
Leggere attentamente il file DOC\intro.txt incluso nel file RAR prima di utilizzarla: non sarò responsabile di eventuali danni provocati al vostro computer derivanti dall'uso della libreria UCRWin.

Esistono anche altre librerie; solitamente si tratta di materiale liberamente scaricabile quindi per ottenerlo dovrebbe essere sufficiente una ricerca su internet.

  Scarica UCRWin Library (leggere il file doc\intro.txt prima dell'uso)
 
UCRWIN.RAR: 208 Kb - 50 sec. a 33.600 bit/s

Nota: per scompattare il file UCRWIN.RAR sarà necessario avere il programma WinRAR versione 2.9 o successiva.

Home | Informatica | Musica | Commodore 64 | Doom Levels - TheZoo | Appunti di Ingegneria | Elettronica | Pensiero notturno | Links

Ultimo aggiornamento: 30-05-2005