Ogni tanto tra informatici salta fuori la polemica se l’interfaccia grafica faccia o non faccia parte del sistema operativo.

Ho cercato sul web definizioni del termine “Sistema operativo”, trovandone diverse molto scheletriche, come quella che dà Google stesso:

Il software che condivide le risorse di un computer (processore, memoria, spazio del disco, network bandwidth, e così via) tra gli utenti e i programmi applicativi che vengono eseguiti. Controlla l’accesso al sistema per garantire la sicurezza.

Altre più dettagliate, molto buona in particolare la voce della versione inglese di Wikipedia, che dice:

An operating system (OS) is a collection of software that manages computer hardware resources and provides common services for computer programs. The operating system is an essential component of the system software in a computer system. Application programs usually require an operating system to function.

Secondo alcuni, il sistema operativo è lo strato più basso del software che fa funzionare il computer. È il nucleo che gestisce l’hardware di base, la gestione della memoria, i task. Per i puristi più assoluti anche i driver delle varie periferiche, dal disco rigido in su, cominciano a essere componenti dubbi, perché sono librerie che possono essere installate, sostituite eccetera. Qui stiamo, a mio avviso, semplicemente confondendo kernel e sistema operativo. Come dice il nome (kernel=nocciolo), il kerner è una parte, non il tutto.

Più che si un problema tecnico si tratta in effetti di una questione semantica, di definizioni. La definizione più scheletrica in sostanza dice:

Software che gestisce le risorse di un computer e permette l’esecuzione di programmi.

Si stabilisce insomma uno schema di questo tipo:

Hardware del computer

Sistema operativo

Programmi applicativi

Utente

I problami di definizione nascono dal fatto che nel tempo i sistemi operativi evolvono e si stratificano ulteriormente.

Per esempio, nel più classico degli ambienti, UNIX, abbiamo un sistema operativo che si interfaccia con l’utente tramite shell, ovvero programmini che accettano una serie di comandi. I programmi non hanno bisogno della shell per funzionare, ovviamente, ma solo per essere eseguiti dall’utente. Se io mi collego a un terminale UNIX sto usando una shell, per esempio bash; se digito “ps” eseguo il programma ps, che però non ha bisogno di bash per funzionare; potrebbe essere richiamato in altri modi.

Poi le cose si complicano: su UNIX installiamo un sistema a finestre, X Window o come si chiama oggi Open X. Lo abbiamo installato, è chiaramente una cosa aggiunta. Fa parte del sistema operativo? Diremmo di no. Il sistema funziona comunque anche senza.

Di qui, penso, nasce la teoria secondo cui l’interfaccia grafica non fa parte del sistema operativo. È un qualcosa di più, di aggiunto.

Ma passa il tempo e si arriva a sistemi operativi come Windows (è una cosa aggiunta su MS-DOS?), poi a MacOS (le versioni prima di OSX), e già cominciano i guai. Perché no, MacOS non puoi usarlo senza interfaccia grafica. L’interfaccia non è separabile dal sistema operativo.

MS-DOS cessa di esistere a un certo punto; la CLI di Windows diventa non un sottostrato ma un sostrato, un applicativo di Windows. MacOS al contrario con OSX torna a basarsi su UNIX e a riaprire il dibattito. Diversi tra i sistemi operativi moderni sono basati su Unix (iOS, Android, Chrome OS, Firefox OS). Allora non esistono? Non sono sistemi operativi ma solo interfacce grafiche e l’unico sistema è Unix?

Siamo al ridicolo: sarebbe come sostenere che l’uso normale di un telefonino Android è attraverso l’interfaccia testuale, e l’interfaccia grafica è una aggiunta non essenziale.

Nella definizione di sistema operativo, dicevamo, c’è quella di permettere alle applicazioni di funzionare. I programmi per MacOS, Windowa, Android, iOS eccetera non potrebbero funzionare senza quel grande patrimonio di funzioni del sistema oprativo, interfacciate dalle applicazioni attraverso le API di sistema, che permettono loro di usare disco, tastiera e mouse, ma anche finestre, menu, barre di scorrimento, e quant’altro. Sono a tutti gli effetti periferiche del sistema, anche se virtuali.

Quindi sì, l’interfaccia grafica fa assolutamente parte del sistema operativo, è una componente integrante e oggi è anche la componente più sofisticata e distintiva del sistema operativo. Sui dispositivi moderni in sostanza girano due sistemi operativi uno dentro l’altro, ma la presenza e la teorica autonomia di Unix non è un motivo sufficiente, credo sia evidente, a sostenere che il sistema più grande che lo comprende, MacOS X o Android o altro, non sia a sua volta un sistema operativo.