Attraverso un ragionamento logico, possiamo dedurre un concetto a partire da una premessa e da un’osservazione, oppure determinare un comportamento o una scelta in base ad alcune condizioni.
In due esempi: stabilito che tutti gli esseri viventi possiedono il DNA, e osservato che i batteri possiedono DNA, posso inferire che i batteri siano esseri viventi.
Oppure, posta come condizione che posso allenarmi all’esterno solo se c’è bel tempo, se verifico che sta piovendo, decido di allenarmi in palestra.
La logica è quindi un processo mentale essenziale che regola diversi aspetti della nostra vita, dalla risoluzione di semplici problemi quotidiani alla discussione di grandi temi intellettuali, fino alla creazione di software complessi.
Riflettendo sul modo in cui facciamo solitamente delle scelte (giuste o sbagliate che siano), è abbastanza semplice immaginare il ruolo che la logica ha nella nostra vita.
Utilizziamo la logica per confrontare i pro e i contro, per anticipare le conseguenze delle nostre azioni (mi conviene prendere l’autobus o andare a scuola in auto, in base al traffico, al tempo e al costo?), per trovare soluzioni (cosa faccio se la connessione a internet smette di funzionare? Provo a spegnere e riaccendere il modem? Chiamo subito l’assistenza?), per valutare le informazioni (come faccio a determinare se ciò che apprendo da un social è attendibile o un fake?) e infine per organizzare la nostra vita in modo più efficiente (decidere quale attività svolgere per prima, in base alle priorità, alle risorse e al tempo disponibile).
Ma cosa c’entra la logica con i software? Come possono le applicazioni del mio cellulare rispondere a dei “ragionamenti”?
Vi siete mai chiesti come si passa dal tocco di un’icona sullo schermo del nostro cellulare alla miriade di azioni che quell’applicazione ci consente di svolgere?
Avete mai provato a immaginare come fa ChatGPT a rispondere alle nostre domande?
Qualcuno sa come i piccoli spostamenti delle dita riescano a trasformarsi nei complessi movimenti dei personaggi di un videogioco sullo schermo?
Tutto ciò che abbiamo menzionato finora e molto di più, incluso il mondo dell’intelligenza artificiale (un termine spesso abusato), è reso possibile dalla programmazione informatica… un altro termine molto usato senza conoscerne realmente il significato.
Programmare, in informatica, significa scrivere una serie di istruzioni in un linguaggio comprensibile dal computer per far eseguire alla macchina determinate operazioni. Tuttavia, tali operazioni non sono eseguite in maniera “meccanica”, seguendo semplicemente la sequenza in cui sono scritte; al contrario, ogni programma è fondato su un insieme di controlli che determinano un ordine preciso di esecuzione. E questi controlli non sono altro che processi logici.
Come apprendisti programmatori in linguaggio Python, abbiamo provato a definire in modo logico i criteri che determinano il flusso di esecuzione di un programma. Ad esempio: “Se il numero è maggiore di 10, allora esegui questa funzione; altrimenti esegui quest’altra”.
Questa semplice logica permette di creare scelte razionali, efficienti e sicure all’interno di un programma; tuttavia, essa deve essere estremamente precisa e formale, perché il computer esegue esattamente ciò che gli viene detto, senza possibilità di interpretazione. E se il nostro ragionamento iniziale aveva qualche difetto, il risultato finale sarà completamente errato.
Banalmente, se intendevo scrivere “≥ 10”, ma ho scritto solo “>”, il computer escluderà sempre il numero 10, dandoci un risultato “sbagliato”, sebbene formalmente corretto, rispetto a ciò che ci aspettavamo.
Sempre grazie a questo corso, abbiamo imparato che le sequenze di comandi non servono solo per fare calcoli, ma che una corretta lista di istruzioni può originare qualcosa di molto complesso, come delle immagini fatte di forme, colori, proporzioni e dimensioni particolari. Insomma, più precisi, dettagliati e articolati sono i comandi, più raffinato sarà il risultato.
Abbiamo anche iniziato a capire che i famosi algoritmi, con cui i gestori di social network e servizi di messaggistica controllano le nostre preferenze, non sono altro che programmi (ossia sequenze di passi logici) che determinano, per esempio, quali contenuti proporci in base a ciò che abbiamo già visto o ai termini utilizzati nelle nostre conversazioni, che il nostro cellulare “ascolta” (se…, allora…, altrimenti…).
Così descritto, sembra quasi che i cellulari e i computer determinino autonomamente le proprie attività. Tuttavia, il punto cruciale che abbiamo appreso, avendo provato a programmare in prima persona, è che la logica grazie alla quale queste macchine funzionano è sempre decisa e determinata da esseri umani, attraverso il programma da loro elaborato.
Tornando alla definizione di logica con cui abbiamo iniziato questo articolo, possiamo concludere che, sia nei linguaggi di programmazione che nella vita quotidiana, la logica ci aiuta a prendere decisioni informate e a risolvere problemi in modo razionale, con alcune differenze, però.
Una volta che la logica è stata definita e un programma viene eseguito, non è più soggetto ad interferenze e porterà sempre allo stesso risultato, se le condizioni rimangono le stesse.
Nella vita quotidiana, invece, siamo costantemente chiamati a riesaminare e riformulare le nostre decisioni, a causa di variabili impreviste o di nuove informazioni che emergono, le quali possono portare a decisioni più sfumate e meno prevedibili.
Possiamo quindi dire che, se la logica conferisce rigore e rigidità alle macchine, nella vita di tutti i giorni essa è una risorsa dinamica e flessibile che ci permette di navigare tra le incertezze e le complessità della realtà.
(Corso realizzato con i fondi PNRR)









