> Il giorno 07/ott/2014, alle ore 00:26, enrico franchi > <enrico.fran...@gmail.com> ha scritto: > > 2014-10-05 11:34 GMT+01:00 Enrico Bianchi <enrico.bian...@ymail.com>: > > 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). > > 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... > > C'era anche un bellissimo libro sulla programmazione ad oggetti in C. Come > come? C. Si. C. Non C++. C. > Eccome avranno fatto? Leggitelo. > > D'altra parte, senza andare lontano, prendi Python, apri il cofano e guarda > come e' fatto. > > 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. > > Ma in effetti... ci sono parecchi esempi, piu' o meno riusciti. gobject e' C. > E non direi che non e' roba ad oggetti. > 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). > > E non e` che uno dei due metodi sia meglio dell'altro, semplicemente uno usa > quello che meglio si adatta al proprio scopo. > > 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... > > 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. > > 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. > > Quindi puoi scrivere codice veramente non ad oggetti in Python? Certo. Puoi > farlo anche in Java. static anyone? > Se poi mi chiedi una code review non ti aspettare di non dover passare sul > mio cadavere, ma l'idea e' un po' quella. > > 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. > > 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 > > 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. > > >
Questa mail รจ una delle ragioni per cui vale la pena di sopportare i flame per il top quoting in questa lista. La leggi e dici 'cazzo che modo elegante e preciso di spiegare le cose'. Grazie Enrico.. mattina iniziata bene :) G _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python