Falcon, dallo script all'AI

Fa tutto quello che fanno gli altri, e anche qualcosa di più. Si presenta come un linguaggio di programmazione definitivo. Ed è pure open source. L'ha creato un programmatore italiano. PI lo ha incontrato
Fa tutto quello che fanno gli altri, e anche qualcosa di più. Si presenta come un linguaggio di programmazione definitivo. Ed è pure open source. L'ha creato un programmatore italiano. PI lo ha incontrato

In circolazione ce ne sono decine, ciascuno con i suoi pro e i suoi contro: e quando un linguaggio di programmazione non basta, quando non ce n’è uno che soddisfa le proprie esigenze non rimane altro che farne uno ex novo. Tra coloro che hanno intrapreso questa strada anche l’italiano Giancarlo Niccolai , che si autodefinisce professionista dell’IT: invece di dover rinunciare alle prestazioni o piegarsi a dei compromessi si è rimboccato le maniche ed è ripartito quasi da zero. E ha creato Falcon , che in poco tempo è già riuscito a farsi ammettere tra i linguaggi ufficialmente supportati da Kross (il framework di meta-scripting di KDE4).

Il sito di Falcon, tutto scritto con il nuovo linguaggio di programmazione Perché lanciarsi in una sfida del genere? “Il punto è che per lavoro scrivo software fortemente orientato al multithreading – spiega Niccolai a Punto Informatico – Si tratta di applicazioni fatte per girare su macchine con almeno 8 o 16 processori, che gestiscono decine di istanze in concorrenza, e avevo bisogno di riuscire a controllare e configurarle ad un livello elevato”.

La scelta più ovvia, prosegue, era quella di tentare di adattare un linguaggio già pronto , come il Python o il LUA : “Sono tutte soluzioni valide, utilizzate spesso anche dalla industria dei videogiochi per configurare l’intelligenza artificiale del bit – racconta – Ma sono tutte pensate con un taglio leggermente diverso rispetto a quello di cui avevo bisogno: piuttosto che studiare qualcosa di non mio, con il rischio di non riuscire ad adattarlo e non ottenere le performance desiderate, ho deciso di costruire un nuovo linguaggio che mi garantisse lo scambio di informazioni ad alte prestazioni”.

Strada facendo, le cose sono andate meglio del previsto: l’approccio seguito garantiva prestazioni interessanti , sia a livello di applicazione che di interazione con il sistema operativo. Merito di una macchina virtuale molto efficiente, tra le migliori in circolazione nonostante si tratti ancora di una versione preliminare non ottimizzata (“Ci concentreremo su questo aspetto nella prossima release 0.9” chiarisce Niccolai), ma anche grazie ad una strada poco battuta per quanto attiene la pesantezza delle istruzioni: “Ogni istruzione della VM Falcon è complessa: con una sola istruzione è possibile fare più cose rispetto a quanto si fa con altri linguaggi”.

Questo si tramuta in un vantaggio operativo, poiché diviene possibile gestire migliaia di script al secondo senza sovraccaricare l’unità di elaborazione : “Su macchine abbastanza potenti, e non stiamo parlando ancora di server ad altissime prestazioni, 1000 o 2000 script consumano al massimo tra il 2 e il 4 per cento della CPU”. La differenza la fa la flessibilità del paradigma di programmazione : nessun tentennamento, nessuna preferenza per il linguaggio funzionale o quello orientato agli oggetti. Falcon è in grado di supportare cinque diversi modi di programmare.

“Volevo un orientamento agli oggetti serio, ma non volevo confinarmi in questo settore – racconta Niccolai – Volevo qualcosa di elegante e performante”. Per questo in Falcon si può programmare secondo un modello procedurale puro (“senza vergogna!”), ad oggetti o funzionale: e poi ci sono altri due modelli, più moderni e recenti, che possono offrire nuovi spunti e nuove possibilità agli sviluppatori. È il caso del modello orientato ai messaggi : “Significa dichiarare la propria volontà di ricevere questi messaggi e avere la possibilità di inviarli al motore che li interpreta: significa effettuare delle chiamate senza sapere chi risponderà”. Se c’è una funzione che è in grado di fornire le informazioni richieste, sarà lei stessa a farsi avanti per fornire i suoi servigi.

“I primi 3 modelli da soli bastano a sviluppare un programma completo: ma ci sono situazioni – spiega Niccolai – dove è meglio avere la possibilità di scegliere, perché in questo modo cresce esponenzialmente il numero di cose che è possibile realizzare”. All’interno dello stesso codice i diversi paradigmi possono coesistere liberamente, e anche se non sfruttati appieno non influiscono sull’efficienza del programma. Nonostante la definizione del paradigma a messaggi non sia stata del tutto completata, c’è un’altra modalità interessante in gioco: “Nella versione 0.8.12 introdurremo anche il paradigma per tabelle” annuncia Niccolai. Dietro questa definizione si nasconde un concetto accattivante, cioè ridefinire le caratteristiche di una classe , di un oggetto o di un intero programma soltanto aggiungendo una riga ad una tabella : “Si semplifica l’interfaccia delle classi, si aggiungono logiche di funzionamento nuove senza dover modificare l’intero codice: il bello è che ciascuna cella della tabella può contenere qualsiasi cosa, da una classe a una funzione, o persino un intero altro programma”.

Esempio di codice scritto in Falcon Con questa sua natura eclettica, il Falcon potrebbe trovare spazio in molti settori: “Io lo utilizzo sul luogo di lavoro per il controllo di applicazioni finanziarie, ma anche in ambienti come il web potrebbe essere molto utile”. Con Falcon si possono realizzare programmi a se stanti, oppure lo si può utilizzare per costruire siti dinamici come quelli che oggi si scrivono in PHP o ASP. E poi ci sono le applicazioni che sfruttano l’intelligenza artificiale, che possono trarre vantaggio dalla possibilità di utilizzare paradigmi e logiche variabili, e c’è anche la programmazione genetica : “Il bello è che tutto può essere mescolato, perché tutto è stato studiato per trasferire intere classi tra diverse applicazioni in maniera nativa”.

Imparando un solo linguaggio si potrebbe dunque ottenere buoni risultati in molti settori: “Abbiamo ottenuto un sistema abbastanza flessibile, che unisce e compenetra i diversi paradigmi senza lasciarli isolati l’uno dall’altro: si può utilizzare quello che si preferisce oppure, meglio, integrarli tra di loro”. Il problema è che al momento il motore è pressoché completo, mentre Falcon è un po’ carente nel comparto librerie : “Mancano ad esempio quelle per interfacciarsi a LDAP, oppure quelle per la gestione delle finestre grafiche: ci stiamo lavorando, ma porta via tempo e non siamo tantissimi”.

Niccolai invita tutti coloro che sono interessati a farsi avanti: Falcon è disponibile sia con licenza GPLv2, dunque totalmente rispettoso dei criteri OSI e per questo già incluso in diverse distribuzioni Linux, sia con una licenza scritta appositamente per consentirne l’utilizzo in applicazioni commerciali . L’obiettivo è arrivare presto alla versione 1.0: “Il complesso di quanto è stato scritto è ben ingegnerizzato è robusto: ora occorre completare la definizione dei paradigmi e, soprattutto, iniziare l’ottimizzazione – conclude Niccolai – Siamo uno dei linguaggi di scripting più veloci in circolazione, ce la battiamo con chi ha diverse major release e 10 anni di sviluppo alle spalle”. Niente male, come inizio.

a cura di Luca Annunziata

Link copiato negli appunti

Ti potrebbe interessare

12 06 2008
Link copiato negli appunti