<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2015-01-14 14:25 GMT+01:00 enrico franchi <span dir="ltr"><<a href="mailto:enrico.franchi@gmail.com" target="_blank">enrico.franchi@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><span class=""><br><div class="gmail_quote">2015-01-14 11:06 GMT+00:00 Manlio Perillo <span dir="ltr"><<a href="mailto:manlio.perillo@gmail.com" target="_blank">manlio.perillo@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Il multiple dispatching è il mio preferito, perchè è una generalizzazione dei singolo dispatch +- overloading.  Però è disponibile in pochissimi linguaggi, magari c'è la fregatura...</blockquote></div><br></span>Io vedo due problemi principali nel MD. In primo luogo, che dal punto di vista dell'implementatore (e qui me ne frego abbastanza) e' una cosa parecchio piu' complessa, se si vuole farla efficientemente. Vedi per esempio la discussione di Alexandrescu su come farla in C++... </div></div></blockquote><div><br></div><div>Non conosco i dettagli in Julia, però se l'hanno implementata significa che non era troppo complessa da farlo (alcuni degli autori non mi sembrano esperti di teoria dei compilatori).<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra">per farla efficiente e' veramente un dolore (e ci sono limitazioni). Se poi invece che una feature "un po' complicata da aggiungere" (vedri come fanno in C++ o come puoi fare in Python) e' pronta nel linguaggio e il programmatore tipo non e' il classico hacker lisp ... io vedo una ricetta per il disastro dal punto di vista della piattaforma.</div><div class="gmail_extra"><br></div></div></blockquote><div><br></div><div>Julia allora è un buon banco di prova.</div><div>I tipici utenti non sono programmatori esperti (nel senso di ingegneria del software), anche se però non sono dei semplici utenti occasionali.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"></div><div class="gmail_extra">Poi sono d'accordo con te che e' la cosa migliore possibile. Pero' gia' fino a qui puo' andare male in due punti (efficienza e pragmatica).</div><div class="gmail_extra"><br></div><div class="gmail_extra">Poi c'e' il classico problema che se non metti altri limiti (vedi per esempio un qualche tipo di restrizione semi-artificiosa tipo essere nello stesso package)</div></div></blockquote><div><br></div><div>Quello riguarda i metodi in Go, non il MD.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"> rischi di avere problemi su come md di metodi "estesi" da persone differenti, senza contesto possano spaccare cose random.</div></div></blockquote><div><br></div><div>Julia permette di aggiungere metodi senza restrizioni, perchè è una cosa essenziale, quando, ad esempio, un modulo esterno definisce un nuovo tipo di AbstractArray e deve cooperare con il resto del sistema.</div><div><br></div><div>Però la documentazione garantisce che i potenziali conflitti dovrebbero essere tutti</div><div>rilevati.  Tra l'altro in Julia non c'è la promozione automatica dei tipi, quindi le cose si semplificano (mentre in C++ lo vedo come un incubo).</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"> In un certo senso il problema e' che potenzialmente hai l'equivalente di poter aprire classi per modificarle (e abbiamo visto come funziona bene in Ruby... ewk), ma su cose per definizione fuor di namespace. </div><div class="gmail_extra"><br></div></div></blockquote><div><br></div><div>Non ho mai studiato Ruby.  Cosa intendi con "aprire le classi"?</div><div>Tra l'altro ho notato che in Julia non sembra ci sia modo di proteggere</div><div>lo stato interno di un oggetto, sia tramite convensioni che tramite supporto del linguaggio.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"></div><div class="gmail_extra">Cioe', ci sono probabilmente modi di fare il tutto bene e tranquillo... ma ci vuole disciplina sia dall'implementatore (e va bene) sia soprattutto dal programmatore. Vanno trovati quali sono le limitazioni che rendono la feature sana, ma che al contempo non sono eccessivamente restrittive.<span class="HOEnZb"><font color="#888888"><br><br clear="all"></font></span></div></div></blockquote><div><br></div><div>Come detto, non abbiamo abbastanza dati per capire se MD vada bene.</div><div>Del resto molte delle cose che sembravano buone si sono rilevate cattive non appena i sistemi hanno cominciato a scalare sia in termine di linee di codice che di programmatori.</div><div></div></div><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">Ciao  Manlio</div></div>