Vi siete mai chiesti come fa un computer ad eseguire le nostre richieste? Oggi sembra normale digitare una lettera e vederla direttamente comparire sullo schermo: anche grazie all’abitudine, può sembrare un’operazione estremamente semplice, ma è molto più complessa di come appare.
Il computer parla una lingua tutta sua, che non è inglese o italiano, ma il linguaggio macchina. Questo linguaggio ha un alfabeto detto binario, composto da soli due simboli: 0 e 1. I programmi scritti in codice binario sono direttamente eseguibili dal computer, ma cambiano in base al tipo di processore. Pertanto, non esiste un unico linguaggio macchina, ma tutti sono comunque poco comprensibili per l’uomo.
01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100 00100001
Esempio di linguaggio macchina, in binario. Convertito in testo utilizzando la codifica ASCII risulta in un semplice “Hello World!”.
Come risulta intuibile, negli anni, sono stati introdotti vari linguaggi di programmazione per poter comunicare con il computer. Questi fanno da tramite tra il linguaggio umano e quello del computer, di conseguenza non sono direttamente eseguibili ma richiedono una traduzione in linguaggio macchina, svolta direttamente dal compilatore.
In termini semplici, il coding consiste quindi nel fornire istruzioni precise ai computer attraverso linguaggi di programmazione.
A livello base, un codice può dire al computer di modificare le colonne di una tabella, di unire vari fogli dati e può essere utile per fare analisi o creare grafici sulla base dei dati che abbiamo. Se però implementato, questo consente di creare software, applicazioni e siti web; strumenti ormai essenziali nella vita di tutti i giorni.
Si va dalla gestione di dati alla creazione di videogiochi, dalle app per smartphone fino ai complessi sistemi utilizzati nelle aziende. Il coding è alla base di moltissime tecnologie che utilizziamo quotidianamente.
I linguaggi di programmazione sono moltissimi e sono in continuo sviluppo, ognuno con funzioni specifiche e un grado di difficoltà diverso, proprio come per noi può essere più facile parlare spagnolo e più difficile apprendere il mandarino.
Oggi possiamo beneficiare dello sviluppo dei linguaggi di alto livello, ad esempio Python, che contrariamente a quanto si possa pensare, sono i linguaggi più semplici; infatti, per alto livello intendiamo un alto grado di differenziazione dal linguaggio macchina. Essi hanno una sintassi più naturale e più in linea al linguaggio umano, sono spesso utilizzati per analisi dati e sviluppo di siti web e applicazioni.
print (“Hello World!”)
Esempio di Python
Entrando sempre più nello specifico possiamo annoverare i linguaggi di medio livello, come C. Essi sono più complessi nella sintassi e richiedono una comprensione più approfondita. Essendo C un linguaggio open source permette a chi ne ha le competenze di creare nuove versioni andando a modificare la struttura del linguaggio stesso, in questo modo sono nati linguaggi come C++, C# (C-Sharp) e Objective-C, quest’ultimi sviluppati rispettivamente da Microsoft ed Apple.
Questi sono spesso utilizzati per lo sviluppo di software, ad esempio, molti componenti di Microsoft Office sono sviluppati in C++. Il codice di Microsoft Office però è “chiuso” – anche detto “software proprietario” -, il che significa che non è disponibile al pubblico per la revisione o la modifica ma solo gli sviluppatori autorizzati da Microsoft possono accedere e modificare il codice sorgente. Questo consente a Microsoft di proteggere la proprietà intellettuale e controllare la distribuzione e l’uso del software.
#include <iostream>
using namespace std;
int main()
{
cout << “Hello World!” << endl;
return 0;
}
Esempio di C++
Poi, esistono i linguaggi di basso livello, come Assembly, che risultano invece più difficili da imparare. L’Assembly è molto vicino al linguaggio macchina, il che significa che ogni istruzione corrisponde direttamente a un’operazione che la CPU, il “cervello del computer” può eseguire. Esso viene spesso utilizzato per ottimizzare le prestazioni e gestire le operazioni hardware.
La scelta del linguaggio dipende dagli obiettivi personali e dall’applicazione che si vuole sviluppare. Python, ad esempio, è molto popolare per la sua semplicità, ma linguaggi come C++ sono più indicati per applicazioni dove la velocità e la sicurezza sono fondamentali.
Oggi, parlare di coding significa inevitabilmente esplorare l’intelligenza artificiale (AI), in particolare quella generativa. Questa tecnologia avanza grazie al machine learning, permettendo ai computer di imparare dai dati e generare contenuti originali come testi, immagini e musica. Modelli come ChatGPT e DALL-E sono esempi di come l’AI possa creare e migliorare continuamente, adattandosi ai nuovi input.
Applicare l’Intelligenza Artificiale Generativa (GenAI) al coding significa rivoluzionare la maniera di programmare, rendendo la scrittura di codice più semplice e accessibile anche ai meno esperti. Infatti, mentre i primi programmatori dovevano consultare lunghe documentazioni, oggi, grazie a questi strumenti, il processo è molto più immediato.
Al giorno d’oggi, è possibile scrivere un prompt direttamente in linguaggio naturale. ChatGPT, che agisce come se fosse un esperto in grado di consultare istantaneamente migliaia di siti internet, ci fornirà un output che, inserito nello script dei linguaggi di programmazione, può essere compreso dal computer.
Ad esempio, potrei chiedere a ChatGPT di agire come un esperto di Python, scrivere parti di codice o individuare un eventuale problema; infatti, se su Python mi apparisse un codice di errore, ChatGPT potrebbe aiutarmi ad individuare che tipo di errore ho commesso.
Il coding è quindi alla base dello sviluppo di software intelligenti, ma a sua volta beneficerà dell’evoluzione dell’AI, creando un circolo virtuoso che sta trasformando il mondo tecnologico. Infatti, è stato scritto un codice Python per creare ChatGPT, ma adesso è ChatGPT che aiuta a creare e migliorare i codici di Python.
Un’altra tipologia di GenAI che va assolutamente tenuta in considerazione è GitHub Copilot, un assistente di programmazione che suggerisce codice mentre scriviamo. È integrato in editor come Visual Studio Code (Python) e utilizza l’intelligenza artificiale per capire il contesto del nostro lavoro. Basandosi su grandi quantità di codice pubblico, offre suggerimenti per velocizzare il processo di scrittura e aiutare a evitare errori.
È importante però ricordare che non possiamo fidarci ciecamente di quello che suggerisce l’intelligenza artificiale: negli anni sono infatti sorte alcune polemiche riguardanti le informazioni fornite da quest’ultima.
Era diventato famoso, in particolare, un prompt che chiedeva a DELL-E, una tipologia di intelligenza artificiale in grado di generare immagini, di creare un’immagine di una stanza vuota “senza nessun elefante”. L’intelligenza artificiale, che qualche anno fa era molto meno sviluppata rispetto ad ora, richiamava il concetto di elefante e generava un’immagine di una stanza con dentro un elefante. Questo fenomeno in cui l’intelligenza artificiale genera informazioni false o inesatte che appaiono plausibili è chiamato allucinazione.
Oggi, ripetendo l’esperimento con DELL-E 3, la versione aggiornata di DELL-E, l’immagine che viene generata è effettivamente quella di una stanza completamente vuota.
È importante tenere in considerazione che l’intelligenza artificiale è in continua evoluzione; infatti, nuovi modelli più aggiornati e performanti vengono creati e rilasciati continuamente.
Ma l’intelligenza artificiale, nonostante si chiami così, non ha una coscienza propria, è semplicemente uno strumento molto potente che può gestire grandi quantità di dati e automatizzare compiti complessi, ma per funzionare in maniera ottimale è necessaria la collaborazione tra AI e persone. Gli esseri umani, infatti, apportano creatività, intuizione e decisioni etiche. Insieme, possono risolvere problemi in modi più efficaci, migliorando innovazione e produttività.