Franny's Adobe

Il blog di Francesco Carucci
posts - 99, comments - 611, trackbacks - 839

Python, I love you

Ieri sera alle 11 lancio un processo scritto in Python cosi' da avere tutto pronto oggi, giorno di consegna.

Questo mattina sono accolto da:

TypeError: GetTargetFilename() takes exactly 3 arguments (2 given)

 

Segnalarmi un errore di sintassi a tempo di compilazione effettivamente nel 2008 e' chiedere troppo. Mattinata di lavoro persa. Grazie Guido, I love you too.

Print | posted on venerdì 4 aprile 2008 10.54 |

Feedback

Gravatar

# re: Python, I love you

Python e' un linguaggio "dinamico". Da un punto di vista concettuale, e' corretto far conto che non e' "compilato", bensi' "interpretato". Comunque non sono un esperto di Phyton (e non l'ho mai usato in produzione), per cui se qualcuno ha da aggiungere/rettificare, e' certamente piu' che benvenuto.

In effetti, aspettare ore per vedere un programma fallire per un errore che sarebbe stato banalmente individuato a compile-time e' qualcosa che mi fa sospettare che c'e' qualcosa nell'approccio al linguaggio che forse non ha funzionato in questo caso. Tant'e' che, anche nel caso dei linguaggi interpretati, un parsing iniziale dell'intero programma, che io sappia, avviene comunque (alcuni costrutti falliscono e basta, senza doverci passare a run-time).

Dunque mi accodo alla tua domanda: come si evita un "problema" del genere in codice reale? (Something idiomatic, maybe?) Forse aiuterebbe se tu mostrassi qualche linea del codice coivolto.

-LV
04/04/2008 11.22 | LudovicoVan
Gravatar

# re: Python, I love you

Testare testare testare.... a maggior ragione nei linguaggi dinamici
04/04/2008 11.26 | Simone
Gravatar

# re: Python, I love you

Penso che in linguaggi dinamici "moderni" come python (o anche ruby) il testing sia fondamentale altrimenti rischi di perdere moltissimo tempo.
04/04/2008 11.29 | Roberto Valenti
Gravatar

# re: Python, I love you

Appunto... test test test
04/04/2008 11.44 | Diego Guidi
Gravatar

# re: Python, I love you

Chi mi da una definizione di "test test test"?

Si fa dura... :)

-LV
04/04/2008 12.02 | LudovicoVan
Gravatar

# re: Python, I love you

TDD TDD TDD :D
04/04/2008 13.52 | Cesare
Gravatar

# re: Python, I love you

Sarà... :-(
Ma mi sembra che la risposta sia ad una domanda diversa... :-S
04/04/2008 14.21 | Lorenzo Barbieri
Gravatar

# re: Python, I love you

Quale domanda? Non mi pare Francesco avesse posto nessuna domanda :)
04/04/2008 14.38 | Simone
Gravatar

# re: Python, I love you

Ah, la domanda l'aveva fatta Ludovico :)
La risposta è
test = unit test...
se il codice in questione fosse stato testato "da solo" ti saresti accorto subito che andava in errore...
Non so in Pyton, ma per Ruby c'è un processo che continua a girare in background ed esegue i test durante lo sviluppo, così ti accorgi subito se fai qualcosa di sbagliato...
04/04/2008 14.49 | Simone
Gravatar

# re: Python, I love you

TDD? Certo, siamo tutti d'accordo, ma ci sono due problemi:

1) Chiudere la stalla quando i cavalli sono scappati non e' utile
2) Usare il testing per sopperire ad una grave mancanza nel design di un linguaggio non lo trovo una buona idea

In un mondo ideale vorrei una batteria di test E i controlli sintattici a tempo di compilazione. Nel mondo reale dove non ho test purtroppo, mi accontento almeno dei controlli sintattici. Anche qualche ora di sonno sarebbe gradita :D

Riguardo a Python, pagare in termini di ore di lavoro la totale dinamicita' del linguaggio mi fa propendere verso linguaggi dinamici piu' evoluti e meno pericolosi (Cobra/F#).
04/04/2008 15.05 | Francesco Carucci
Gravatar

# re: Python, I love you

Non so la storia che ti ha portato ad usare Pyton... ma i linguaggi dinamici non sono compilati... quindi nessun controllo sintattico in fase di "pre-run"...
magari c'è qualche tool che lo fa simulando una compilazione... ma non ho mai usato Pyton quindi non saprei dove indirizzarti
04/04/2008 15.13 | Simone
Gravatar

# re: Python, I love you

Purtroppo usare Python non e' stata una mia decisione.
Sono una vittima del linguaggio da due anni che, per altro, mi sta facendo perdere una marea di tempo...
Quando questo progetto sara' finito cerchero' di migrare qualche parte del sistema verso linguaggi piu' sicuri come F# e C#.
04/04/2008 15.22 | Francesco Carucci
Gravatar

# re: Python, I love you

Ci sono tanti tool per testare il proprio codice (Unit testing, TDD...ad es. PyUnit che è un vero proprio framework ad hoc).
E' chiaro come ti ho detto in pvt che se il lavoro fatto a monte non è stato eseguito con tutti i crismi che linguaggi dinamicamente tipati richiedono SEMPRE, la colpa è sua (e sò che verrà seviziato per questo :D) e non tua.

In questo caso le pratiche agili vengono poco in soccorso perchè "il danno" è già stato fatto, mentre i test sarebbero dovuti essere eseguiti step by step.

Sostituiamo a Python però un linguaggio con le medesime caratteristiche e non cambia niente.

E poi come ho detto su HWUp, a prescindere dagli strumenti, scegliere per un progetto così grosso un linguaggio con evidentemente non si ha tutta questa dimestichezza è una pessima scelta.
Si parla di "cattivo design" della scelta :D
04/04/2008 15.55 | DB
Gravatar

# re: Python, I love you

Brando, a me non interessa scegliere un linguaggio con le medesime caratteristiche, ma scegliere il linguaggio che mi fa perdere meno tempo. In questo caso un linguaggio con un controllo sintattico a tempo di compilazione mi avrebbe fatto risparmiare tempo. Scrivere il sistema test first me ne avrebbe fatto risparmiare ulteriore, ma per ottenere questo devo andare al piano di sotto impugnando una mazza ferrata e far ragionare un paio di persone.

(La mazza ferrata e' di gomma piuma :D)
04/04/2008 16.03 | Francesco Carucci
Gravatar

# re: Python, I love you

sìsì ho capito il tuo punto di vista e hai ragione. In questo caso mi permetto di dire che la scelta di un linguaggio come Python non è stata troppo azzeccata (con l'uso che ne è stato fatto, si intende).
#F è promettente, anche perchè è totalmente coerente e integrato con l'ecosistema NET, però il sistema ha un paio d'anni da quanto ho capito e due anni fa era ancora nelle fucine della MSresearch, quindi...

Auguri per la tua impresa di convincimento :D
04/04/2008 16.12 | DB
Gravatar

# re: Python, I love you

F# promette bene.

F# è un linguaggio funzionale ed è in buona parte il porting di ocamel, sviluppato da un'università francese http://caml.inria.fr/ocaml/, che ha inferenza dei tipi a compile time ( e tante altre cose carine .. )(qualcosa si può usare già usare in c# 3.0 .. ;)

non resta che studiarlo ;)
04/04/2008 20.48 | calca
Gravatar

# re: Python, I love you

Secondo me associare così tranquillamente F# e C# è concettualmente sbagliato. Sono linguaggi totalmente diversi, sia pure con la base .Net comune e anche consdierando che F# è piuttosto poliedrico come comportamento(insomma, non è Haskell, per dirla tutta). Sinceramente spero che il signor Matsumoto faccia qualcosa per Ruby che, al momento, mi pare il linguaggio più denso di promesse ma si trascina dietro alcuni problemini, lentezza in primis.
04/04/2008 22.08 | rel
Gravatar

# re: Python, I love you

Ruby non è dissimile da Python quanto al tipo di problematiche di cui si lamenta Francesco.

Comunque l'errore di cui sopra è da veri idioti. Probabilmente è capitato aggiungendo un parametro a una funzione che ne aveva due.

In questi casi o si va a caccia di tutti i riferimenti alla funzione e glielo si aggiuge, oppure si definisce il nuovo parametro con un valore di default in modo da "preservarne" il comportamento per l'uso che se n'era fatto fino ad allora.

Sulla vicenda: no comment. Ore di lavoro perse per una stupidaggine. :|
05/04/2008 15.37 | Cesare
Gravatar

# re: Python, I love you

Per dovere di cronaca il problema e' nato da un merge sbagliato di Perforce che e' impazzito e non da un errore umano. Capita (e capitano anche gli errori umani). Sbagliare e' normale, soprattutto quando si inizia a lavorare dieci o dodici ore al giorno e cala vertiginosamente la soglia di attenzione. Il problema qui come sottolineato e' la mancanza di una prima linea di difesa per colpa del linguaggio, la compilazione, e la mancanza di una seconda lineadi difesa, batteria di unit test, per colpa dell'architettura del sistema.
06/04/2008 10.13 | Francesco Carucci
Gravatar

# Incest taboo forum.

Incest stories free. Sex incest. Stories of incest. Free incest cartoons.
19/06/2008 13.28 | Free incest photos.
Gravatar

# Brother sister incest.

Incest stories free. Young incest stories. Incest stories. Stories of incest.
20/06/2008 2.51 | Free incest.
Gravatar

# Incest sex.

Incest forum. Family incest photos family. Incest sex.
22/06/2008 21.52 | Incest stories.
Gravatar

# Incest storys.

Teen incest stories. Incest free. Incest stories.
22/06/2008 22.01 | Family incest stories.
Gravatar

# Incest.

Incest.
24/06/2008 22.59 | Incest.
Gravatar

# Winzip free download.

Winzip 10. Win98 free download winzip. Winzip download. Winzip. Free winzip 8.0.
26/06/2008 0.20 | Free winzip downloads.
Gravatar

# Hardcore sex.

Sex offenders. Mature sex. Sex.
01/07/2008 15.35 | Free sex clips.

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 4 and 4 and type the answer here:

Powered by: