[Python] 2 neo pythonisti che affrontano un orda barbara di javisti - con quasi-rissa finale

Alan Franzoni mailing a franzoni.eu
Gio 31 Mar 2011 18:52:48 CEST


2011/3/31 Marco Beri <marcoberi a gmail.com>:
> 2011/3/31 Roberto De Ioris <roberto a unbit.it>
>>
>> P.S. Javisti che avete SCELTO java, non sentitevi offesi, non ho davvero
>> conosciuto nessuno di voi quindi non mi assalite, tanto non saprei cosa
>> rispondervi :)
>
> Tranquillo: non esistono :-)

Balle. Io, pythonista convinto, mi inserisco in tackle sulla
discussione per spezzare una lancia nei confronti di Java.

L'impressione (brutta) che ho, ultimamente, e che i pythonisti si
sentano un po' troppo fighi, e spesso e volentieri senza conoscere
Java a fondo. Mi è capitato più di una volta al dire "beh, in Java si
fa così e funziona" di sentirmi rispondere cose tipo "ah, Java,
enterprise, sux, non conosco Java" ecc. ecc. ovvero: invece di
guardare alla realtà, e cercare di *migliorare* guardando alle
tecnologie già esistenti che risolvono un certo problema, si decide di
reinventare la ruota con soluzioni non sempre adeguate.

Qualche esempio?

Packaging & dependency management. Maven è qualche ordine di grandezza
più avanti di setuptools/distribute/pypi e quant'altro, e consente di
utilizzare tonnellate di dipendenze esterne - risolvendo anche
eventuali conflitti di versione - senza impazzire. Con setuptools
oltre all'impossibilità di gestire versioni in conflitto c'è il fatto
che su pypi  si possono rimuovere i pacchetti già caricati e
addirittura ricaricarne altri - diversi - con la stessa versione.
Risultato: un progetto che oggi funziona, fra sei mesi, identico,
potrebbe non funzionare più perché le dipendenze non si risolvono
correttamente.

API: python ce ne ha poche, troppo poche. Mi vengono in mente WSGI e
la DB-API. Le noiosissime mille API di Java hanno un vantaggio: sono
API, sono standardizzate, sono condivise. Ti puoi veramente sbattere
le balle di quale implementazione stai usando; la configurerai più
avanti.

Specifica standard per il runtime: vi è mai capitato che su una certa
macchina sia disponibile il modulo "asd" e su un'altra no? Tutto è
configurabile in python, certo, è più flessibile: ma non è altrettanto
semplice dichiarare le proprie dipendenze. Esiste un modo semplice - e
standard - per dire "questo script ha bisogno di python2.6, del modulo
della libreria standard asd e bef e del supporto ucs-4?"


Inoltre, ho conosciuto diversi ottimi sviluppatori Java, che quando
hanno incominciato a scrivere Python sono diventati anche ottimi
sviluppatori Python. I principi dello sviluppo e del design valicano i
confini di un linguaggio.

La spocchiosità non aiuta; credersi i più fighi serve solo a non far
vedere i propri errori.


-- 
http://www.franzoni.eu - public@[mysurname].eu
Latest blog post: Using twisted trial as a test runner with
zc.buildout http://bit.ly/fAYiQl


Maggiori informazioni sulla lista Python