The Body Says No
È giunto il momento di rivelare al mondo, e alle anime belle che lo abitano, una verità orrenda, per troppo tempo taciuta da Chi Sa:
Python Fa Schifo e Chi l’Ha Scritto Va Tumulato Vivo Sotto Una Colata di Cemento a Presa Rapida
Certo, il linguaggio in sé è moderatamente carino, ma appena tenti di muoverti sotto l’interprete, per scrivere un modulo di interfaccia tra una libreria C e Python, l’idiozia della API Python/C e l’assenza di messaggi di errore significativi rendono il lavoro con Python una tortura - e dimostrano un’amatorialità degna di Ruby. Un’ora di questa tortura e rimpiango le macro criptiche e l’assenza di documentazione delle API del Perl. Per un linguaggio che si vanta di seguire il dogma del better explicit than implicit, le API C sono il trionfo della perversione mentale, della rottura all’indietro, dell’inconsistenza nelle naming policy e della mancanza di utilità.
Ovviamente, ognuno è libero di pensarla diversamente; sono convinto che Pythonisti arriveranno qui nel tentativo di mostrarmi la Retta Via Verso l’Illuminazione. Per me, tuttavia, e per i miei scopi non esiste differenza tra il lavorare per mezza giornata con Python e darmi delle vigorose martellate sui coglioni.
Adesso mi sento molto meglio. E no, Python continua a farmi schifo.
curson said,
January 18, 2007 @ 20:03
Una differenza c’è: le martoriate fanno rumore. Il ritmo aiuta a passare il tempo :p
curson said,
January 18, 2007 @ 20:06
…ti giuro che non so come il mio cervello abbia comandato alle mie dita di scrivere “martoriate“. Pensavo “martellate” ed è uscito quello: ho idea che le API C/Python non siano le uniche cose che avrebbero bisogno di messaggi di errore più chiari ;)
Marco Barisione said,
January 18, 2007 @ 20:57
Eviterò di mostrarti la Retta Via Verso l’Illuminazione ma ti chiedo: per cosa usi Python? Clutter? Potresti bloggare un po’ di più su clutter, noi siamo curiosi!
zefram said,
January 18, 2007 @ 21:00
marco: esatto, sto scrivendo i binding di clutter :-) vedrò di scriverne quanto prima - sono ancora in botta per la release di oggi.
Lawrence Oluyede said,
January 18, 2007 @ 22:34
Eddai mi sembra un po’ esagerato dire che fa schifo perché l’API C è una rottura :P
Hai provato a usare pyrex?
http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/
Oppure puoi usare ctypes se devi fare chiamate al sistema.
Se devi wrappare librerie o usi ctypes o swing python.
Fammi sapere!
zefram said,
January 18, 2007 @ 22:55
lawrence: non posso usare pyrex o ctypes - devo usare l’aggeggio per i binding delle librerie basate su gobject, da quello non si scappa. quindi: autogenerazione del codice, python/c api e pedalare.
ad ogni modo, non so se si è capito: il linguaggio python non è brutto; è l’interprete python a fare schifo.
Lawrence Oluyede said,
January 19, 2007 @ 00:24
Si si ho capito che a te non piace il reference counting :-P
Nemmeno a me piace l’API Python per inciso. Il fatto che ruby sia mark & sweep porta notevoli vantaggi in quanto ad API.
Buon divertimento e se hai problemi fai un salto su it.comp.lang.python che qualcuno volenteroso lo trovi a rispondere
.mau. said,
January 19, 2007 @ 09:26
D’altra parte, la Vera Interfaccia per i messaggi di errore è quella di ed(1): tersa e coerente.
Ikitt said,
January 19, 2007 @ 09:44
l’API di CPython l’ho vista di sfuggita (ho rischiato di scrivere un modulo, poi ho risolto in puro python e usando la stdlib -per il mio caso e` bastato), ma devo dire che ad una primissima occhiata ho avuto impressioni pericolosamente simili alle tue. Tanto bello (almeno per chi scrive :P) sopra la scorza l’interprete, tanto brutto sotto?