Presenterò oggi un progetto open-source piuttosto particolare, ossia Robocode. La sua particolarità risiede nel fatto che, a seconda dei punti di vista, può essere considerato un gioco, uno strumento didattico per insegnare la programmazione in Java, oppure un ambiente per la ricerca nel campo dell’intelligenza artificiale. Può anche essere considerato una gran perdita di tempo, volendo, ma questo è un altro paio di maniche. Vediamo prima di tutto cosa sia Robocode in concreto.
Robocode nacque all'inizio del millennio come strumento per imparare a programmare in Java, sviluppato da Matthew Nelson per conto della IBM, ma poi il suo campo di azione si è allargato di parecchio. Per prima cosa, è diventato un progetto open-source e disponibile a tutti; dal semplice apprendimento della programmazione in Java si è poi spostato sempre più verso lo studio delle intelligenze artificiali; infine, dalle versioni più recenti si è aperto anche al mondo .NET Framework, rendendo possibile programmare i propri robot anche in linguaggi come C#, VB.NET e tutto il resto della famiglia. Il suo valore didattico, però, non è mai venuto a mancare, tanto è vero che compare nei programmi di diversi corsi universitari (e no, non sto scherzando), come semplice e divertente strumento per testare “sul campo” diverse strategie tipiche delle intelligenze artificiali, come algoritmi genetici, reti neurali, svariati tipi di algoritmi di ricerca e così via. In breve, Robocode fornisce un ambiente completo quanto basta per testare “in azione” varie soluzioni per il controllo automatico. Ed è anche piuttosto divertente, per gli amanti del genere. Dopo aver programmato il proprio robot, è possibile metterlo alla prova in battaglie sia contro i robot pre-programmati (che sono parecchio stupidi, per cui non offrono una grande sfida), sia contro altri robot realizzati da noi stessi, sia infine contro i robot programmati da altri utenti. Esistono infatti diversi siti dove è possibile caricare i propri robot, una volta ultimati, e scaricare i robot pubblicati da altri utenti, come ad esempio Robocode Repository: una sorta di biblioteca dei robot, dove è possibile aggiungere i propri robot e scaricare i robot altrui, liberamente. Per chi è agli inizi, scaricare robot realizzati da altri utenti è anche un buon modo per “studiare” le tecniche più comuni e confrontarsi con le soluzioni proposte da altri, per risolvere gli stessi problemi. E il problema fondamentale, in Robocode, è sconfiggere tutti i nemici, sopravvivendo: questo significa studiare tecniche per muoversi, localizzare gli avversari, reagire ai colpi subiti (o evitare i colpi) e attaccare i nemici. Per i più avanzati, poi, esistono anche vari tipi di tornei robotici, a cui potete far partecipare le vostre AI: alcuni si possono trovare indicati verso la fine della home, sul sito ufficiale di Robocode. Robocode è un programma multipiattaforma e teoricamente può funzionare su qualsiasi sistema operativo, purché sia presente una Java Virtual Machine. Chi poi volesse utilizzare anche un linguaggio .NET per la programmazione, invece del Java, avrà ovviamente bisogno anche del relativo ambiente di sviluppo, ma la JVM resta necessaria per chiunque, dato che il nucleo di Robocode è realizzato in questo linguaggio. L’editor per la modifica e la creazione di robot è sufficiente, ma anche molto rudimentale: diciamo che è l’equivalente di un Blocco Note, come livello di complessità. È comunque possibile sviluppare i propri robot in un ambiente diverso, come ad esempio Eclipse, che pare essere il preferito all’interno dei programmatori di Robocode, almeno a giudicare dal numero di guide disponibili. Per guide, tutorial e altro, il primo sito di riferimento è il sito stesso di Robocode, che nella sua homepage propone una lista di link utili. Tra questi, la RoboWiki è di certo la più utile, con una serie di guide e informazioni sulla struttura dei robot, come modificarli, quali porzioni di codice toccare e quali lasciare così come sono, eccetera eccetera.