<br><br><div class="gmail_quote">2011/12/28 Carlos Catucci <span dir="ltr"><<a href="mailto:carlos.catucci@gmail.com">carlos.catucci@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">Carlos ma che due balle con sta storia che Python è meglio a<br></div><div class="gmail_quote"><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="gmail_quote"><div>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
prescindere e tutto il resto è merda, </blockquote><div><br></div></div><div>Questo effettivamente e' poco motivato.</div></div></blockquote></div><div><br>Il problema reale e' che Python e' un linguaggio che mi sembra essere nato prendendo solo il meglio degli altri.</div>

</div></blockquote><div><br></div><div>Diciamo che è stato ben pensato. Purtroppo tante cose carine non possono entrarci e va bene cosi'.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="gmail_quote"><div> A volte, sopratutto all'inizio, mi sembravano assurde alcune scelte (non avere switch/select/case per dirne una), poi lavorandoci mi sono dovuto ricredere. Tutto e' fatto secondo logica. Altri linguaggi non hanno questa caratteristica. </div>

</div></blockquote><div><br></div><div>E'... ma quale e' la logica di *non* avere uno switch statement? Sinceramente non lo so.</div><div>Personalmente non ne sento il bisogno, ma non e' completamente chiaro perche' non ci sia.</div>

<div><br></div><div>Ci sono casi in cui sento profondamente che un dizionario e' la cosa giusta da usare. Casi in cui e' un pochetto meglio una classe (a me per dire un dizionario infarcito di lambda non piace mica tanto). </div>

<div><br></div><div>Ma non e' che direi che Python sarebbe "peggiore" se avesse uno switch. </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="gmail_quote"><div>Parliamodi Java, per fare un esempio. No, ereditarieta' multipla no,</div></div></blockquote><div><br></div><div> Pensa, io trovo molto sensata la mancanza di ereditarietà multipla. Primo, per averla ad minchiam come in C++ e' meglio non averla. </div>

<div>Secondo credo che in ~8-9 anni di Python l'ho usata per la prima volta 2 mesi fa. Principalmente perchè per pigrizia mentale ho copiato il design precedente di una vecchia incarnazione e non mi sono deciso a fare con strategy quello che facevo con template method.</div>

<div><br></div><div>In generale ereditarieta' di interfaccia (multipla) non mi da problemi e mi serve. Ovviamente se sono statico. In Python in un certo senso non serve in un altro e' automatica. L'ereditarieta' di implementazione la posso avere facilmente con delegazione.</div>

<div><br></div><div>Poi io sono decisamente sul lato "deleghiamo".</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote">

<div>Confcordo hai espresso meglio di me il concetto. Anche perche' spesso gli studi sono influenzati dalle idee di chi li esegue. Se lo facessi io probabilmente salterebbe fuori che Python e' il migliore in assoluto. Alla fin fine si prendono iun esame sempre le cose che piu' si adattano ai nostri modi di vedere le cose.<br>

</div></div></blockquote><div><br></div><div>Non e' detto che siano influenzati dalle /idee/ di chi li esegue. Scientificamente parlando e' un po' come affermare la malafede.</div><div>No, credo che siano facilmente influenzabili da semplici condizioni al contorno difficili da valutare. Qualunque sia il risultato.</div>

<div>Per quello mi interessava vedere gli studi.</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div class="im">

<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote">2. Io ho sempre considerato le IDE come una cosa che piu' che altro tappa i buchi di linguaggi con caratteristiche abbastanza peculiari. Linguaggi molto verbosi, con informazione ripetuta (pensa a Java e al fatto che un file deve riportare all'interno del file il path e che deve anche essere esattamente in quella posizione relativa.. e' il tipo di cose che un umano deve fare "due volte" per fare quasi la stessa cosa).</div>



</blockquote></div><div><br>Un buon IDE e' una cosa utile. Pero' se SENZA non riesci a fare una cippa (.NET ad esempio, voglio vederti a scrivere cose senza IDE sotto) allora il linguaggio ha qualcosa che non va.<br>

</div></div></blockquote><div><br></div><div>Ma no... non e' che "ha qualcosa che non va". E' semplicemente concepito diversamente. Smalltalk, giocaci senza IDE. E sinceramente, al di la che non mi piace la sintassi, non mi sembra abbia molto che non va. E' un caso estremo: e' un linguaggio che essenzialmente non e' file-based e di conseguenza un semplice editor non ce la potrebbe proprio fare.</div>

<div><br></div><div>Certo, il fatto che un linguaggio richieda tools molto sofisticati può essere un indice di un qualche problema. Per esempio del semplice fatto che e' verboso. E' una cosa che in genere mi scrota, ma a volte amen.</div>

<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div class="im"><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

<div class="gmail_quote"><div></div><div>Oppure trovo gli IDE molto sensati anche quando lavorano bene con il framework in questione (e.g., Python + Django e' molto comodo con un IDE). </div>

</div></blockquote></div><div><br>Quale? Io uso un semplice editor (Sublime Text2) pero' se devo gestire un PROGETTONE passo a Wing Ide. <br></div></div></blockquote><div><br></div><div>Ho mollato wing per PyCharm. Dovrebbero essere grosso modo equivalenti. Diciamo che usando gia' IntelliJ la cosa per me ha molto senso. E in aggiunta, come dire... GTK su mac os non e' esattamente un fiore. Più PyCharm ragiona con pypy... su cui piano piano mi voglio spostare.</div>

<div><br></div><div>Come editor dopo tanti esperimenti mi sto adagiando su vim.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote">

<div></div><div class="im"><div> </div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

<div class="gmail_quote"><div></div>Come sai non conosco .Net. Conosco abbastanza bene Java, pero'. </div></blockquote></div><div><br>Diciamo che C# e' quello che Java avrebbe potuto essere. Ma non ce l'ha fatta.<br>

</div></div></blockquote><div><br></div><div>Ammetto candidamente di non conoscere C#. So che ha un sacco di cose che Java non ha e che sarebbe bene che avesse. Forse alcune delle più critiche le aggiungeranno con la 8, dopo tipo 20 anni di esistenza. Ma vabbe'. </div>

<div><br></div><div>Fatto sta che ormai Java lo conosco bene, so come muovermici intorno e mi e' piuttosto comodo. </div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="gmail_quote"><div>A direil vero anche solo smazzare uelal roba basterebe a farmelo prediligere. Quando devo srotolare ua srie di liste e dizionari (in quei casi array e hashtables) uno dentro l'altro con altri linguaggi c'e' da divenare di gomma.<br>

</div></div></blockquote><div><br></div><div>Non so su C#... ma su Java non e' particolarmente scomodo. E' scomodo principalmente in C++ (veramente una cifra) o in C. </div><div>La rottura di palle (in Java) e' che manca una sintassi fancy per costruirli, ma amen.</div>

<div><br></div><div>Oggettivamente a seconda del codice che scrivi puö facilmente capitarti molto poco di lavorare a quel livello di astrazione.</div><div><br></div><div>A me capita spesso. </div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="gmail_quote"><div class="im"><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><div>3. Nonostante tutto sono d'accordo, ma in un senso diverso. Ovvero oltre un certo livello di complessità la complessità inerente del linguaggio probabilmente diventa trascurabile rispetto quella del progetto. Linguaggi maturi come Java hanno una serie di librerie che aiutano, ma spesso sono abbastanza complicate e la loro complessità finirebbe per dominare la complessita' di un progetto medio. Viceversa su un progetto molto complesso si ripagano.</div>



</div></blockquote></div><div><br>Le libreire di linguaggi complessi sono complesse. E rendono complessi ancora di piu' i progetti. <br></div></div></blockquote><div><br></div><div>Si e no. Nel senso che ci sono librerie che sono complesse "il giusto". Sul progetto piccolo non le paghi, su quello grosso non le senti realmente. </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="gmail_quote"><div></div><div class="im"><div> </div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">



<div class="gmail_quote"><div></div><div>Assolutamente. Ognuno fa le sue scelte. Pero' non necessariamente sono scelte ottime. </div><div>Pero' non metterei la cosa in hobby vs. azienda (sotto-intendendo che la logica aziendale sia migliore [0]).</div>






<div>Semplicemente uno si fa le sue scelte sulla base di motivazioni tecniche.</div></div></blockquote></div><div><br>Tipo conoscere meglio (non parlo del singolo ma del team) un dato linguaggio rispetto ad un altro. Vero che (parlo di almeno altre 5 esperienze oltre a quella personale, tra cui quella di Eric Raymond, e il fetchmail conf GUI) scrivere un qualocsa in python senza averlo mai visto predne pochi giorni di cui 2 o 3 al massimo per impararlo. Altri linguaggi questa simpatica caratteristica non la hanno.  <br>

</div></div></blockquote><div><br></div><div>Aspetta pero'. Questi sono una serie di aspetti complicatissimi. Uno, quello che fa esr e' poco esplicativo. Probabilmente con la testa che ha prende su K in 4 giorno invece che 2. Per il resto mi sentirei anche di confermare la cosa. Python lo si impara facilmente in poco tempo.</div>

<div><br></div><div>Il problema e' chi sei prima di impararlo. Mi spiego: se sei un cattivo programmatore prima di imparare Python, impari Python in 3 giorni e continui ad essere un cattivo programmatore. Adesso scriverai cattivi programmi in Python invece che in VB! :)</div>

<div><br></div><div>Poi sono d'accordo che da un punto di vista didattico Python faccia del bene (ma si vede relativamente a lungo termine) e permetta un relativamente rapido miglioramento, per chi vuole migliorare. Vuoi la community, vuoi una serie di proprietà accessorie alla community stessa (e.g., readability counts -> i sorgenti dei programmi scritti anche da persone molto sveglie sono proprio leggibili e si impara un sacco). Vuoi il fatto che ti permette di risolvere rapidamente tanti problemi che di conseguenza ti fa accumulare rapidamente esperienza.</div>

<div><br></div><div>Pero' se hai un team ben agguerrito su Java, che sa il fatto suo in Java non sono convinto che passando a Python diventeranno improvvisamente molto piu' produttivi. per tutta quella serie di menate ambientali che uno impara piano piano con il tempo. </div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div class="im"><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

<div class="gmail_quote"><div>IMHO questo esempio non calza troppo. Cioe' se prendi un software (scritto in qualunque linguaggio) e lo evolvi o molto a lungo o molto in fretta o semplicemente male (che sicuramente non e' il vostro caso) tipicamente hai un carrozzone che diventa sempre meno mantenibile. Non mi risulta che questo tipo di cose non possano succedere con .NET. </div>



</div></blockquote></div><div><br>Au contraire, li succedono anche piu' spesso. E non dico sia colpa del linguaggio. Solo che come PHP, un certo tipo di semantica, di strutture etc. portano a lavorare in maniera tale da favorire il casino. Non e' colpa del linguaggio in se, ma delle strutture mentali di chi lo usa.<br>

</div></div></blockquote><div><br></div><div>Scusa, non sono d'accordo. Contestualizziamo. C# e' un linguaggio ad oggetti. Mi risulta anche uno piuttosto pulito.</div><div><br></div><div>Se sai fare buona programmazione e design ad oggetti non sono esattamente convinto che il programma che scrivi in C# sia "intrinsecamente" poco mantenibile. Ci possono essere alcune feature mancanti che renderebbero lo sviluppo piu' rapido (anche lo sviluppo di "aggiunte"), ma non vedo perche' dovrebbe incasinarsi il design.</div>

<div><br></div><div>Se invece stiamo parlando del "Python effect" allora non aggiungo altro e fine della storia. Ma non e' esattamente colpa di C#, e' semplicemente colpa del fatto che di qua ci potrebbe essere un pochino di selezione a monte. </div>

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