Braddock ha scritto:Questo lo sapevo... se leggi ho scritto che in realtà Python è un linguaggio non interpretato, nè compilato, ma pseudocompilato. Probabilmente ho voluto essere troppo "spiccio" in certi passaggi e si finisce per fraintendere laddove non è chiarissimo quando sto parlando di Python e quando sto parlando di linguaggi in generale.
E` una cosa su cui noi Pythonisti siamo piuttosto sensibili

.
E` che poi regolarmente arriva il C++/Java/C/C#/Delphi-sta che se ne esce con "ah... ma python non e` un *vero* linguaggio di programmazione", "python e` solo un linguaggio di scripting" etc etc

.
Quindi e` abbastanza in uso essere molto fiscali su ste cose qua

.
ma in realtà vorrebbe anche mostrare che cosa accade in generale nei linguaggi. Infatti mi pareva di aver sottolineato che la dichiarazione è un meccanismo che esiste in molti linguaggi a differenza di quanto avviene in Python
Vero. Poi lo dici. Sinceramente mi chiedo se sia la scelta giusta. Mi spiego. Python e` relativamente particolare come linguaggio.
Per esempio non e` comune la fiscalita` con l'indentazione. Non e` nemmeno cosi` diffusa l'assenza totale di costrutti di dichiarazione.
In Perl per esempio puoi forzare l'obbligo di dichiarare le variabili. In Python la "dichiarazione" proprio non esiste. Perfino lo statement global, anche se presente, non fa la cosa ovvia e in genere non e` necessario, oltre che sconsigliato.
Insomma... percorrere le due strade in parallelo non sono certo che non ingeneri piu` confusione del necessario; magari potresti fare prima tutto il Python, poi in un'appendice spiegare le differenze fra Python e un generico linguaggio, per esempio introdurre il concetto di dichiarazione.
Per gli oggetti (e i relativi concetti) pensavo proprio di fare un capitolo a parte ... non volevo mettere troppa carne al fuoco.
Chiaro. Non volevo suggerirti di partire in tronco con gli oggetti. Solo di mettere in evidenza che le "variabili" sono solo delle etichette, dei nomi che denotano degli "enti". Che puoi anche chiamare "oggetti" in senso intuitivo (e poi la cosa si scopre anche essere rigorosa

).
Se si capisce fin da subito che le variabili sono solo un modo di chiamare gli oggetti, ma non sono gli oggetti, IMHO si va avanti meglio. E come concetto non e` nemmeno troppo problematico, sempre IMHO.
Dico questo perche` molte persone cui ho mostrato il Python, abituate a linguaggi in stile C, si chiedevano del perche` di certi comportamenti non ovvi. In particolare dell'apperente dualita` di comportamento fra oggetti mutabili e oggetti immutabili. Dualita` che si vede non esistere considerando che le variabili sono solo nomi.
Anche qui ... non volevo scendere in dettagli eccessivi e ho pensato che spiegando ad un principiante si potesse sorvolare un secondo su questa distinzione.
Purtroppo questa e` un'altra delle idiosincrasie del Python. La differenza fra statement ed espressioni e` molto marcata, e ci sono posti "notevoli" in cui per esempio puoi mettere espressioni ma non statement.
esempio
if a=b: print a
in Python non funzionera` mai, mentre per dire in C sarebbe corretto.
Questo perche` anche l'assegnamento non e` un'espressione.
Gli statement per esempio non hanno valore di ritorno (chiaramente visto che non sono funzioni), mentre le espressioni hanno sempre un valore di ritorno. Loro stesse nella fattispecie, o nel caso delle funzioni, il valore ritornato. Valore che c'e` sempre, al limite None.
IMHO a semplificare troppo, si corrono dei rischi. Per questo e` difficile insegnare ai principianti.
Comunque ci sono numerosi docuementi per principianti "ufficiali", alcuni forse anche tradotti in italiano. Magari dacci un occhio per prendere spunto su certe cose.
