IN EVIDENZA

Guida sintetica alla programmazione delle macchine

Il coding e gli algoritmi sono ormai parte integrante della nostra vita di tutti i giorni. Ecco perché dovremmo imparare a programmare le macchine, prima che imparino a farlo da sole.

coding-699318_1280
L’attività di programmazione richiede anche creatività e flessibilità, che al momento le macchine fanno fatica a riprodurre e simulare. Crediti immagine: Public Domain

APPROFONDIMENTO – Sempre più di frequente, vista la diffusione di avanzati strumenti di comunicazione di cui ormai quasi tutti dispongono (in primis smartphone, tablet e pc), i concetti di programmazione, coding, algoritmica sono entrati nel linguaggio e nell’utilizzo comune. Di che cosa si tratta più precisamente?

Programmare una macchina è un’espressione con un significato molto ampio. Nel caso più semplice può riferirsi al comune utilizzo di un elettrodomestico, per esempio all’uso dei menu del nostro forno a microonde, per ottenere una cottura particolare in modo automatico, e differente in diversi intervalli di tempo, senza dover intervenire durante il processo. Oppure, a livello più complesso, per programmazione si indica la selezione e la modifica di un programma pre-impostato su un robot industriale, per aumentare per esempio la sua produttività riducendo il tempo ciclo di una data operazione. O ancora, scendendo sempre di più nel dettaglio, programmare può riferirsi alla scrittura di codice. In termini semplici, questa operazione, denominata coding, presuppone appunto la familiarità con ambiente di sviluppo, con un linguaggio di programmazione, con applicazioni che forniscono soluzioni per dati problemi.

Per svolgere l’attività di coding è necessario conoscere un linguaggio, attenersi a precise regole e attraversare una fase di progettazione e una fase di verifica obiettiva che il codice funzioni esattamente come previsto.

In effetti, secondo Mitchel Resnick, professore del MIT Media Lab, il coding non è che un’estensione della capacità di scrivere, e andrebbe coltivata sin dalla più tenera età. E non solo perché il numero di opportunità lavorative per programmatori e ingegneri elettronici o informatici sono in fortissima crescita, ma anche perché, secondo Resnick, dedicarsi all’apprendimento del coding significa poter migliorare molti altri aspetti della propria vita personale e professionale, come la capacità di risolvere problemi, comunicare idee, sviluppare senso pratico.

Tornando alle questioni lavorative, ci sono ad oggi scuole di pensiero del tutto opposte sull’impatto delle nuove tecnologie e la capacità di programmare le macchine. In un articolo pubblicato su wired.com, per esempio, il giornalista Clive Thompson sostiene che il coding sarà il lavoro manuale della prossimo futuro: in altri termini, la crescente specializzazione delle macchine nell’esecuzione di compiti sempre più complessi consentirà loro di rimpiazzare completamente gli operai umani, e di conseguenza le prime professioni disponibili con contenuto manuale saranno, appunto, quelle di chi programma le macchine stesse. E le tecniche di programmazione saranno ridotte a lavori routinari e seriali, né più né meno che gli attuali compiti sulle catene di montaggio.

Una tesi contrapposta viene sostenuta dall’autore e sviluppatore Steven Lipton in un post su LinkedIn, in cui è sottolineata la reale natura dell’attività di coding, considerata niente più che un semplice passaggio della vera e propria attività di programmazione: in realtà, a parte il processo di scrittura di codice in sé, le operazioni davvero complesse restano la capacità di pianificare le varie fasi, il progetto dell’architettura di un sistema elettronico o informatico, l’esperienza nello sviluppo di varie applicazioni e la capacità di validare il progetto implementato in accordo con specifici standard. Tutte attività che le macchine attuali non sono ancora in grado di eseguire in modo efficace ed autonomo.

Una notizia recente su questo fronte è che Gamalon, una start-up di Boston, ha sviluppato una tecnica per dare a un’intelligenza artificiale la capacità di scrivere il proprio stesso codice: in altri termini, l’algoritmo sviluppato è in grado di isolare porzioni del proprio stesso programma, e riscriverle per renderle più efficienti.

Se è vero quindi che l’attività di programmazione richiede capacità che le macchine odierne fanno ancora fatica a riprodurre o simulare – come la creatività e la flessibilità – non è detto che nel prossimo futuro le cose non possano cambiare.

Leggi anche: Quali professioni per gli ingegneri del futuro?

Pubblicato con licenza Creative Commons Attribuzione-Non opere derivate 2.5 Italia.   

Condividi su
Gianpiero Negri
Laureato in Ingegneria Elettronica, un master CNR in meccatronica e robotica e uno in sicurezza funzionale di macchine industriali. Si occupa di ricerca, sviluppo e innovazione di funzioni meccatroniche di sicurezza presso una grande multinazionale del settore automotive. Membro di comitati scientifici (SPS Italia) e di commissioni tecniche ISO, è esperto scientifico del MIUR e della European Commission e revisore di riviste scientifiche internazionali (IEEE Computer society). Sta seguendo attualmente un corso dottorato in matematica e fisica applicata. Appassionato di scienza, tecnologia, in particolare meccatronica, robotica, intelligenza artificiale e matematica applicata, letteratura, cinema e divulgazione scientifica, scrive per Oggiscienza dal 2015.