[Python] Dubbi organizzazione progetto

Mr.SpOOn mr.spoon21 a gmail.com
Dom 25 Nov 2007 19:22:35 CET


On Nov 25, 2007 6:19 PM, enrico franchi <enrico.franchi a gmail.com> wrote:

> Tuttavia l'ingegnere del software che è in me vede la soluzione in cui
> usi i setEncoder e compagnia come più pragmatica e comoda da
> programmare. Questo ammesso (e non concesso) che tu voglia avere
> encoder e decoder 'pluggabili'. Per esempio per fare vedere che se
> spari dentro il canale rumoroso una cosa compressa con huffman puro
> (per dire) quello che esce è spazzatura (mi aspetto), se invece
> reintroduci della ridondanza, ricostruisci il messaggio.

L'idea infatti è questa. Al momento io l'ho implementata utilizzando
dei file YAML. Ho diversi file con diversi tipi di codifica con una
struttura tipo:

a: 000
b: 001

etc.
In uno ho una codifica fissa a 8 bit, in un altro una codifica alla
Huffman. Poi messo anche l'algoritmo di Huffman per codificare il
messaggio con una codifica tutta sua, calcolata al momento etc. Quindi
l'idea è di fare la scelta da un menu a tendina e poi il metodo
"Codifica" di una qualche classe, utilizzando la codifica apposita
sostituisce alle lettere i numeri.

La stessa cosa dovrebbe avvenire per l'aggiunta della ridondanza.
Potendo quindi scegliere fra la semplice aggiunta di un bit di parità
o Hamming.

Forse è questo che non mi fa apparire chiaro come definire gli
oggetti. Cioè, non sono pensati per essere creati all'inizio con dei
parametri prestabiliti, ma in base a quello che scelgo dai menu, fanno
certe cose.

> Attenzione, l'encoder potrebbe anche essere una funzione. Molto più pratico.
> A questo punto se è un'istanza di una classe custom usi __call__ e hai
> un oggetto function-like.

Non so esattamente a cosa serva __call__


> Non mi piace vederla così. Per me un canale è un oggetto dove la roba
> *passa*. Usare un concetto di 'setMessage' mi piace davvero poco. Un
> canale non è una scatola: è un tubo. Io userei proprio read e write.
> In primo luogo lo rendono un oggetto file like (il che non guasta), in
> secondo luogo rendono bene l'idea.

In che senso file like?
In questo modo, va beh, quando premo il bottone "Invia" per inviare il
messaggio, in realtà sarà il "canale" che se lo va a leggere.

> Dentro il NoiseChannel avrai una lista che tiene i messaggi (gestita
> come una coda). E poi resta da decidere se prendi il messaggio pulito
> e lo sporchi quando lo tiri fuori dalla coda perchè te lo hanno
> chiesto oppure se sporchi appena ti entra un messaggio, lo salvi in
> coda sporco e lo tiri fuori (ovviamente così come è).

Non mi serve una lista perché ho un solo messaggio per volta. E
pensavo di passarlo direttamente al metodo che aggiunge rumore e che
lo restituisce sporco.

Carlo


More information about the Python mailing list