top of page
  • Immagine del redattoreElvis Informatico

Software: Panoramica in pochi minuti

Aggiornamento: 24 giu 2022

Ciao a tutti gli informatici per caso! Secondo capitolo del mini-corso-base di informatica, oggi parliamo dell'infinito mondo dei software. Forse molti danno per scontato cosa sia un software, ma a mio modo di vedere si tratta, oggi come oggi, di un concetto troppo ampio per pensarlo racchiuso in una semplice parola. Dunque cominciamo! Partiamo dal principio che col termine "software" si intende la componente immateriale di un dispositivo elettronico, cioè quella parte che non possiamo toccare con mano, in contrapposizione al termine "hardware" che invece è tangibile. Software ed hardware sono le componenti da cui è costituito un dispositivo elettronico (da una semplice aspirapolvere sino ai nostri amati computer e smartphone), l'utilizzatore di qualsiasi dispositivo, ovvero noi, viene invece definito utente. Quindi ricapitolando: abbiamo un dispositivo elettronico, composto da hardware e software, ed un utilizzatore, chiamato utente, ma in che rapporto sono tra loro? L'utente potremmo posizionarlo in cima alla piramide, mentre il software è esattamente in mezzo tra utente ed hardware. Infatti l'hardware svolge le sue funzioni proprio attraverso i programmi installati al suo interno. Banalmente, quando impostiamo una centrifuga sulla nostra lavatrice, non facciamo altro che selezionare il programma attraverso il pannello di controllo, solo a quel punto il nostro elettrodomestico inizierà a compiere delle azioni.

Fatta questa doverosa premessa, proviamo a classificare i software per macro-categorie: partiamo dai firmware, programmi installati in modo permanente dai produttori all'interno dei dispositivi. Per intenderci, sono firmware i software installati negli elettrodomestici e che ne permettono l'utilizzo. Nei classici computer invece, il firmware ha un nome preciso, BIOS (Basic Input Output System), oggi sostituito dal moderno UEFI (Unified Extensible Firmware Interface). Si tratta di programmi che consentono al computer il suo funzionamento di base, come l'accensione ed il cosiddetto POST (Power On Self Test), una serie di controlli fisici indispensabili per procedere con il successivo lancio del sistema operativo. Per accedere al BIOS/UEFI, generalmente si premono i tasti funzione della tastiera (le varie F1, F2, F3 ecc. A seconda del modello di computer), e possono essere impostate configurazioni come la disattivazione dell'altoparlante interno, l'attivazione o meno delle porte USB e molto altro. Immaginando il nostro viaggio nel mondo dei software partendo dall'hardware ed avvicinandoci progressivamente all'utente, parliamo adesso della categoria dei software di base. Si tratta in buona sostanza dei sistemi operativi, ovvero quei programmi molto grandi che permettono all'utente di lanciare tutte le applicazioni che quotidianamente utilizziamo sui nostri computer (dal browser agli editor testuali, dai videogame ai lettori multimediali ecc.).

All'interno del sistema operativo si trova la terza macro-categoria, quella dei driver, si tratta di piccolissimi programmi utilizzati dal sistema operativo per poter gestire l'accesso e l'utilizzo da parte dell'utente delle periferiche hardware collegate al pc (per intenderci: stampanti, joystick ecc.). Infine, vi è l'infinita macro-categoria delle Applicazioni, ovvero i programmi utilizzati direttamente dall'utente, installati e gestiti dal sistema operativo, e dunque tipici di computer e smartphone.

Il capitolo delle applicazioni merita una trattazione a parte, infatti questi software godono di una moltitudine di caratteristiche ben definite, vediamole nel dettaglio:


LICENZA: tutte le applicazioni posseggono per definizione una licenza, la quale specifica il tipo di utilizzo che può esserne fatto. La maggior parte delle licenze sono "d'uso", vuol dire che quando compriamo un'applicazione stiamo in realtà acquistando il diritto al solo utilizzo della stessa. Sembra quasi ovvio, ma in verità un'applicazione può tecnicamente essere modificata affinché si comporti in modo diverso. Ad esempio, molti produttori di software rendono i loro prodotti "chiusi", ovvero non vi è possibilità di accedere al codice (definito sorgente) per modificarlo, pena una bella causa milionaria per violazione dei diritti che il produttore vanta sul proprio prodotto. Per fortuna, vi sono anche sviluppatori che rilasciano applicazioni "libere" da restrizioni sul tipo d'utilizzo, parliamo del famoso software libero, un vero e proprio mondo che merita trattazione a parte.


PORTABLE: Quando un software è in grado di funzionare semplicemente lanciandolo - senza necessità di eseguire particolari procedure d'installazione e configurazione - si dice portable. Generalmente, queste tipologie di applicazioni vengono copiate su dei supporti esterni quali pen-drive, pronte ad essere eseguite all'occorrenza e senza alcun bisogno di copiarle sulla memoria di massa di un computer, basta inserire la chiave usb.


INTERFACCIA: Dicesi interfaccia quella componente di un software che viene utilizzata direttamente dall'utente, e che permette a quest'ultimo di utilizzare il programma stesso. Fondamentalmente vi sono due principali tipologie: GUI (graphical user interface) e CLI (command line interface). La prima è di tipo grafico, basti pensare a Windows e le sue icone e finestre, decisamente comode ed intuitive. La seconda è detta anche a riga di comando, ovvero schermo nero e scritte bianche, in cui i comandi vanno proprio digitati per poter utilizzare il programma, un esempio per tutti è MS-DOS.


FUNZIONE: altra grande sottocategoria dei software è quella che li suddivide in base alla loro funzione principale. Ad esempio, tutti i programmi progettati per un uso d'ufficio (fogli elettronici, editor testuali ecc.) vengono detti office automation. Pensiamo ad Excel, Power Point, Word; tutte applicazioni che utilizziamo su Windows per svolgere attività d'ufficio quali calcoli, presentazioni, documentazione ecc.

Ma vi sono anche i videogame, i lettori multimediali, il ritocco fotografico e molto altro.


AMBITO D'USO: Sono applicazioni ad uso personale? Oppure programmi professionali che aiutano a svolgere il proprio lavoro? Anche l'ambito d'utilizzo è una caratteristica molto importante nella distinzione dei software.


DISPONIBILITA': Vi sono applicazioni sempre in esecuzione, non dobbiamo lanciarle né arrestarle, loro sono lì, pronte ad intervenire quando necessario. Programmi sempre in running vengono chiamati anche servizi.


BACKGROUND & FOREGROUND: si parla di applicazione in foreground quando è necessaria la continua interazione dell'utente, in background quando è invece in grado di funzionare indipendentemente da noi, permettendoci quindi di fare altre operazioni ed utilizzare altri programmi. Un classico esempio dei giorni d'oggi può essere whatsapp, riceviamo messaggi anche quando stiamo vedendo un video od effettuando una telefonata col nostro smartphone, questo perché tale programma è in grado di funzionare indipendentemente dalla nostra "attenzione".

Ma come fa un computer ad eseguire un programma? Partiamo dal presupposto che un calcolatore "parla" soltanto codice binario. Quando lanciamo un programma (magari cliccando due volte sull'apposita icona) il nostro computer legge le istruzioni scritte nel file eseguibile ed inizia, appunto, ad eseguirle. Tali istruzioni sono anche dette linguaggio macchina, ed il programma ora in esecuzione diventa un cosiddetto processo.

Dunque, il codice binario o linguaggio macchina, è detto anche di basso livello, proprio perché vicino alla logica del calcolatore. Chi si occupa invece di progettare e realizzare software? Beh, questo è proprio il mestiere del programmatore o sviluppatore. Ad oggi gli sviluppatori non scrivono più programmi in linguaggio macchina (operazione molto complessa), bensì in un linguaggio ad alto livello che viene poi compilato ("tradotto") in linguaggio macchina. Qui si aprono due filoni: codice interpretato e codice compilato. Il primo dei due è un codice che viene tradotto (in linguaggio macchina) ed eseguito nel momento stesso dell'esecuzione del programma, quindi a runtime. Un linguaggio compilato invece, si presenta già in linguaggio macchina, la sua compilazione avviene infatti durante la fase di sviluppo del programma e non durante l'esecuzione dello stesso.

Bene ragazzi, speriamo questa panoramica introduttiva sull'enorme mondo dei software sia stata d'aiuto, vi ricordo che potete trovare lo stesso argomento sul canale youtube di Informaticaso, grazie e alla prossima :)

Post recenti

Mostra tutti
bottom of page