[Python] Dubbi su hash e set
enrico franchi
enrico.franchi a gmail.com
Gio 8 Maggio 2008 08:38:20 CEST
2008/5/6 Pietro Battiston <toobaz a email.it>:
> Perché un vertice - nella mia applicazione - è prima di tutto la
> giunzione di diversi lati. Voglio potere ad esempio congiungere (union,
> o update) due vertici, ovviamente non voglio lati doppioni in uno stesso
> vertice.
Quindi un vertice è *implementato* in termini di "insieme". Per
esempio tutte le operazioni che puoi fare fra due insiemi le puoi
anche fare tra due vertici? E fra un insieme e un vertice? L'insieme
vuoto è un concetto perfettamente sensato. Il "vertice vuoto"? E il
vertice di un solo lato? E' un insieme normale, ma come vertice non ha
senso.
> Ovviamente di un vertice mi interessano i lati che ci arrivano, mentre
> dell'ordine me ne frego abbastanza (in realtà questa è più che altro una
> scelta, perché semplicemente l'ordine non mi interessa per quel che
> dovrò poi farci).
E' sensato implementare in termini di. Ma mi stai sempre più
convincendo che l'ereditarietà è fuori luogo.
> Sì, sul principio generale hai perfettamente ragione. La verità è che se
> mai deciderò che val la pena pubblicare quel che sto facendo, dovrò
> ovviamente essere certo che ogni metodo che la mia classe ha (o eredita)
> sia consistente, e in quel caso viva il duck typing, ma finché è una
> roba mia mi fa estremamente comodo, spippolando con ipython, avere a
> portata di mano tutto e subito per sperimentare, e magari fare anche
> cose non consistenti (per debug, mi sono addirittura //scritto// metodi
> che rendono il tutto non consistente). E che comunque lavorare in modo
> "pulito" non avrebbe risolto il problema per cui avevo scritto in lista.
Non mi sembra un discorso che si regge: non ti costa nulla seguire dei consigli.
Oltretutto progettare bene le gerarchie di classi non è una cosa
banale, non è una cosa che ti insegnano in università, ma è una cosa
che impari con l'esperienza. Se non dai peso al design perchè "tanto è
per te", quando dovrai farlo per gli altri, semplicemente non avrai
accumulato le skills necessarie. Se invece fin da principio hai
provato a progettare bene le cose, quando dovrai farlo anche per gli
altri, saprai come farlo.
Fra le altre varie cose, a volte anche persone decisamente esperte
sbagliano. Solo in genere se ne accorgono un po' prima e talvolta non
è troppo tardi.
> Certo, per qualcosa che dovessi rilasciare al pubblico non avrei dubbi.
> Per quel che riguarda me, preferisco che le funzioni "dalla coerenza
> incerta" ci siano piuttosto che siano nascoste.
Boh.
> Sì, abbastanza. Forse la cosa non mi tange troppo solo perché non ho mai
> partecipato all'"evoluzione" di niente in Python, finora quello che ho
> scritto l'ho scritto sempre da solo, e tutti i miei moduli erano di
> "alto livello" (non nel senso di qualità ma di specializzazione).
Beh, io ti consiglio di cominciare a rifletterci su queste cose. Prima
ci pensi, prima impari.
Il discorso completo lo fatto più sopra.
--
-enrico
Maggiori informazioni sulla lista
Python