L'informatica studia il trattamento delle informazioni attraverso procedure formalizzate e automatizzabili. La programmazione ne è una parte importante, e non è tutta: contano anche la rappresentazione dei dati, gli algoritmi e l'interpretazione dei risultati.
La domanda da cui parto è che cosa facciamo davvero quando chiediamo a un computer di elaborare qualcosa.
Il computer è lo strumento, l'informazione è il problema
La parola «calcolatore» richiama le operazioni numeriche. Ma un computer elabora anche testi, immagini e qualsiasi altro dato rappresentato secondo convenzioni precise.
Ecco perché ridurre l'informatica alla conoscenza dei dispositivi è sbagliato. La stessa domanda vale per un'app sullo smartphone, un programma scientifico o un servizio che organizza documenti.
In tutti i casi devi decidere quali dati rappresentare, quali operazioni eseguire e come valutare il risultato.
Input, elaborazione e output
Un modello utile distingue tre momenti:
- Input: i dati e le condizioni iniziali.
- Elaborazione: le operazioni applicate secondo una procedura.
- Output: il risultato, da leggere nel suo contesto.
È una semplificazione, perché molti sistemi restano in esecuzione e ricevono dati nuovi in continuazione. Aiuta però a farsi le domande giuste prima ancora di scegliere un linguaggio.
Se un risultato sembra sbagliato, il problema può stare nei dati iniziali, nella procedura o nell'interpretazione. Distinguere i tre livelli è metà della diagnosi.
Che cos'è un algoritmo: l'esempio della ricetta
Un algoritmo descrive passi definiti per svolgere un compito. Riprendo un esempio sentito all'università: preparare un uovo in camicia.
Funziona perché ti obbliga a elencare che cosa serve e in che ordine. Una ricetta scritta per una persona, però, lascia implicite un sacco di conoscenze che una macchina non ha.
«Quanto basta» è comprensibile solo se esiste un criterio per interpretarlo. Quando trasformi un'idea in una procedura eseguibile, devi rendere esplicite condizioni, decisioni e casi particolari — ed è lì che il lavoro diventa interessante.
La programmazione traduce tutto questo in istruzioni eseguibili. Scrivere codice viene dopo, o insieme, alla progettazione del problema.
Dal dato alla conoscenza
Uso l'operazione 2 + 2 = 4. Il calcolo dà un risultato matematico, ma la sua utilità dipende da che cosa stai contando e dalla domanda che ti eri posto.
Non sto dicendo che la matematica non significhi nulla. Sto dicendo che un numero, per guidare una decisione, deve avere un contesto: unità, provenienza, condizioni di validità.
Un sistema può produrre un output formalmente corretto rispetto alle istruzioni e restituirti comunque qualcosa di inutile, se la domanda o i dati erano inadeguati. Succede molto più spesso di quanto si ammetta.
Intelligenza artificiale: evitare una scorciatoia
Collego elaborazione, intelligenza e autocoscienza, e sono tre concetti diversi. Svolgere bene un compito non dimostra la presenza di esperienza soggettiva.
E descrivere gli assistenti digitali come archivi di risposte preregistrate è altrettanto riduttivo: un sistema può generalizzare a partire dai dati di apprendimento, non solo recuperare una risposta identica.
Per il ragionamento che sto facendo non serve risolvere il dibattito sulla coscienza. Serve capire come il sistema arriva a un risultato, quali limiti conosciamo e quali verifiche servono per l'uso che ne vogliamo fare.
Programmare significa scegliere regole, e risponderne
Uso l'immagine di chi programma come di qualcuno che costruisce un piccolo mondo: definisci relazioni, comportamenti, vincoli.
Quella libertà ha conseguenze. Una scelta nel codice decide quali informazioni una persona vedrà o se riuscirà a portare a termine un'attività. Quindi non basta che il programma si avvii: bisogna chiedersi se fa il lavoro previsto e come si comporta quando le condizioni cambiano.
È quello che mi affascina dell'informatica. Una definizione breve apre un campo enorme: rappresentare problemi, costruire procedure, trasformare risultati in strumenti per capire.