[Python] python tools 4 visual studio

enrico franchi enrico.franchi a gmail.com
Sab 21 Apr 2012 15:22:54 CEST


On Sun, Apr 15, 2012 at 12:52 PM, Nicola Larosa <nico a teknico.net> wrote:
> enrico franchi wrote:
>> Stavo pensando di obiettare poi ho pensato a tutto il codice Clojure
>> che ho riscritto in Java negli ultimi 2 anni.
>
> Bella provocazione, mordo: come mai?

Uhm... discorso lungo. Parte del problema e' che quando mi sono
interessato a Clojure, il linguaggio era meno maturo di oggi. In
particolare, i messaggi di errore erano drammatici. Anche la doc non
e' che sia eccezionale.

In generale ho sempre avuto idea che per fare una certa cosa ci sono
circa 3-4 modi diversi di cui al piu' uno e' chiaro che e' sbagliato.
Gli altri no. E spesso ho avuto idea che quale fosse quello giusto
cambiasse nel tempo.

Il principale problema e' pero' a mio avviso un impedance mismatch fra
funzionale e object-oriented. Il problema e' che mentre clojure e'
molto divertente per scrivere sistemi clojure al 100%, mi sono trovato
in difficolta' quando in qualche modo parte del sistema ha una logica
pesantemente OO. Quello che ci sarebbe da fare sarebbe introdurre uno
strato intermedio *ben* pensato (non come certe librerie che girano
che piu' che altro mappano alla brutto cane mutabile -> immutabile +
mutabile in dosync).

La cosa piu' drammatica l'ho trovata su una libreria per lavorare con
un nosql. Beh, in pratica l'API clojure era fica, pulita e funzionale.
Solo che, *in pratica* aveva completamente nascosto una serie di
dettagli non documentati. Sono riuscito a farla funzionare *dopo*
avere imparato come funzionava l'API Java. Va da se che a quel punto
avevo gia' riscritto tutto in Java.

In generale la mia idea e' che Clojure abbia una serie di features
molto belle, ma allo stesso tempo e' troppo vicino a Java e se ne
distacca troppo. Come feature chiama facilmente Java, ma di fatto
anche buona parte dei suoi problemi sono in quell'area. Anche quando
scoppia un'eccezione, vedi un traceback Java... io vorrei che Java
fosse in un cassetto della mia scrivania. Se proprio ci voglio
rovistare ci vado io di mia spontanea volonta' (come e' C per Python:
se voglio scendo, ma non mi e' praticamente mai capitato lato Python
un problema risolvibile solo capendo cosa sta facendo lo strato C
sottostante).

Per dire, quando ho giocato con Jython e JRuby, non ho avuto grossi
problemi. A volte le API delle librerie che usavo sembravano pesanti e
pallose... ma librerie pesanti e pallose le ho avute anche in Python
puro, diciamo che uno non se ne accorgeva davvero. O meglio, se ne
accorgeva, ma solo perche' uno lo sapeva. Oh, poi in tutti i casi ci
sono cose strambe. La chiacchiera fra Clojure e Java e' piu' robusta
di quella fra Jython e Java, IMHO (anche perche' Jython ha dovuto
mappare un linguaggio esistente, Clojure lo ha creato in base a quello
che c'era).

-- 
.
..: -enrico-


Maggiori informazioni sulla lista Python