<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">2015-05-25 10:16 GMT+01:00 Luca Bacchi <span dir="ltr"><<a href="mailto:bacchilu@gmail.com" target="_blank">bacchilu@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">    perchè OCaml non ha sfondato, che è una figata totale?<br></div><div class=""></div></blockquote></div><br>Perche' e' sperare di mettere su un team e di mantenerlo di sviluppatori OCaml non e' esattamente banale. Ci si rivolge ad una fetta di mercato piccola e buon gustaia. Che ovviamente crea problemi ad una diffusione su larga scala e invoglia nicchie specifiche. </div><div class="gmail_extra"><br></div><div class="gmail_extra">Tra l'altro lo sviluppatore medio non ha nessuna speranza di padroneggiare OCaml "on the job" (non e' come fare training ad un Rubysta su Python o viceversa). Si, parlo di quel tipo di sviluppatore che quando gli chiedo come risolvono le collisioni un hash map mi guarda stranito, che non sa calcolare la complessita' del suo algoritmo, che quando gli chiedo di passare da ricorsivo ad imperativo o viceversa sembra che gli abbia tritato un gattino sulla tastiera, che se deve disegnare un modello ad oggetti viola sistematicamente OCP e abusa dell'ereditarieta', che va bene se ha idea di come funzionano i DNS, ma non va oltre al fatto che "in qualche modo" traducono i nomi in IP, etc etc etc.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Viceversa, se gli do in mano, per dire Python, qualcosa che apparentemente funziona ne esce. Poi certo... se salta fuori che devo supportarlo io mi licenzio flippando il tavolo, ma appunto... non devo mantenerlo io. :)</div><div class="gmail_extra"><br></div><div class="gmail_extra">Poi, tornando ad OCaml su motivazioni non business... ha concorrenza spietata da Haskell, che riesce a vendersi come molto cool. Io personalmente lo trovo davvero complicato (effetto C++) rispetto ad SML o anche allo stesso Haskell. Nota, non e' una questione "non e' fatto bene", ma ci sono un sacco di complicazioni accessorie (e di tooling) che vengono ancora prima di affrontare cose complicate (come disegnare un'applicazione robusta).</div><div class="gmail_extra"><br></div><div class="gmail_extra">Poi una serie di problemi di outreach della community (<a href="http://www.amazon.com/Real-World-OCaml-Functional-programming/dp/144932391X/">http://www.amazon.com/Real-World-OCaml-Functional-programming/dp/144932391X/</a>, anno 2013 vs. <a href="http://www.amazon.com/Real-World-Haskell-Bryan-OSullivan/dp/0596514980/ref=sr_1_1?s=books&ie=UTF8&qid=1432560312&sr=1-1&keywords=Real+World+Haskell">http://www.amazon.com/Real-World-Haskell-Bryan-OSullivan/dp/0596514980/ref=sr_1_1?s=books&ie=UTF8&qid=1432560312&sr=1-1&keywords=Real+World+Haskell</a>, anno 2008, seguito dal bellissimo <a href="http://www.amazon.com/Learn-You-Haskell-Great-Good/dp/1593272839/ref=pd_sim_14_2?ie=UTF8&refRID=0JWMVAQKWV1ZDAR4TEK5">http://www.amazon.com/Learn-You-Haskell-Great-Good/dp/1593272839/ref=pd_sim_14_2?ie=UTF8&refRID=0JWMVAQKWV1ZDAR4TEK5</a> 2011).</div><div class="gmail_extra"><br></div><div class="gmail_extra">Il tipo di persone a cui piacciono quel tipo di cose e' molto piu' facile che sia cascato su Haskell. E la mia impressione e' che sebbene switchare non sia veramente complicato, non dia nemmeno ritorni di investimento particolarmente interessanti.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Come a dire, per me Python e Ruby sono relativamente equivalenti. Preferisco di gran lunga Python per una serie di motivi (piu' culturali che pratici). Ho imparato prima Python (che potrebbe avere influito sulle mie preferenze). Se devo lavorare in Ruby lo faccio; ma mettermi a tenere fresco Ruby non mi interessa. Non mi da nessun valore aggiunto. Cosa che invece mi da skillarmi in Erlang, in Haskell o in Go. <br clear="all"><div><br></div>-- <br><div class="gmail_signature"> .<br>..: -enrico-</div>
</div></div>