[Python] Applicazione WEB con Python e Postgresql

enrico franchi enrico.franchi a gmail.com
Mar 7 Ott 2014 00:26:55 CEST


2014-10-05 11:34 GMT+01:00 Enrico Bianchi <enrico.bianchi a 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.


-- 
.
..: -enrico-
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20141006/f6a426f6/attachment.html>


Maggiori informazioni sulla lista Python