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.