Il software è la parte immateriale, intangibile di un computer, l’insieme delle istruzioni, dei dati e dei programmi che interagiscono con la sua parte fisica e gli dicono cosa fare. Comprende tutte le applicazioni, i sistemi operativi e gli strumenti che usiamo per interagire con il computer, inteso come calcolatore e per estensione si intende anche console, smartphone e qualunque dispositivo tecnologico, e farlo funzionare.
I software vengono preparati scrivendo le istruzioni passo passo tramite i linguaggi di programmazione, i quali si ispirano al linguaggio inglese e quindi sono più facili da imparare a usare rispetto al linguaggio macchina, il sistema binario. Quando il programma è pronto, oppure ogni volta che si fa un test, il programma viene convertito in codice binario e letto dalla macchina in modo da ottenere i risultati desiderati.
Firmware
Con il termine firmware si intende un software specifico integrato in un chip della scheda madre di un computer. Si tratta di un programma essenziale che esegue il controllo dell’hardware al momento dell’accensione del dispositivo, gestisce i dispositivi di base come la tastiera, il display e le unità di memoria, verifica la presenza del sistema operativo e gli permette di avviarsi. Contiene anche un’interfaccia dove possiamo modificare alcune impostazioni dell’hardware.
Per molti anni, il firmware utilizzato nei PC è stato il BIOS (Baisc Input/Output System) che ha proprio le funzioni indicate sopra. I moderni computer hanno installato il UEFI (Unified Extensible Firmware Interface) che ha maggiore flessibilità, sicurezza e supporto per le tecnologie moderne.
Tutti i dispositivi elettronici hanno un firmware incluso, necessario per l’interazione tra hardware e il software. Nei dispositivi mobili, il bootloader ha funzioni simili al BIOS mentre il TrustZone/TEE funziona in parallelo con il sistema operativo e si occupa di gestire operazioni sensibili come la crittografia e l’identificazione biometrica (impronte digitali o basata sul viso). I router, le console di videogiochi e qualunque altro dispositivo tecnologico ha un suo firmware.
Software di sistema
Il software di sistema, o di base, è rappresentato dal sistema operativo. Agli albori, relativo al periodo in cui molti potevano acquistare un PC, si trattava semplicemente di un terminale a riga di comando dove si poteva interagire soltanto con la tastiera. Bisognava conoscere i programmi installati, e anche come comunicare con esso.
Molti comandi base erano gli stessi usati nei terminali odierni:
- cd: cambia la directory per passare da una cartella all’altra;
- ls o dir: elenca i file di una directory;
- cp o copy: copia un file.
- help: per visualizzare la guida.
Uno dei sistemi operativi più diffusi era l’UNIX, sviluppato negli anni ’70 e al quale era stato provveduto un manuale con la descrizione di tutti i comandi disponibili e le loro opzioni.
Con il tempo, i sistemi operativi sono stati dotati di un interfaccia grafica e l’interazione con il mouse rendendo tutto molto più semplice. Tuttora esistono sistemi operativi dotati soltanto di un terminale a riga di comando. Sono chiamati server, e il loro scopo è quello di servire pagine web, gestire database, fornire servizi di rete ed eseguire applicazioni in background. Vengono usate principalmente dalle aziende.
Software applicativi
All’interno di un sistema operativo possono essere installati molti programmi diversi usati per scrivere, disegnare, creare presentazioni, modificare immagini, editare video, sviluppare giochi o altri programmi. Tutti questi programmi vengono chiamati software applicativi, applicazioni, app.
Prima dell’avvento di internet, i software dovevano essere acquistati in un negozio ed erano contenuti in CD. Oggi possono essere scaricati dalle relative pagine web, siti aziendali, oppure nello store incluso nel sistema operativo. Alcuni sono gratuiti mentre altri a pagamento.
Software generico, proprietario e licenza
I programmi che vengono creati per la maggior parte degli utenti e tradotti in più lingue vengono chiamati software generici. Quando il programmatore che crea un programma richiede i diritti d’autore per poterlo vendere si parla di software proprietario e di solito il codice con cui viene creato non è reso disponibile. Ci sono anche software che vengono creati appositamente per un cliente e quindi sono personalizzati per le sue necessità. In questo caso si parla di software ad hoc.
C’è anche la categoria open-source. In questo caso tutto il codice sorgente del programma è reso disponibile online in qualche piattaforma, chiunque può scaricarlo e personalizzarlo in modo gratuito. Il sistema operativo Linux e anche tutti i programmi installati al suo interno nel momento all’inizio sono open-source. Anche alcuni videogiochi possono avere questo tipo di licenza, come il famoso SuperTux.
Ci sono molti tipi di licenza che si possono applicare agli applicativi. L’azienda che distribuisce un’opera propria può richiedere un unico pagamento o un abbonamento mensile, permettere di provare il suo programma per un periodo limitato o distribuirlo gratuitamente con alcune limitazioni.
Anche un software distribuito con una licenza open-source può avere determinate condizioni: potrebbe permettere la modifica e la distribuzione della sua opera a condizione che il suo nome rimanga, oppure potrebbe vietarne l’uso per scopi commerciali.
Un ultimo caso riguarda i programmi rilasciati sotto Dominio Pubblico. In questo caso chiunque può farne ciò che vuole senza dovere chiedere nessun tipo di permesso o attribuire i meriti a qualcun altro.