<div dir="ltr">Ma grazie!<div><br><div class="gmail_extra"><br><div class="gmail_quote">2014-10-07 7:41 GMT+01:00 Giovanni Porcari <span dir="ltr"><<a href="mailto:giovanni.porcari@softwell.it" target="_blank">giovanni.porcari@softwell.it</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
> Il giorno 07/ott/2014, alle ore 00:26, enrico franchi <<a href="mailto:enrico.franchi@gmail.com">enrico.franchi@gmail.com</a>> ha scritto:<br>
<div><div class="h5">><br>
> 2014-10-05 11:34 GMT+01:00 Enrico Bianchi <<a href="mailto:enrico.bianchi@ymail.com">enrico.bianchi@ymail.com</a>>:<br>
><br>
> Python e` ad oggetti, ed implementa ogni sua caratteristica secondo questo paradigma. Pero` Python permette di scrivere codice sia usando il metodo procedurale (ovvero come C, Pascal, Go), sia usando il metodo ad oggetti classico (Java, C#, Delphi).<br>
><br>
> Secondo me tu stai confondendo uno *stile* di programmazione (o se vuoi, di design) con il supporto sintattico ed eventualmente semantico di un linguaggio a quello stile. Lasciando perdere Pascal che so che a te piace e a me fa un po' lasciamo perdere...<br>
><br>
> C'era anche un bellissimo libro sulla programmazione ad oggetti in C. Come come? C. Si. C. Non C++. C.<br>
> Eccome avranno fatto? Leggitelo.<br>
><br>
> D'altra parte, senza andare lontano, prendi Python, apri il cofano e guarda come e' fatto.<br>
><br>
> E troverai guarda un po'... C. C ad oggetti. Pesantemente ad oggetti. Trovi relazioni di incapsulamento, polimorfismo (gia' gia'), ereditarieta'. Trovi proprio tutto. E si, in C.<br>
><br>
> Ma in effetti... ci sono parecchi esempi, piu' o meno riusciti. gobject e' C. E non direi che non e' roba ad oggetti.<br>
> Ma anche robbe piu' strane. Tipo guardati come fanno quelli di gmp. E vedrai che gli oggetti... scusa... gli interi di gmp tendono proprio a comportarsi come oggetti. Tipicamente prima di usarli devi chiamare un costruttore... no, scusa, un metodo, no scusa, una funzione _init, quando li distruggi, no scusa, li deallochi, devi chiamare un distruttore, no scusa, un metodo, no scusa, una funzione (che non ricordo se e' _free o _delete o checcavolo).<br>
><br>
> E non e` che uno dei due metodi sia meglio dell'altro, semplicemente uno usa quello che meglio si adatta al proprio scopo.<br>
><br>
> Uhm... sara'. Il fatto fondamentale e' che io ho la forte sensazione di stare programmando ad oggetti anche quando non sto definendo classi... Ora questa potrebbe essere la scusa geniale per chi non conosce la programmazione ad oggetti per asserire di stare programmando ad oggetti. Ma davvero...<br>
><br>
> Il problema e' che tutto il problema e' che non c'e' manco una definizione di programmazione ad oggetti. O meglio... ce ne sono mille. E ognuna enfatizza un qualche aspetto, si rifa' a qualche linguaggio "pioniere" e/o a qualche padre della programmazione ad oggetti.<br>
><br>
> Ora personalmente la parte che mi interessa meno e' l'aspetto sintattico della faccenda. Certo, fare programmazione ad oggetti senza avere particolare supporto da parte del linguaggio tende ad essere notevolmente piu' scomodo. Chesso'... ti devi popolare una vtable a mano (tipo, guarda come sono implementati i tipi in Python, sotto sotto). Che oggettivamente farei anche a meno tutti i giorni. E infatti non scrivo una vm tutti i giorni.<br>
><br>
> Quindi puoi scrivere codice veramente non ad oggetti in Python? Certo. Puoi farlo anche in Java. static anyone?<br>
> Se poi mi chiedi una code review non ti aspettare di non dover passare sul mio cadavere, ma l'idea e' un po' quella.<br>
><br>
> Tipicamente le idee alla base della progettazione ad oggetti sono *talmente* buone [si lo so, non ho definito quello che e', almeno per me] che e' *difficile* sostenere che farne a meno sia una buona idea.<br>
><br>
> L'assioma "la programmazione ad oggetti e` meglio della programmazione procedurale" e` un concetto di Java e (penso) di C# che sta bene in quei contesti (anche perche` non hai scelta), ma che mal si adatta a Python, proprio perche` in quest'ultimo hai una metodologia di programmazione totalmente differente<br>
><br>
> Uhm... no. Cerchiamo di capire cosa sia la programmazione ad oggetti e cosa sia la programmazione procedurale. Vediamo cosa offre la seconda piu' della prima, cosa offra la prima piu' della seconda e traiamo le ovvie conclusioni.<br>
><br>
><br>
><br>
<br>
</div></div>Questa mail รจ una delle ragioni per cui vale la pena di sopportare i flame<br>
per il top quoting in questa lista.<br>
La leggi e dici 'cazzo che modo elegante e preciso di spiegare le cose'.<br>
<br>
Grazie Enrico.. mattina iniziata bene :)<br>
<div class="HOEnZb"><div class="h5"><br>
G<br>
<br>
_______________________________________________<br>
Python mailing list<br>
<a href="mailto:Python@lists.python.it">Python@lists.python.it</a><br>
<a href="http://lists.python.it/mailman/listinfo/python" target="_blank">http://lists.python.it/mailman/listinfo/python</a><br>
</div></div></blockquote></div><br><br clear="all"><div>...</div><div>a proposito di top quoting ;)</div><div><br></div>-- <br> .<br>..: -enrico-
</div></div></div>