Introduzione ai programmi per computer

Questo è il post #1 di 12 nella serie “Fondamenti di Programmazione 101”

Partendo dall’assunto che un computer è una macchina “stupida”, nel senso che non ha alcuna possibilità di eseguire alcuna operazione se prima non istruito su cosa e come fare, però possiamo dire che ha la potenzialità di essere istruito a eseguire una serie di operazioni logiche e/o aritmetiche attraverso una programma.

Programmare è l’arte e la scienza di scrivere istruzioni che un computer può interpretare ed eseguire al fine di completare un operazione.

A questo punto la domanda principale diventa, cosa è un programma software?

Come già detto, un computer è una tabula rasa e senza dei programmi non è in grado si fare assolutamente niente.

In breve, un programma software è rappresentato da un insieme d’istruzioni che possono essere eseguite da un computer e il nostro lavoro, in quanto programmatori o futuri programmatori, è quello di scrivere questa serie d’istruzioni attraverso l’uso di uno o più linguaggi di programmazione.

Vediamo di analizzare un caso reale di come funzionano i software installati sui nostri computers.

Ognuno di noi ha utilizzato un browser, un editor di testo o un gioco ma la cosa importante da capire è che questi programmi non “dialogano” direttamente con l’hardware che costituisce il nostro computer ma invece c’è uno strato che si occupa di comunicare con l’hardware della macchina e i vari software comunicano con questo strato che è costituito dal nostro sistema operativo.

Quindi, se per esempio stiamo usando il nostro editor di testo preferito e decidiamo di stampare quello che stiamo scrivendo, nella realtà non è l’editor di testo ad occuparsi direttamente della stampa ma il programma richiede questa operazione al sistema operativo in quanto e; quest’ultimo a sapere come comunicare con l’hardware sottostante attraverso dei programmi che si chiamano drivers.

Struttura a layers di un computer

La cosa importante da notare in questa struttura a strati è che con questo design, noi programmatori che scriviamo principalmente le applicazioni utenti, non dobbiamo preoccuparci dei dettagli di basso livello come l’interazione con l’hardware.

Se scriviamo un programma attraverso il quale vogliamo stampare a schermo una stringa, il nostro programma invierà la richiesta al sistema operativo. Il sistema operativo delegherà la richiesta al driver del monitor e quest’ultimo saprà come interagire con il monitor connesso al computer.

Vediamo questo esempio attraverso un grafico:

Esempio di una struttura a layers di un computer

Algebra Booleana

Probabilmente il concetto base più importante della programmazione ci è stato donato da George Boole, un autodidatta matematico Inglese e l’inventore della logica Booleana la quale rappresenta le fondamenta di tutto quello prodotto dai computers.

La logica Booleana, anche conosciuta come Algebra Booleana, è una forma della matematica che lavora con soli due valori: vero e falso (true/false). Inoltre, definisce tre operazioni che si possono eseguire su valori booleani: AND, OR e NOT.

Operatore NOT

L’operatore NOT è il più semplice fra tutti gli operatori e non fa altro che negare il valore booleano a cui viene applicato, quindi NOT true = false e NOT false = true.

Operatore AND

L’operatore AND si applica a due operandi booleani e il risultato è un singolo valore booleano.

Il risultato sarà vero se entrambi gli operandi sono veri e falso in tutti gli altri casi.

Vediamo un esempio concreto: se io dico “Oggi c’è’ il sole e (AND) più di 30 gradi”, questa affermazione è vera se e solo se c’è’ il sole ed allo stesso tempo la temperatura è più alta di 30 gradi ma se c’è’ il sole ed una temperatura inferiore a 30 gradi allora la dichiarazione risulterà falsa.

Operatore OR

L’operatore OR è simile all’operatore AND nel senso che si applica a due operandi booleani ed il risultato è un singolo valore booleano.

La differenza è che il risultato sarà vero se uno o entrambi gli operandi sono veri e falso se e solo se entrambi gli operandi sono falsi.

Possiamo riassumere il comportamento dei tre operandi in maniera visuale attraverso l’uso di quella che è chiamata una tabella della verità’ (truth table).

Una tabella della verità è un modo per descrivere come un input ti valori vero e falso vengono trasformati da un operazione.

Tabella della verità per l’operatore NOT

Se V è il valore in input, la tabella della verità per NOT è la seguente:

PNOT P
TrueFalse
FalseTrue

Tabella della verità per l’operatore AND

Se P e Q sono i valori in input, la tabella della verità per AND è la seguente:

PQP AND Q
TrueTrueTrue
TrueFalseFalse
FalseTrueFalse
FalseFalseFalse

Tabella della verità per l’operatore OR

Se P e Q sono i valori in input, la tabella della verità per OR è la seguente:

PQP OR Q
TrueTrueTrue
TrueFalseTrue
FalseTrueTrue
FalseFalseFalse