Dopo aver dato uno sguardo allinterno dei sistemi operativi,
vediamo adesso alcune cose notevolmente interessanti per chi sviluppa
software.
Probabilmente si tratta di cose già note, ma val la pena di parlarne
anche solo per rinfrescarci la memoria :-).
Allinizio del corso abbiamo appreso che un SO astrae dallhardware
fornendo allutente, sia esso semplice utilizzatore o programmatore,
uninterfaccia semplice per interagire con il calcolatore e
un ambiente di esecuzione dei programmi indipendente dalle caratteristiche
di basso livello della macchina.
Inizialmente gli elaboratori digitali venivano programmati direttamente
nel linguaggio dellhardware, dapprima in codice binario, subito
dopo in Assembler.
Con questo metodo si potevano scrivere programmi piccoli e veloci
(per le esigenze computazionali di quei tempi), ma strettamente
dipendenti dalla macchina per cui erano stati scritti.
Lintroduzione di uno strato software tra lhardware e
i programmi utente e lavvento dei linguaggi di programmazione
ad alto livello (i cosiddetti linguaggi della terza generazione,
3GL), hanno reso possibile sviluppare applicazioni indipendenti
dalla macchina, ma dipendenti dal SO.
Ad es. un programma scritto per un sistema Windows non può essere
eseguito su un sistema GNU/Linux (attualmente fanno eccezione i
bytecode di Java, secondo quanto discusso in Corso
di Java lezione 2).
Comprendiamo bene che questa realtà nasce dal fatto che ogni sistema
adotta soluzioni proprie per risolvere i problemi discussi nelle
puntate precedenti e per fornire le funzionalità di base richieste.
Entriamo più a fondo nella questione, seguendo il percorso intrapreso
da un codice sorgente per diventare un programma riconosciuto ed
eseguito dal SO.
|