I linguaggi di programmazione e i Talleri di Kant

fluid-img

Il grande filosofo Immanuel Kant sosteneva che non basta «pensare» a Dio per provarne l’esistenza: esattamente come non basta «pensare» di avere in tasca cento Talleri (la moneta tedesca del suo tempo) per averceli effettivamente.

Ecco, allo stesso modo non è sufficiente «pensare» (o anche realizzare, addirittura) un algoritmo per farlo funzionare: proprio come Kant ha bisogno di sentire effettivamente in tasca i suoi cento Talleri, noi abbiamo bisogno di far sentire alla macchina la nostra «voce» che detta il nostro algoritmo.

Il passaggio determinante da Intelligenza “naturale” (noi) a Intelligenza Artificiale (le macchine) è dato da un momento di concretezza, una connessione che fa sì che il nostro «pensare» si faccia «azione»: ed è il linguaggio – il «giusto» linguaggio.

Non servono grandi filosofeggiamenti per comprendere questa faccenda: un computer non capisce la nostra lingua, dunque dobbiamo essere noi a imparare il suo linguaggio. La cosa interessante è che non tutte le macchine hanno la stessa lingua, e soprattutto ci sono diversi linguaggi di programmazione in base a quello che vogliamo fare – in base, insomma, ai comandi che abbiamo in mente di dare alla macchina.

Alcuni esempi di linguaggi di programmazione?

Beh, se si vuole realizzare un sito web i linguaggi migliori sono HTML e CSS per le questioni grafiche, mentre per tutto ciò che c’è “dietro” di norma si usano i linguaggi JavascriptPHPRubyPython.

Se invece si vuole creare un software, un programma come tutti quelli che usiamo su un normale pc, i linguaggi che la macchina capisce meglio sono C# e Java.

Gli hardware, d’altro canto (come anche i sensori che segnalano qualcosa, ad esempio le porte che si aprono quando sentono una presenza fisica), capiscono meglio i linguaggi C e C**++.**

E per le app? Dipende: se si crea un’applicazione per Ios si usa il linguaggio Swift, per Android invece il linguaggio Java – ma spesso se ne usa uno ibrido: Javascript.

Sembrano parole astruse – se non assurde – ma in realtà è proprio come riferirsi alle tante lingue umane che esistono nel mondo. Imparare questi linguaggi ci permette di raggiungere un risultato che, oggi, costituisce la base per moltissime azioni quotidiane in tutto il mondo: dialogare con un’Intelligenza Artificiale; comunicarle dei comandi per ottenere dei risultati.

Proviamo ora a capire in modo semplice come può avvenire quel fondamentale processo di traduzione che, dalla nostra lingua, ci conduce verso il linguaggio di una macchina. Un linguaggio che, come vedremo, ha una sua vera sintassi, con regole, parole, punteggiatura ecc. Ci affideremo a uno dei linguaggi più utilizzati ed efficaci, cioè Javascript.

Ma come diamine «parla» una macchina?

Abbiamo un problema.

Kant ha 100 Talleri, e li vuole distribuire equamente a 10 amici: quanti Talleri Kant dovrà dare a ogni amico?

Prima di tradurre il problema nella sintassi “da macchina” dobbiamo semplificare il tutto, riducendolo in passaggi:

Kant ha 100 Talleri

Divise per 10

Quanti Talleri per ciascuno?

E dunque, suddividiamo ulteriormente il tutto: in «Input» (le informazioni che abbiamo), «Logica» (il processo che chiediamo alla macchina di compiere) e «Output» (il risultato che vogliamo ottenere):

Talleri = 100 (Input)

Persone = 10 (Input)

Quantità = Talleri DIVISO Persone (Logica)

Quantità suddivisa = ? (Output)

Facciamo finta che i Talleri siano caramelle, per facilitare il percorso di comprensione della macchina. E procediamo alla traduzione nel linguaggio Javascript – il quale, per le parole che useremo, si basa sull’inglese, essendo questa la lingua condivisa da tutti i programmatori del mondo.

Ecco così il nostro problema “tradotto” nel linguaggio della nostra macchina:

var candies = 100;

var people = 10;

var quantity = candies / people;

console.log(quantity);

Ebbene, se ci si ritrovasse davanti a queste parole senza sapere che si tratta della traduzione in Javascript di un problema ben strutturato, ci sembrerebbe una scrittura incomprensibile e misteriosa. Ma nel dialogo con le Intelligenze Artificiali, in realtà, non c’è nulla di misterioso: nulla può esistere se non lo possediamo davvero – proprio come i Talleri di Kant, che non basta «pensarli» per averli in tasca, così un’Intelligenza Artificiale non può esistere se non la rendiamo noi reale attraverso il giusto modo – in questo caso il giusto linguaggio.