<br><br><div class="gmail_quote">2011/12/29 Carlo Miron <span dir="ltr"><<a href="mailto:miron@python.it">miron@python.it</a>></span></div><div class="gmail_quote"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">
> Personalmente non ne sento il bisogno, ma non e' completamente chiaro<br>
> perche' non ci sia.<br>
<br>
</div>Perche` ci sono i dict?<br></blockquote><div><br></div><div>Non sono convinto che ci sia una correlazione. Mi spiego... switch e dict hanno sicuramente uno use-case comune.</div><div>Pero' strutturalmente stiamo comparando un costrutto di controllo di flusso con una struttura dati. </div>

<div><br></div><div>*Sicuramente* Python ha i dict e il pattern standard per sostituire uno switch e' un dict[0].</div><div><br></div><div>Pero' di per se, siccome un dict potrebbe, con le stesse tecniche, sostituire anche un if. Eppure nel caso di if si e' (giustamente) deciso che era meglio lasciarlo li. Ovviamente sarebbe stato poco pratico non avere if.</div>

<div><br></div><div>La mia personale idea e' che lo switch non sia stato messo e basta e *poi* e' stato "scoperto" il giochino con i dict. Posso ovviamente sbagliare.</div><div><br></div><div>-----</div>

<div>[0] in realtà in OOP e' un po' che ci si scaglia contro abuso di if e switch -- specie switch su variabile di stato -- in favore di altri costrutti piu' OOP. Di fatto un dict semplifica alcuni use-case che in OOP generica si fanno con una classe/strategy e rende bruttini altri -- che si possono continuare a fare con una classe/strategy --</div>

<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">True. Ma hai usecase in cui uno statement switch sarebbe la cosa giusta™?<br></blockquote><div><br></div>

<div>Non davvero. Forse si riesce a trovare il caso specifico, ma non e' che sia molto rilevante.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">
> Ma non e' che direi che Python sarebbe "peggiore" se avesse uno switch.<br>
<br>
</div>Ok. Ma probabilmente non sarebbe "migliore". E questo IMHO e`<br>
sufficiente per non.<br></blockquote><div><br></div><div>Anche per me.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
>  Pensa, io trovo molto sensata la mancanza di ereditarietà multipla. Primo,<br>
> per averla ad minchiam come in C++ e' meglio non averla.<br>
<br>
</div>Concordo. *Ma* nel caso di Python trovo sensato il permettere<br>
l'ereditarieta` multipla piuttosto di specialcasizzare classi ed<br>
interfacce. Ma magari sbaglio, boh.<br></blockquote><div><br></div><div>Se sbagli, siamo in due.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">


> Ma no... non e' che "ha qualcosa che non va". E' semplicemente concepito<br>
> diversamente. Smalltalk, giocaci senza IDE.<br>
<br>
</div>Eh, grazie al cazzo, riko. Allora tira fuori anche l'altro caso limite, FORTH.<br>
No, spiace, nessuno dei due giustifica l'(ab)uso di IDE da parte di Java e C#.<br>
Entrambi usano la metafora del file, e pertanto dovrebbero essere<br>
decentemente usabili con un editor. No.<br></blockquote><div><br></div><div>Eh, che devo dire. Poi anche qua vorrei spezzare una lancia.</div><div>Java senza IDE e', a mio avviso, una rottura per *tre* motivi. </div>

<div><br></div><div>1. la storia dei package. e immagino che senza gli IDE semplicemente si sarebbe diffuso meno l'uso di usare i package (cosa che io trovo piuttosto buona). E qui il problema e' quando sposto un file in due parti diverse. Pero', a diversi livelli lo stesso problema e' presente anche in Python e in tutti i linguaggi che non separano completamente il nome di un modulo dal nome del file dove si trova. E poi e poi.</div>

<div><br></div><div>2. Quelli che hanno scritto la libreria standard hanno parlato poco fra loro e ci sono un sacco di cose non ortogonali. Brutto, eh. Pero' questa e' una cosa che a vari livelli capita anche in altri linguaggi: magari la libreria standard e' fatta meglio, pero' le librerie esterne comunque hanno nomenclatura da ricordare.</div>

<div><br></div><div>3. import esterni: ma qui, devo dire, e' un problema che volendo abbiamo in tutti i linguaggi. E' che e' oggettivamente piu' comodo scrivere collections.defaultdict e avere l'IDE che ti chiede se vuoi importare il modulo collections che non averlo e dovere 'ioimport collections[ESC]''. E qua con vim va anche bene... prendi un editor appena da meno e vedi che smazza.</div>

<div><br></div><div>Il problema e' che gli IDE Java fanno un sacco di roba che sarebbe bello facessero anche quelli per Python. E sono cose che temo strutturalmente non possono fare ed e' qualcosa che pago volentieri per gli altri vantaggi di Python. Pero' se fosse possibile, sarebbe meglio e basta. IMHO.</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Non ha nulla che no va, *soprattutto* nella sintassi. Che puo` non<br>
piacere, percaritadiddio, ma e` abbastanza inattaccabile.<br></blockquote><div><br></div><div>Non la sto attaccando. Ho detto solo che la sintassi non mi piace particolarmente. :)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Appunto. Quindi, checcentra con Java e .Net?<br></blockquote><div><br></div><div>Principalmente che una parte dell'elite smalltalkiana si e' spostata su Java e poi hanno fatto Eclipse.</div><div>Io credo che queste persone abbiano avuto un forte influsso su Java.</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
> Certo, il fatto che un linguaggio richieda tools molto sofisticati può<br>
> essere un indice di un qualche problema. Per esempio del semplice fatto che<br>
> e' verboso. E' una cosa che in genere mi scrota, ma a volte amen.<br>
<br>
</div>Definisci "amen", please. :P<br></blockquote><div><br></div><div>C'e' di peggio. Voglio dire Perl e' meno verboso di Python, eppure...</div><div>Quindi la semplice verbosità non e', dal mio punto di vista, un problema.</div>

<div><br></div><div>Il problema e' che la gente ha scritto Java verboso *concettualmente*, non solo sintatticamente. Ma non e' un problema del linguaggio, e' di quelli che lo usano. D'altra parte Java non potrebbe avere reflection diversa da quella che ha volendo mantenere il suo "security model" e le famigerate checked exceptions.</div>

<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">> Come editor dopo tanti esperimenti mi sto adagiando su vim.<br>
<br>
</div>/me mette un braccio intorno alle forti spalle di riko, si volta verso<br>
teknico, e sorride.<br></blockquote><div><br></div><div>/me sorride pure...</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">> Fatto sta che ormai Java lo conosco bene, so come muovermici intorno e mi e'<br>
> piuttosto comodo.<br>
<br>
</div>Brr. Esci da questo corpo.<br></blockquote><div><br></div><div>LOL... :)</div><div>In realta' le cose che piu' mi mancano (nel linguaggio) sono first order functions e lambda.</div><div>Marginalmente i generatori.</div>

<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
> Non so su C#... ma su Java non e' particolarmente scomodo.<br>
<br>
</div>Nel senso che non sei costretto ad inginocchiarti sui ceci, giusto?<br></blockquote><div><br></div><div>Probabilmente mi sono perso qualcosa... da qualche tempo anche Java ha il for su iterabile.</div><div>Ok, mancando delle tuple sulle Map e' subottimale, ma non eccessivamente drammatico.</div>

<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Ridefinisci "amen", please. :PP<br></blockquote><div><br></div><div>Dai, non e' la cosa peggiore. In Python abbiamo vissuto per un po' senza la sintassi dei sets, per dire. </div>

<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
> Oggettivamente a seconda del codice che scrivi puö facilmente capitarti<br>
> molto poco di lavorare a quel livello di astrazione.<br>
><br>
> A me capita spesso.<br></div></blockquote><div><br></div><div>EEEh?</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">> Aspetta pero'. Questi sono una serie di aspetti complicatissimi. Uno, quello<br>
> che fa esr e' poco esplicativo. Probabilmente con la testa che ha prende su<br>
> K in 4 giorno invece che 2.<br>
<br>
</div>Eh?<br></blockquote><div><br></div><div>Il linguaggio K.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
> Il problema e' chi sei prima di impararlo. Mi spiego: se sei un cattivo<br>
> programmatore prima di imparare Python, impari Python in 3 giorni e continui<br>
> ad essere un cattivo programmatore. Adesso scriverai cattivi programmi in<br>
> Python invece che in VB! :)<br>
<br>
</div>Beh, suvvia, e` un minimo migliorameno, comunque :P<br></blockquote><div><br></div><div>Che puo' peggiorare la mia qualità della vita, pero! :)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div class="im"><br>
> Pero' se hai un team ben agguerrito su Java, che sa il fatto suo in Java non<br>
> sono convinto che passando a Python diventeranno improvvisamente molto piu'<br>
> produttivi. per tutta quella serie di menate ambientali che uno impara piano<br>
> piano con il tempo.<br>
<br>
</div>Io invece sono ragionevolmente convinto che *non* sia vero, purtroppo. Amen (!)<br></blockquote><div><br></div><div>Dici?</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div class="im">> Scusa, non sono d'accordo. Contestualizziamo. C# e' un linguaggio ad<br>
> oggetti. Mi risulta anche uno piuttosto pulito.<br>
<br>
</div>Certo, se non ti piace la sintassi di Smalltalk... :P<br></blockquote><div><br></div><div>Non e' che non mi piace, non mi fa impazzire. Preferisco la sintassi di Python, o quella di Lisp.</div><div>Poi in Smalltalk non ho scritto 2 righe di codice 2, quindi e' difficile che il mio parere sia forte in proposito.</div>

<div> </div></div><div><br></div>-- <br> .<br>..: -enrico-<br>