F2PY rulez!

I recently found some old Fortran code from the paper Algorithm AS197 A Fast Algorithm for the Exact Likelihood of Autoregressive-Moving Average Models (Melard 1984) [pdf] [code].

I’m not very fluent in Fortran77 and I don’t like the idea of rewriting a well tested piece of code introducing new bugs, so why not give a try to F2PY?

F2PY is a tool that provides an easy connection between Python and Fortran languages. F2PY is part of NumPy.
F2PY creates extension modules from (handwritten or F2PY generated) signature files or directly from Fortran sources.

Continue…

Dietro Dive Into Python 3

Oggi ho notato il sito diveintopython3.org.

Incuriosito dal footer:

This site is optimized for Lynx just because fuck you.
I’m told it also looks good in graphical browsers.

© 2001-4, 2009 ℳark Pilgrim, CC-BY-3.0

Sono andato a guardare nei sorgenti della pagina ed ho trovato questa interessante riflessione:

<!-- As I write this, the year is 2009, and the internet is STILL a battleground of so-called "intellectual property" disputes. Some people would have you believe that without proper financial incentives, music, literature, and software would disappear. After all, who would make music if they can't make money on it? Who would write? Who would program?

I know the answer. The answer is that musicians will make music, not because they can make money, but because musicians are the people who can't not make music. Writers will write because they can't not write. Most of the people you think of as artists are really just showmen. They collect a paycheck and go home at 5 o'clock. That's not art, that's commerce.

I've been programming since 1983 and releasing my code under Free Software licenses since 1993. I've been writing and publishing under Free Content licenses since 2000. I can't imagine not doing this. If you can imagine yourself not doing what you're doing, do something else. Do whatever it is you can't not do. -->

iPhone TPM? Linguaggi interpretati all’arrembaggio!

La voglia è tanta… ma questa cosa del TPM rende mooolto più facile la tattica della “volpe e l’uva”!

Da sviluppatore è proprio inconcepibile avere un oggetto, con un sistema operativo, un SDK, ottima documentazione, e… non poter provare un programma sul MIO dispositivo senza avergli fatto fare una giratina virtuale per prendere una firma a Cupertino (99€/anno per lo scomodo)!!

Poi un pensiero: «Perché mai iPhone è uscito senza Java?»

Ma è facile, perché con Java basta avere una Virtual Machine firmata per far girare tutti i programmi del mondo, e ciao ciao AppStore! Stessa cosa per Python-Ruby-Perl!

Quindi TPM mio caro, non hai un gran futuro! (spero!, non ho indagato a fondo, ma credo che il controllo sia per processo e non per… boh, sul linking dinamico o che sò)

Continua a leggere

Cython rocks

Ho cominciato a lavorare sul serio all’università, in laboratorio si macinano proteine, tante, ed il povero Python non regge il passo.

Durante la sosta forzata mi sono baloccato con OCaml, e devo dire che è un linguaggio interessante, anche se per ora non sono ancora riuscito a realizzare un qualcosa di funzionante :/ !

Uscito da gesso e riabilitazione, ho cominciato a studiare le “nuove” reti neurali (deep neural networks), e ne ho implementata una in poche paginate in Python.

Però la velocità è quella che è… allora è partito il pellegrinaggio:

  1. Ho riscritto il tutto in OCaml, ma c’è un bug che non fa convergere nulla… e non lo trovo!
  2. Ho provato pypy, per vedere se il mio codice era abbastanza RPython… ma non lo era
  3. Ho provato ShedSkin, ma anche per lui il mio codice non era abbastanza statico.

Allora mi sono arreso, l’inferenza ancora non è gratuita, e mi sono “abbassato” a buttare giù tipi e gestire la memoria, in Cython!

Adesso, avendo reimplementato solo la classe Layer, l’apprendimento ha una velocità decente, il codice resta leggibile, non ho “esportato” il bug della versione in OCaml ed ho spazio per ulteriori ottimizzazioni senza perdere le comodità di Python!

Yuppie!