Newsgroup: it.comp.programmare
Titolo: Esempio di force indenting ambiguo

 tuo codice NON sia quel che hai postato.
Come si evince dalla risposta dello stesso Alex Martelli, mi sembra chiaro
che non e' possibile disambiguare la logica del codice.
Senza un'altra interazione in cui il programmatore originale spiega la
logica del proprio codice, non si approda alla comprensione dello stesso.
Questo per dire che l'indenting NON E' il modo piu' veloce e pratico per
scrivere codice corretto e comprensibile.
Ciao.
*** Azimuth ***

 scrivere codice corretto e comprensibile.
Non hai dimostrato un bel niente.
Voglio vederti a leggere del codice C/C++ male indentato.
Quando si scrive del codice Python SI E' OBBLIGATI a indentare in modo
corretto e questo non puo' che condurre a scrivere del codice ordinato. Se
si riporta del codice Python SI E' OBBLIGATI a riportare la corretta
indentazione, ne' piu' ne' meno con quanto faresti in
C/C++/Delphi/Pascal/Fortran per rendere il codice comprensibile.
--------------------------------
Inviato via 
http://usenet.libero.it

 scrivere codice corretto e comprensibile.
E' una settimana che cerchiamo di farlo capire, ma si vede che sono 
'otturati' da qualche parte! (SENZA FACCINE)
-- 
Luc.

 Voglio vederti a leggere del codice C/C++ male indentato.
(VC++ specific) [Alt]+[F8]
8-PPP
-- 
Luc.

 'otturati' da qualche parte! (SENZA FACCINE)
Immagino che tu, per parlare cosi' tanto, ti sia gia' fatto il bidet ;))))


 E quindi ?
Primo, ma non mi avevi plonkato?
Secondo, sei sicuro di aver capito cosa ho scritto?
Terzo, non perdo tempo con chi non ci capisce una sega di programmazione.
*** Azimuth ***

 Terzo, non perdo tempo con chi non ci capisce una sega di programmazione.
ROTFL !!!...


 Mi diverto troppo a leggere le cazzate che scrivi ;)
Se questo ti diverte, delle due cose l'una: o lavori poco o scopi poco.
Vedi un po' che puoi fare.
*** Azimuth ***

 Python rispetto ad un suo programma (NG originale, it.comp.lang).
Ma perche' vi ostinate cosi' tanto in questa guerra "religiosa" contro
Python, portando avanti l'argomento dell'indentazione, come se questo fosse
la chiave per dimostrare che il Python fa schifo?
Io ancora non lo conosco ma quando ho letto che c'e' tutta una serie di
societa' e sviluppatori in gamba che lo reputano un ottimo
strumento/linguaggio, ci andrei con le molle nel criticarlo.
E ci avrei pensato bene, prima di intraprendere una crociata contro Alex
Martelli che controbatte alle vostre (secondo me) scarne e sterili
argomentazioni, fornendo dei posts ricchi di notizie e di esempi che ci
fanno capire la sua competenza e la sua lunga militanza informatica.
Mi ha poi infastidito questa continuo attacco e sottile presa in giro verso
una persona (Martelli) che nei suoi interventi nei vari newsgroups
informatici, cerca di dare sempre il meglio di se' con interventi sempre
interessanti dai quali si puo' intuire una mente fervida e dinamica.
A questo punto non so piu' se la vostra e' solo invidia, voglia di
"sfottere" il primo della classe come ai tempi delle medie o piuttosto siete
scottati dal fatto che avete trovato qualcuno che vi ribatte punto su punto,
con argomentazioni valide e con fior fior di esempi ai quali voi sapete
rispondere solo con parole vane e prese in giro.
Non ho ancora letto un contro esempio significativo da parte vostra, ma solo
prese in giro quando in uno dei numerosi esempi che Martelli ha fornito
c'era un baco di battitura dove in un define, si era dimenticato uno 0.
Almeno lui si mette in gioco fornendo questi esempi che molti qua, anche se
non partecipano attivamente, trovano molto utili.
C'e' tanto da imparare da queste persone e voi non fate certo un servizio
utile cercando di smontarle e di ridicolizzarle senza alcun motivo valido.
La maggior parte dei posts sono OT o forniscono soluzioni monosillabiche a
problemi proposti, a differenza di pochissimi posts dove si spiega il
chi-come-quando-dove-perche' delle cose.
Vediamo di salvare questi pochissimi posts.
Un po' di umilta' e di conoscenza dei propri limiti.
Maurus

 Se questo ti diverte, delle due cose l'una: o lavori poco o scopi poco.
Peccato che nessuna delle due sia vera.
Hai escluso una terza possibilita': mi diverto molto mentre lavoro molto ;)


 scrivere codice corretto e comprensibile.
Nonostante i tuoi "falsi ideologici", che ora stai usando per
ribadire la tua fallimentare tesi, non credo che cio` porti
avanti la causa che ti e` tanto cara.  Il fatto stesso che
devi usare menzogne e citazioni fuori contesto per difendere
la tua tesi dice molto sia su di te, sia su di essa.
Donald E. Knuth, "Structured Programming with go to
Statements", Computing Surveys, Vol 6 No 4, Dec. 1974:
"""
We will perhaps eventually be writing only small modules
which are identified by name as they are used to build
larger ones, so that devices like indentation, rather than
delimiters, might become feasible for expressing local
structure in the source language.
"""
La previsione che Knuth, uno dei piu` grandi nella storia
della programmazione, pubblico` 28 anni fa, si e` rivelata
corretta: oggi, "aspetti come l'indentazione, piuttosto che
non i delimitatori", SONO "divenuti fattibili per esprimere
la struttura locale nel linguaggio sorgente".  Senza nulla
voler togliere a Tony Hoare (linguaggio Occam), alla squadra
che collettivamente ha definito il linguaggio Haskell, e a
Guido van Rossum (linguaggio Python), "reinventori" dello
stesso concetto, penso che anche di questo, come di tante
altre cose nell'informatica, si debba attribuire a buon
diritto il metodo a Donald Knuth.
E adesso vediamo il solito gruppetto di scalmanati affannarsi
a cercare di difendere la tesi che Knuth non e` un programmatore
vero, e simili amenita`:-).
Alex

 interessanti dai quali si puo' intuire una mente fervida e dinamica.
Senza cantare le lodi (non ce n'e' bisogno), non credo che Alex dia troppo
peso a queste discussioni, la sua grande esperienza fa gola veramente a
tanti, e' naturale che susciti invidia.
Personalmente custodisco gelosamente i suoi articoli, c'e' piu' concentrato
di informazioni nei suoi messaggi che da ogni altra parte ;) Io conosco la
militanza di Alex su it.comp.lang.c++, in cui e' stato per lungo tempo il
riferimento centrale. Ribadisco: inutile vantare la conoscenza di
quest'uomo, basta andare su Google e cercare. E' impressionante.


 Un po' di umilta' e di conoscenza dei propri limiti.
Anche da parte tua non farebbe male.
Ciao.
*** Azimuth ***

 vero, e simili amenita`:-).
Vedi a differenza di te, caro Alex, io faccio considerazioni pratiche e non
accademiche.
Quelle, che come tu stesso hai ammesso esser valide definendole "prassi", mi
danno ragione.
*** Azimuth ***

 
Mi hai convinto. 
Adesso però spiegami, come se fossi un bambino di sei anni*,qual'E' 
(maiuscolo) il modo più veloce e pratico per scrivere codice corretto 
e comprensibile. 
*Pulp fiction, se non ricordo male
-- 
Valter Minute
vmi...@inwind.it
 (the reply address of this message is invalid)

 argomentazioni
Martello & Laforge sono stati i primi ad andare sul 'personale', e quindi 
sono stati bastonati a dovere.
-- 
Luc.

 sono stati bastonati a dovere.
Bastonare con delle mazze di gommapiuma non e' bastonare ;))
Luc, chi esce **LIVIDO** dalle discussioni sei tu e i tuoi amichetti.
Rileggi, se non ne sei convinto ;))


 sono stati bastonati a dovere.
Che poi mi dispiace pure.. perche', in fondo, capisco che anche loro devono
pur sempre guadagnarsi la pagnotta in qualche modo...
*** Azimuth ***

 pur sempre guadagnarsi la pagnotta in qualche modo...
Certo! ed il bello e' che io con una mano lavoro e con l'altra ti "picchio"


 ;))
Mi domando con quale mano ti masturbi mentre mi rispondi.
*** Azimuth ***

 Mi domando con quale mano ti masturbi mentre mi rispondi.
Su quella su cui ho dipinto il tuo faccino ;))


 Mi domando con quale mano ti masturbi mentre mi rispondi.
ROTFL!
-- 
Luc.

 Su quella su cui ho dipinto il tuo faccino ;))
ROTFL!
-- 
Luc.

 Su quella su cui ho dipinto il tuo faccino ;))
Ecco, allora usale entrambe ed evita di battere i tasti sulla tastiera, che
senno' sporchi tutto...
*** Azimuth ***

 senno' sporchi tutto...
Shhh... silenzio.. dormi...


 Shhh... silenzio.. dormi...
Con te? Giammai.
Piuttosto mi faccio monaco.
*** Azimuth ***
P.S. E poi non provarci in maniera cosi' spudorata pubblicamente, che senno'
ti rovini la piazza. Gia' scopi poco...

Taci, ho detto.


 
Andrea, 
hai due strumenti a disposizione:
- il killfile (se il tuo newsreader non lo supporta ti consiglio di 
passare a xnews che, tra l'altro, è scritto nel tuo linguaggio 
preferito :))
- l'email.
scegli quello che preferisci, ma evita di rispondere sul ng al sig. 
Azimuth che, evidentemente, prova divertimento nei botta e risposta a 
colpi di insulti ed evita accuratamente di rispondere ai messaggi che 
potrebbero condurlo in discussioni serie e tecniche (vedi mancato 
reply a un paio di messaggi del sottoscritto e "svicolamenti" ogni 
volta che qualcuno introduce esempi documentati che smentiscono le 
sue sballate tesi).
Una discussione su python (o anche solo sull'utilizzo dell'indent) è 
attinente al topic del newsgroup, questo botta e risposta di basso 
livello (non informatico), no.
E' evidente che si tratta di un troll o, perlomeno, di una persona 
poco portata al civile confronto di opinioni e in particolare di 
opinioni tecniche, credo sia il caso di ignorarlo per evitare di 
generare rumore inutile nel newsgroup (anche se pure al sottoscritto 
da fastidio non avere l'ultima parola :)).
Se il sig.Azimuth intende smentirmi, ci sono un paio di post che 
aspettano una sua risposta.


 e comprensibile.
Io non lo conosco[1], ma sicuramente NON e' quello del Python.
Ciao!
*** Azimuth ***
[1] Non posso citare le "buone usanze" della mia azienda software senza
cadere nell'autoreferenzialita'.

guardato bene dal verificarlo per bene prima di mostrarlo.
errare è umano. fare lo zoom del 500% su di un errore e continuare a
evidenziarlo a distanza di giorni non lo è
--
Rhymes (
rhymes_...@myself.com
)
http://www26.brinkster.com/rhymes
http://bw-crema.blogspot.com

quest'uomo, basta andare su Google e cercare. E' impressionante.
Boh io non custodisco più di tanto :) Ormai da quando ho l'ADSL
groups.google.it
 è diventata la mia homepage :PP


Lo usiamo anche noi, per piccole 'cose'.
infatti nemmeno lo sapevi


 evidenziarlo a distanza di giorni non lo č
L'ha riportato Maurus il fatto dell'errore, per me era gia' acqua passata.
*** Azimuth ***

senza cadere nell'autoreferenzialita'.
Per affermare razionalmente che "qualcosa" NON E' la soluzione migliore 
tu devi conoscere almeno una "cosa" che sia migliore del "qualcosa" 
(perlomeno nella mia logica da "come se fossi un bambino di sei anni").
E, se vuoi uscire dal ridicolo, è meglio che provi a cadere 
nell'autoreferenzialità.
Buon bagno.


L'ha riportato Maurus il fatto dell'errore, per me era gia' acqua passata.
"
Si', peccato pero' che era cosi' emozionato nella dimostrazione che si
e' guardato bene dal verificarlo per bene prima di mostrarlo.
"
questo sei tu non Maurus. potevi semplicemente evitare di rispondere


 mi danno ragione.
Ti danno invece torto marcio, perche` Python e` usato con
successo da un numero grande e crescente di aziende, e nessuna
di esse sta fallendo per improvvisa perdita d'indenting.
Alex

 (perlomeno nella mia logica da "come se fossi un bambino di sei anni").
Beh, se tu fossi veramente tale, ti consiglierei di andare a giocare con le
macchinine.
*** Azimuth ***

 questo sei tu non Maurus. potevi semplicemente evitare di rispondere
Maurus si e' lamentato che Alex fosse stato "cazziato" per un errore di
battitura. Io mi sono limitato a spiegargli perche' alcuni se la sono presa.
*** Azimuth ***

 E' evidente che si tratta di un troll
Devi scusarmi, e' che gente del genere ti porta a impugnare subito il
bastone ;)
Ah se solo si derattizzassero i ng un po' piu' spesso ;)


 di esse sta fallendo per improvvisa perdita d'indenting.
Scusa e', ma da uno che fa consulenze su Python cosa mi devo aspettare di
sentire?
*** Azimuth ***

 
Io sono un bambino di sei anni e non capisco di tautologie.
Quello che capisco (come qualsiasi bambino di sei anni) è che se dici 
che qualcosa NON E' la soluzione migliore deve esistere un altra cosa 
che E' la soluzione migliore.
Sempre nella mia stringente logica di seienne se non ci sono cose 
migliori di "qualcosa", questo rimane la soluzione (conosciuta)
migliore (per quanti difetti possa avere).
Al limite, se ci sono altre soluzioni che hanno vantaggi e svantaggi 
rispetto a "qualcosa", è necessario valutare questi vantaggi e 
svantaggi per decidere se queste soluzioni sono migliori di 
"qualcosa", se sono peggiori o se sono semplicemente soluzioni 
diverse (con appunto vantaggi e svantaggi) ma, in un certo senso, 
tutte "migliori" :)
Adesso, prima che davanti ai miei innocenti occhi di pargoletto si 
apra il vuoto di un mondo senza soluzioni per scrivere codice 
compatto e comprensibile, e sotto i tuoi piedoni di adulto tautologo 
un killfile, prova a spiegarmi (magari con qualche disegno colorato) 
qual'è la soluzione migliore (che pare nella tua ditta 
autoreferenziante sia praticata con successo).
Altrimenti tutta questa tua disquisizione sulle tautologie rischia di 
essere solo un discreto esempio di mirror climbing (alle elementari 
si studia inglese, adesso).
Saluto e vado a nanna che è appena finito carosello.


 tu devi conoscere almeno una "cosa" che sia migliore del "qualcosa"
Non necessariamente.  Ad esempio, supponiamo che il problema
sia "trovami un numero primo TANTO grande".
Se io ti propongo una soluzione, tu SAI che non e` la soluzione
migliore, cioe` non e` il numero primo piu` grande, SENZA
aver bisogno di conoscere alcun numero primo piu` grande (infatti
sai che _non c'e`_ "il nummero primo piu` grande").
Questo non e` applicabile alla specifica discussione in corso,
ma rispondo solo alle due righe (leggermente troppo generali)
che ho teste` quotato.
[sono obbligatori gli smilie o qualche lettore ha buon senso?]
Alex

Scusa se te lo dico, ma credo che tu sia una sega in C, C++ e Java.
e chi ha mai detto il contrario? C++ nemmeno lo conosco e chiunque "mi
conosce" lo sa. Ma come sempre, il punto non è questo. 


 che E' la soluzione migliore.
Non e' cosi'.
Ma non te ne fare una colpa.
*** Azimuth ***

 conosce" lo sa. Ma come sempre, il punto non è questo.
E allora il punto qual e'?
*** Azimuth ***

Scusa, fammi capire: non posso criticarlo perche' lo usano in molti?
IO:
No, non puoi criticarlo perchè NON lo conosci, è diverso! E' un errore
che ho fatto anche io e spero di non ripetere mai più. Se non conosci
un linguaggio non commentare, ma se proprio devi farlo, fallo
umilmente e cerca di apprendere quello che gente (in questo caso) più
esperta di te cerca di insegnarti ecc ecc. In pratica cerca di
costruire una discussione costruttiva e NON dare addosso ad un
linguaggio o ad una persona come Maurus ha detto solo perchè sei mosso
da chissà-quale-idealismo
FINE.


 sentire?
Non faccio solo consulenze su Python: sono venale, e pagato (bene) a
ore, quindi se un cliente vuole che aiuti le sue persone a cercare dannati
bug dovuti a puntatori selvaggi in C o C++, a usare meglio Visual Basic,
o a migrare del Java da AWT a Swing, pronto.  Magari faccio pagare di
piu` di quanto non farei pagare per lavorare con Python (preferisco non
averne troppe di queste consulenze non-pitoniche, e alzando i prezzi si
riesce a scoraggiarle giusto quanto basta), certo -- ma da questo punto
di vista mi converrebbe se mai che Python _non_ si diffondesse (cosi`
ci sarebbero per sempre tanti bug da puntatori selvaggi, e piu` lavoro per
chi i bug e` piu` bravo a trovarli, ad esempio:-).  Se ho scelto di usare
piu` Python di altri linguaggi, e` perche` lo preferisco, di molto -- non e`
che nessuno mi abbia _costretto_ a questa scelta!  E se consiglio Python
quando lo ritengo la scelta migliore (cioe` in un'ampia varieta` di casi),
e` perche` mi piace vedere imporsi soluzioni tecniche migliori -- estetica
da ingegnere, certo, ma tale appunto io sono.
Tutto questo non tocca minimamente la realta` dei fatti che riporto.
Se dirigenti di Google Inc o di Industrial Light and Magic spiegano che
ruolo cruciale giochi Python nella programmazione delle rispettive
aziende, non e` certo perche` a loro ne venga in tasca nulla (che sotto
ci sia Python o PL/I, che importa a chi fa ricerche con Google o va
a vedere i film di Guerre Stellari!?-): immagino che le loro motivazioni
per parlarne siano simili alle mie, cioe` aiutare valide soluzioni tecniche
ad imporsi, indipendentemente dal guadagno personale.  Ma il punto e`
che grosse applicazioni come quelle di Google e ILM usano con
successo ed alta qualita` un linguaggio dinamico (ed altre ancora altri
linguaggi dinamici, come Erlang o Smalltalk), quindi la realta` dei fatti
dimostra chiaramente che hai torto nel dire che un linguaggio dinamico
non permette di sviluppare e mantenere buone, grandi applicazioni.
Alex

 Mi diverto troppo a leggere le cazzate che scrivi ;)
benvenuto nel club!
-- 
 < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
     Don't stand, REACT!      version 0.0.20. C, C++ and ASM developers
                              and beta testers are welcome!

 che ho fatto anche io e spero di non ripetere mai più.
Io lo conosco, quindi lo posso criticare.
*** Azimuth ***

 a vedere i film di Guerre Stellari!?-):
Vedi il mio thread a proposito.
*** Azimuth ***

 
In questo caso però tu non mi hai fornito una soluzione valida.
Adesso chiudo qui che queste discussioni tra adulti mi fanno venire 
il mal di testa :) (lo smile lo metto comunque...).


 acquistarlo, visto che la Personal č un cesso :)
Ahia ! qui mi fai incazzare, ma ti piace Python, non ti posso picchiare.


Ahia ! qui mi fai incazzare, ma ti piace Python, non ti posso picchiare.
Beh le cose sono due: o craccko la 6 (la 7 non mi interessa per ora)
oppure installo la Personal ma come ben sai è un cesso dato che i
componenti per Firebird non ci sono se non li compri. Devo smazzarmi
30mila repository per trovare componenti DB-Aware etc etc. Ero anche
tentato di acquistare il libro di Teixeira e Pacheco tempo fa ma alla
fine non so come mai sono stato mosso da qualche raptus di follia e ho
acquistato il libro di Barbini e Dessena :-) Ad ogni modo ora ho
ordinato un paio di libri "Professional C# 2nd ed." della Wrox che mi
serve per l'università (+o-) e "Python Programming on Win32", quindi
ne ho di roba da fare :-) Senza contare il fatto che vorrei imparare
ad usare Zope ma sono sempre stato negato come webmaster :(( Mi sa che
mi iscrivo al master Cepu-WEB (LOL!!!)


 il mal di testa :) (lo smile lo metto comunque...).
Purtroppo il mio fornitore di emoticon e` un po' a corto in
questi giorni, al massimo mi puo` fornire una strizzatina
d'occhio nell'ambito di un deadpan... ;-|
Alex

 le due scritture sono entrambe valide, mentre SEMANTICAMENTE non lo sono?
Ma non e` questo il caso del post, errato, che tu hai riportato!  Esso,
come postato, era sintatticamente non valido, ne` piu` ne` meno come
un programma C++ che cercasse di assegnare con := .
Se un programma e` sintatticamente valido, non ha errori di sintassi per
definizione di 'errori' e di 'valido'.  Quello che hai postato (sia pure
solo in snippet) aveva un errore di sintassi, quindi non poteva essere
stato compilato senza SyntaxError -- non era sintatticamente valido.
Cos'e`, nell'italiano, che ti risulta cosi` ostico?
Piu` in generale A VOLTE (non sempre, magari) si puo` capire un errore
SEMANTICO anche in un programma sintatticamente valido: ad esempio se
vedi una variabile inizializzata a zero poi immediatamente usata come
denominatore di una divisione (o in C dereferenziata se e` un pointer)
senza alcuna modifica nel frattempo.  Ma sono discorsi piu` generali
e non si applicano allo specifico problema di indenting di quel post.
Alex

 caso :)
Destino: continuavo a cercare di progettare HW e ogni volta mi trovavo
invece a fare SW per progettare HW, dopo la terza volta ho ceduto al
"manifesto destino".
Comunque, ahime`, temo che dovro` lasciare presto i.c.p -- mi aspettano
vari compiti piu` urgenti (compreso 
c.l.py
 che da giorni sto ahime`
trascurando a favore di i.c.p, e il solito viaggio in Svezia).  Le
varie ed eventuali menzogne e/o altre falsita` che i soliti noti
forse continueranno a ripetere magari intanto smentitele voi, grazie!
Alex

forse continueranno a ripetere magari intanto smentitele voi, grazie!
ok


 SEMANTICAMENTE non lo sono?
questa frase fa bene intendere che tu non hai capito come funziona 
l'indentazione in python (o quantomeno l'hai capito parzialmente). 
Questo spezzono di codice e` *sintatticamente* non valido:
while 1:
    print 'ciao'
  print 'salve'
il compilatore si accorge che l'indentazione non e` consistente e segnala 
un syntax error.
ciao Anto
-- 
"Computer science is not about computers any more than astronomy
is about telescopes." -- EW Dijkstra

 segnala un syntax error.
Onestamente, riesci a trovare un caso dove due tipi d'indentazione diversa
determinano codice ugualmente (sintatticamente) corretto, ma semanticamente
differente (sempre in Python)?
Kiuhnm

 un syntax error.
Perfetto. Peccato che l'errore esatto sia:
"IndentationError: unindent does not match any outer indentation level (line
xxx)"
Ma non mi dice QUALE sia il livello esatto.
D'atra parte, pensa a questi due spezzoni di codice:
while 1:
  print 'ciao'
  print 'salve'
while 1:
  print 'ciao'
print 'salve'
Qual e' quello errato? Dipende. Dipende da cosa ti dice il programmatore
originario.
*** Azimuth ***

 differente (sempre in Python)?
Premessa, usando i tab si potrebbero avere effetti strani dovuti al fatto 
che ogni editor fa un po' quello che vuole con essi (alcuni editor o 
mailreader non li visualizzano neanche!). Infatti in Python sono fortemente 
sconsigliati.
while 1:
    print "ciao"
print "pippo"
e
while 1:
    print "ciao"
    print "pippo"
Sono diversi, l'equivalente in C è:
for (;;){
    f(1);
}
f(2);
for (;;){
    f(1);
    f(2);
}
Comunque anch'io all'inizio ero scettico sull'indentazione in Python, ma 
usandolo non ho mai avuto problemi.
-- 
Marco Barisione (ICQ 84277092)

 Ma non mi dice QUALE sia il livello esatto.
Mi sembra ovvio: quello appena precedente.


 ma usandolo non ho mai avuto problemi.
Comunque ammetti che il problema senza delimitatori esiste?
Kiuhnm

 Comunque ammetti che il problema senza delimitatori esiste?
Non proprio, ammetto che per chi è abituato ad altri linguaggi può 
confondere all'inizio[1], ma non ho mai parlato personalmente con nessuno 
che programma da un po' in Python che preferisse altri metodi e nessuno che 
abbia mai avuto problemi[2]. In compenso ho sentito molta gete felice della 
maggiore leggibilità del codice.
Inoltre anche se considerassi l'uso dell'indentazione schifoso non 
giudicherei un linguaggio solo per quello, come non giudico il C o il C++ 
solo per l'uso delle graffe.
[1] Non più di quanto confonde:
if (a)
    f();
    g();
oppure:
if (a)
    if (b);
        f();
    else
        g();
[2] Tranne il recente post su pdf. In effetti il pdf non è un formato 
adatto per certe cose (come ho detto in un altro messaggio mi è capitato un 
documento in cui si mangiava le graffe in un .tex. Praticamente era 
inutilizzabile). Il pdf ha altri problemi, in alcuni casi (anche se la 
copia non è bloccata) non riesco a copiare il testo (mi vengono solo 
schifezze negli Appunti) e ingloba nel testo le note a piè di pagina e i 
numeri di pagina. Per questi motivi generamente il codice sorgente viene 
spesso distribuito anche separatamente (e non avviene solo con codice 
Python).


 semanticamente differente (sempre in Python)?
si, questo:
while 1:
    print 'ciao'
print 'salve'
while 1:
    print 'ciao'
    print 'salve'
l'indentazione diversa determina una semantica diversa. Tuttavia non e` 
poi un grande problema: un buon editor (ad esempio io uso emacs, ma 
anche idle incluso nella distribuzione di python va bene) quando premi 
<invio> posiziona il cursore alla stessa indentazione della riga 
precedente: quindi per chiudere un blocco il programmatore deve 
*esplicitamente* premere backspace: non e` molto diverso dal caso in cui 
l'utente deve esplicitamente premere il tasto '}', no?
A questo aggiungi due cose:
1) gli editor buoni quando premi backspace evidenziano in qualche modo 
quale blocco stai chiudendo, quindi se lo premi inavvertitamente te ne 
accorgi anche visivamente.
2) se anche capita di sbagliare l'indentazione e` piu` facile accorgersi 
dell'errore in fase di debug, proprio perche` il codice e` indentato 
male. Un errore analogo in C e` piu` difficile da scovare visivamente:
if (cond())
{
        foo();  }
        bar();
baz();
Ammetto che non mi e` mai capitato di commettere un errore per aver 
scritto qualcosa del genere, ma se e` per questo non mi e` mai capitato 
neppure di sbagliare una indentazione in python.
Un problema che invece di presenta di tanto in tanto nella realta` e` 
questo:
if (a())
    if (b())
      foo();
else
    bar();
anche questo non e` molto frequente, pero` ogni tanto capita (a me e` 
capitato, anche se in pascal). Python elimina il problema all'origine.
Se devo essere sincero anche io di primo acchitto sono rimasto sopreso 
dal ruolo dell'indentazione in python, e all'inizio ho dovuto prima di 
tutto abituarmici un poco. Pero` dopo averlo usato per un po' ci si 
accorge che non e` molto differente dall'usare i delimitatori - 
personalmente lo trovo anche piu` bello. IMHO in gran parte e` questione 
di abitudine.


 questione di abitudine.
OK, grazie per il chiarimento. Non ho mai programmato in Python quindi
condivido qualsiasi opinione!
Kiuhnm

 Mi sembra ovvio: quello appena precedente.
Quindi se io ho:
    if ( a ) :
        fai_a1()
      fai_a2()
    fai_b()
Vuol dire che la cosa corretta e':
    if ( a ) :
        fai_a1()
    fai_a2()
    fai_b()
Esatto?
Peccato pero' che fosse
    if ( a ) :
        fai_a1()
        fai_a2()
    fai_b()
e hai appena introdotto un baco.
Ciao!
*** Azimuth ***

         g();
Si', ma c'e' una differenza: la confusione introdotta in C e' solo
interpretativa da parte dell'osservatore successivo, mentre il comportamento
del codice e' ben definito (esegui f() se a e' diverso da zero; esegui
comunque g()). Mentre nel caso del Python devi necessariamente interloquire
con il programmatore originale per farti confermare che e' proprio quella la
sequenza (non e' solo interpretativa dell'osservatore ma cambia proprio in
comportamento del codice!).
Ciao!
*** Azimuth ***

 comportamento del codice!).
Ehm... non ho capito nulla :-)


:: Si', ma c'e' una differenza: la confusione introdotta in C e' solo
:: interpretativa da parte dell'osservatore successivo, mentre il 
:: comportamento del codice e' ben definito (esegui f() se a e' diverso da 
:: zero; esegui comunque g()). Mentre nel caso del Python devi 
:: necessariamente interloquire con il programmatore originale per farti 
:: confermare che e' proprio quella la sequenza (non e' solo 
:: interpretativa dell'osservatore ma cambia proprio in comportamento del 
:: codice!).
: Ehm... non ho capito nulla :-)
CRedo che azimuth si riferisca al fatto che nel primo caso (il linguaggio 
C) il programma ha un comportamento ben definito qualsiasi sia il riordino 
delle indentazioni. IN python, per la sua natura, cio' non e' possibile.
Fed.