On Sun, Apr 15, 2012 at 12:52 PM, Nicola Larosa <n...@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- _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python