Approfondimenti

Intelligenza artificiale e programmazione, 10 linguaggi scelti per voi

Alcuni linguaggi di programmazione sono più trasversali, altri si adattano meglio al machine learning, alla robotica o all’IoT. Poiché l’Intelligenza artificiale è un costrutto, ogni livello ha peculiarità che lo distinguono [...]
linguaggi AI
  1. Home
  2. Intelligenza Artificiale
  3. Intelligenza artificiale e programmazione, 10 linguaggi scelti per voi

Ci sono diversi linguaggi di programmazione per le intelligenze artificiali (AI) e alcuni si adattano meglio ad ambienti specifici. Un buon linguaggio di programmazione deve essere facile da apprendere e da utilizzare, non di meno deve essere corredato di ampia documentazione, deve essere supportato da una community solida e deve contare su tool, librerie e framework.

Tuttavia, quando si parla di Intelligenza artificiale si fa riferimento a un costrutto formato da diverse branche, tra le quali il deep learning, il machine learning, la robotica, la visione artificiale e – non da ultimo – i principi di informatica teorica i quali, più afferenti all’informatica e alla matematica – si concentrano sugli aspetti più astratti della semantica della programmazione e della complessità computazionale.

L’AI ha portato le tecnologie a un livello superiore con declinazioni diverse a seconda dell’industria di riferimento. Qui prendiamo in esame dieci linguaggi AI circoscrivendoli, laddove possibile, agli ambienti più consoni al loro uso.

Python

linguaggi AI

 

È un linguaggio interpretato, può essere quindi utilizzato per eseguire programmi senza compilazione in linguaggio macchina. Può essere utilizzato in scenari complessi perché, essendo un linguaggio di alto livello comprende array, oggetti ed espressioni astratte di informatica che ne moltiplicano gli ambiti di applicazione.

Si è guadagnato una certa popolarità anche in virtù del fatto che necessita meno codice di altri linguaggi ma, soprattutto, perché meglio si presta alle fasi di prototipazione e modellizzazione, particolarmente complesse in un progetto di machine learning. In aggiunta, ha un numero elevato di librerie che mettono a disposizione i principali algoritmi ed estensioni per il machine learning e per il deep learning (tra queste TensorFlow, NumPy, SciPy e Pybrain). Tutto ciò spiega perché Python è un linguaggio adatto sia al machine learning sia al deep learning e, in aggiunta, va sottolineato che gli sviluppatori possono contare su una comunità ampia e su abbondante documentazione.

Ha anche degli svantaggi che possono indurre a scegliere altri linguaggi. Essendo di alto livello e quindi lontano dal linguaggio macchina, il Python risulta lento soprattutto quando si cercano alte prestazioni algoritmiche. Problema che può essere lenito ma non definitivamente risolto con PyPy, uno dei compilatori Python più usato.

R

linguaggi AI

R è un’altra valida opzione ma più orientata a calcoli o ad analisi autonome, al contrario di Python che è più adatto ad analisi complesse o che esigono l’integrazione con applicazioni web.

R trova un certo gradimento tra gli utenti business perché considerato più visivo e, per esempio, si adatta bene a quelle aziende che volessero effettuare analisi di dati da origini diverse e rappresentarne i risultati in modo chiaro e facilmente interpretabile. Si presta più alla statistica e alla Data science anche se – dal paragone con Python – risulta che entrambi i linguaggi sono equiparabili per funzionalità e performance.

Se nel machine learning Python incontra il favore degli sviluppatori, la statistica propriamente detta resta feudo di R. Finn-R è un framework che si è guadagnato una certa notorietà nell’ambito del deep learning e delle reti neurali.

Java (e altri linguaggi JVM)

WHITEPAPER
Robot intelligenti: i vantaggi nei progetti di automazione nell'Industry4.0
Industria 4.0
Realtà virtuale

linguaggi AIJava si distingue per la velocità ed è soprattutto questo il motivo per il quale è ampiamente usato nel machine learning. A questo vantaggio fanno da contrappeso diversi svantaggi, su tutti il fatto che Java necessita maggiori quantità di codice, occorre prima definire classi e metodi e non è cosa trascurabile, soprattutto perché a minore sforzo di programmazione coincide un minor costo. Java è un valido supporto per le reti neurali e per lo sviluppo di dispositivi IoT i quali, al contrario di quanto si possa credere, vivono una sempre più stretta simbiosi con l’AI, si pensi per esempio ai dispositivi indossabili in uso in diverse fabbriche (smart factory) che esaminano l’ambiente circostante e avvertono i lavoratori nel caso in cui fossero esposti a particolari pericoli.

JVM, ossia Java Virtual Machine, semplifica i processi di implementazione evitando la necessità di compilare le applicazioni più volte.

Va anche detto che Big data e Ai sono strettamente collegati e che i framework Big data più importanti come Hadoop, Hive e Spark sono scritti proprio in Java.

JavaScript

linguaggi AI

I puristi, non del tutto a torto, sostengo che JavaScript sia più un linguaggio di scripting che uno di programmazione propriamente detta. Lo inseriamo in questo elenco perché Node.js – ambiente di runtime JavaScript – ha una propria versatilità grazie alla grande quantità di  librerie di cui dispone e questo lo rende altrettanto efficace del Python, anche se meno immediato da apprendere. Si presta in particola

re modo alle reti neurali, in questo caso il riferimento è soprattutto a Brain.js, framework che ne rende più facile i processi di definizione e di addestramento. Brain.js supporta varie reti neurali, tra le quali quelle feed-forward, le reti Elman e quelle di memoria a breve termine.

C++

linguaggi AI

Viene usato in diversi ambiti, compresa la visione computerizzata e le reti neurali. Il C++ è in grado di velocizzare calcoli complicati e, benché abbia una sintassi a tratti ostica, è flessibile ed è anche per questo che viene utilizzato per scrivere librerie a basso livello su cui creare interfacce di alto livello in Python. Molti framework per il machine learning e per il deep learning sono sviluppati in C++ come, per esempio, il già citato TensorFlow che è tra i framework di machine learning più popolari. Trova un suo ambito di applicazione pure tra i dispositivi IoT anche se, per essere più precisi, viene spesso accompagnato da dialetti del C per quanto riguarda gli aspetti procedurali.

Swift

linguaggi AI

Swift è un linguaggio creato da Apple per rendere più facile lo sviluppo di app per iPhone, Mac, Apple TV e Apple Watch. Nel 2018 Cupertino, in collaborazione con IBM, ha implementato una soluzione di machine learning per consentire agli sviluppatori di creare app orientate alle a ziende ed entrando così nell’enterprise IT. Fulcro di questa collaborazione, per il momento almeno, sono le app orientate a soluzioni specifiche come l’assistenza mediante realtà aumentata o il riconoscimento visivo. Assume quindi un senso inserire Swift tra i linguaggi per l’AI, soprattutto negli ambiti della Data science e il machine learning. Le implementazioni che Apple sta già apportando ai propri dispositivi negli ambiti della salute e della domotica daranno a Swift uno spazio da protagonista.

Ros

linguaggi AI

Ros è acronimo di  Robot Operating System, un set di librerie e strumenti open source e indipendenti dal linguaggio AI di programmazione, utili a creare applicazioni per robot. Tra le funzionalità che offre compaiono modelli tridimensionali e simulatori 2D e 3D, visione robotica, localizzazione e strumenti per l’impiego di algoritmi. Non è un linguaggio di programmazione ma permette di fare interagire agenti in un contesto AI.

Per spiegare meglio le potenzialità di Ros citiamo un lavoro del 2021 svolto da un gruppo di ricercatori dell’Università di Alcalà, che ha creato una piattaforma robotica in grado di navigare in modo autonomo in ambienti circoscritti da una mappa, basando quindi le proprie percezioni su modelli di intelligenza artificiale, rilevando ostacoli fissi e mobili e riuscendo a ricalcolare la migliore traiettoria per giungere a destinazione. Questo esperimento è inteso allo sviluppo futuro di applicazioni che permetteranno agli agenti di fornire supporto alle persone con handicap o con problemi di salute.

Lua

linguaggi AI

Lua è nato per essere utilizzato su sistemi embedded ed è un linguaggio AI di scripting efficiente e facilmente integrabile con il C++. Non ha una libreria standard ed è un problema che, almeno in parte, è stato colmato dalla comunità la quale mette a disposizione moduli sul sito LuaRocks. È usato nei videogiochi e nel machine learning – grazie al framework Torch7 – e deve parte della sua fama all’impiego che ne è stato fatto nel comparto videoludico – laddove è stato impiegato per dotare ambienti e personaggi di “intelligenza” – e successivamente ha trovato una propria collocazione nel machine learning.

Lisp

linguaggi AI

Negli ultimi decenni Lisp è stato utilizzato soprattutto per lo studio delle lingue naturali, nelle dimostrazioni di teoremi e nell’ambito delle AI. È stato creato da John McCarthy, pioniere delle intelligenze artificiali e insignito del Premio Turing nel 1971.

Permette di ridurre i tempi di esecuzione dei programmi e, grazie alla sua flessibilità e potenza, viene usato nei campi della biologia e nella bioinformatica. I linguaggi della famiglia Lisp sono utilizzati anche nelle applicazioni di AI e di deep learning e, a renderli particolarmente apprezzati, contribuisce il fatto che i programmi Lisp sono di veloce progettazione e di più facile manutenzione rispetto a quelli scritti in Java o C++.

Tuttavia, scrivere (e leggere) codice in Lisp può non essere immediato e ha alle spalle una comunità di sviluppatori poco popolata.

Rust

linguaggi AI

Velocità di esecuzione e sicurezza sono le leve di Rust, che conta anche su una sintassi non dissimile da quella del C++. Può essere non immediato da apprendere e la compilazione del codice può risultare particolarmente lenta – cosa che non ha peso sull’esecuzione dei programmi una volta compilati – e può contare su un numero limitato di libreria di machine learning. Nonostante ciò, si impone per la sua duttilità nella creazione di motori di calcolo, per la sua capacità di elaborare grandi quantità di dati e per la gestione di operazioni ad alto carico per le CPU.

 

WHITEPAPER
Smart building: una guida per semplificare la progettazione della rete

 

FacebookTwitterLinkedIn
FacebookTwitterLinkedIn