Dato che il mio blog è morto (evviva tophost.it) vi rompo le palle qui :-)
Oggi dopo aver dannato mmap su MacOSX e FreeBSD e non aver ancora trovato la soluzione ad un rognoso bug che non dipende nemmeno dal mio codice ho deciso di smanettare un pò con il progetto "padre" per cui sto facendo il Summer Of Code. Non che fosse la prima volta, ma stavolta ho deciso di provare i backend alto livello.
Spiego velocemente cosa significhi: il progetto per cui programmo è finanziato dall'UE e ha obiettivi molto alti e in parte "fantascientifici" ma pian piano li sta raggiungendo anche grazie all'apporto di nuove persone della community Python. Tra questi obiettivi c'è quello di "translation", cioè poter tradurre codice Python in N linguaggi target. Ora come ora è possibile tradurre TUTTO in C e in LLVM grazie ai rispettivi backend low-level. Ora immaginate che il vostro bel programmino Python debba girare sulla nuova fiammante versione di MS .NET... cosa fate? Oggi lo si riscrive e via, ma un giorno basterà chiamare il metodo compile_cli() dopo aver caricato il sorgente nel "traduttore" per generare IL e file exe .NET che è quello che ho fatto oggi pomeriggio :-) Ho scritto un programmino stupido, l'ho tradotto in .il e .exe, ho installato Mono su MacOSX, ho eseguito il .exe e ha funzionato alla perfezione, ho spostato con ssh il .exe su Linux e ripetuto l'esperimento e poi rifatto la medesima cosa con WinXP e .NET 2.0 e boom! posso scrivere codice Python e tradurlo in .NET senza frizzi e lazzi. Scordatevi di Python.NET e IronPython (ottime idee ma secondo me questa è la strada giusta), il backend CLI sviluppato da Antonio Cuni (guardacaso c'è un italiano dietro a tutto questo ;-) è una figata.
Tanto per aggiungere carne al fuoco esiste anche un backend in sviluppo Javascript che per tutta sta AJAX-mania potrebbe tornare utile: scrivo in Python, genero Javascript e apro il browser per testare :-)
Gli altri backend in progress sono Squeak (una versione di Smalltalk opensource), Common Lisp e forse ho trovato un pazzo che comincerà il backend per la JVM ;-)
Ah se la gente fosse capace di farsi pubblicità. Ecco qui: http://codespeak.net/pypy/dist/pypy/doc/translation.html#the-object-oriented-backends
ps. pypy è un progetto molto complesso che io non ho neanche compreso per intero e cui obiettivi vanno ben al di la del solo task di traduzione a cui ho accennato. Magari alla maggior parte di voi non fregherà una mazza ma io trovo che questo progetto faccia parte del futuro ;-)