[Python] Classi (Was: Walks like Python. Runs like C.)

enrico franchi enrico.franchi a gmail.com
Mer 14 Gen 2015 14:25:19 CET


2015-01-14 11:06 GMT+00:00 Manlio Perillo <manlio.perillo a gmail.com>:

> Il multiple dispatching è il mio preferito, perchè è una generalizzazione
> dei singolo dispatch +- overloading.  Però è disponibile in pochissimi
> linguaggi, magari c'è la fregatura...


Io vedo due problemi principali nel MD. In primo luogo, che dal punto di
vista dell'implementatore (e qui me ne frego abbastanza) e' una cosa
parecchio piu' complessa, se si vuole farla efficientemente. Vedi per
esempio la discussione di Alexandrescu su come farla in C++... per farla
efficiente e' veramente un dolore (e ci sono limitazioni). Se poi invece
che una feature "un po' complicata da aggiungere" (vedri come fanno in C++
o come puoi fare in Python) e' pronta nel linguaggio e il programmatore
tipo non e' il classico hacker lisp ... io vedo una ricetta per il disastro
dal punto di vista della piattaforma.

Poi sono d'accordo con te che e' la cosa migliore possibile. Pero' gia'
fino a qui puo' andare male in due punti (efficienza e pragmatica).

Poi c'e' il classico problema che se non metti altri limiti (vedi per
esempio un qualche tipo di restrizione semi-artificiosa tipo essere nello
stesso package) rischi di avere problemi su come md di metodi "estesi" da
persone differenti, senza contesto possano spaccare cose random. In un
certo senso il problema e' che potenzialmente hai l'equivalente di poter
aprire classi per modificarle (e abbiamo visto come funziona bene in
Ruby... ewk), ma su cose per definizione fuor di namespace.

Cioe', ci sono probabilmente modi di fare il tutto bene e tranquillo... ma
ci vuole disciplina sia dall'implementatore (e va bene) sia soprattutto dal
programmatore. Vanno trovati quali sono le limitazioni che rendono la
feature sana, ma che al contempo non sono eccessivamente restrittive.


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


Maggiori informazioni sulla lista Python