Newsgroup: it.comp.programmare
Titolo: Info su Python

 Difetti: Il fatto che Python sia debolmente tipizzato (non esistono tipi di dato) lo rende un tantino difficile da comprendere quando il programma supera in dimensioni la soglia del "piccolo script".
Mi confermate questa cosa? Sinceramente per "preferenze" sono un po'
restio ad apprezzare i linguaggi che "snobbano" i tipi di dato e
volevo capire se l'autore stesse riportando un'informazione corretta o
se sia una cavolata (magari di una versione di Python un po' datata).
Grazie mille a tutti
Lone

 supera in dimensioni la soglia del "piccolo script".
Avrei parecchie cose da dire su questo trafiletto. La tipologia non ha
molto senso dato che sembra escludere tutti gli altri campi in cui
Python viene usato con enorme soddisfazioni. Idem "discretamente
veloce". Python non è debolmente tipizzato e tipi di dato esistono. La
differenza è che la tipizzazione avviene a runtime e non esiste la
dichiarazione esplicita dei tipi di dato (tipo "int c").
-- 
Lawrence, 
oluyede.org
 - 
neropercaso.it
"It is difficult to get a man to understand 
something when his salary depends on not
understanding it" - Upton Sinclair

 
Quella scritta è errata, o per lo meno fuorviante.
Python *è* tipizzato, ma dinamicamente invece che staticamente.
Io vengo dal C++ e ti posso dire che questo è molto spesso un vantaggio.
Saluti  Manlio Perillo

 restio ad apprezzare i linguaggi che "snobbano" i tipi di dato
Python non "snobba" i tipi di dato se tu hai preferenze di altro tipo, e
"sti cazzi" :-))... non vorrei che stessi intraprendendo (viste le ultime
discussioni apparentemente pacate in un altro thread) una campagna di
abbattimento del pitone ;-)
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Quella scritta è errata, o per lo meno fuorviante.
Ho letto quanto riportato in quella pagina e mi sono fatto un'idea della
competenza di questa persona. Ci sono delle chicche da tenere in conto,
come quando afferma che se sei un purista usi il C++ (chissà perché poi
l'uso del C++ implichi l'essere un purista, e di che poi ?) od anche che
se cerchi un compromesso tra semplicità (rispetto a cosa?) e velocità
(rispetto a cosa?) usi Delphi (il cui codice compilato è invece veloce
tanto quanto altre implementazioni di C++) e poi, ciliegina sulla torta,
che "se vi piace l'OOP invece C# o Java", come se usare Python, Delphi o
C++ significasse che non mi piace la OOP :-D
L'errore comune di queste maccheroniche "comparison" è quello di
confrontare linguaggi ad ambienti di sviluppo: C e C++ sono *linguaggi*,
dalle implementazioni diversissime, così come Python potrebbe non essere
sempre implementato allo stesso modo; idem per Java e C#. Delphi e VB sono
cose diverse, invece.  
Bah... ho richiuso la pagina, dicendomi: eccone un altro :-)


Bah... ho richiuso la pagina, dicendomi: eccone un altro :-)
Guarda, sono arrivato a quella pagina cercando tutt'altro (delle
dispense di informatica teorica per un amico, infatti la pagina
principale si chiama, in modo fuorviante, secondo me, "DISPENSE DI
INFORMATICA", trattando temi che sono tutt'altro che informatica
teorica ;D.
In origine ho cercato anche di contattare direttamente te, visto che
mi sembravi molto ferrato con Python, ma il tuo indirizzo di posta
elettronica, tolta quella che pensavo fosse un'aggiunta antispam, non
è stato risolto dal mio SMTP Server... Così ho postato in NG.
Sta tranquillo che io sarò l'ultimo a dire qualcosa di negativo di un
linguaggio che non conosco per partito preso, a meno di esporre le mie
sensazioni "a pelle" che comunque sono discutibilissime (e benvenuto
chi mi fa cambiare idea con motivazioni oggettive :D).
Lone

@Tutti:
Grazie delle risposte. Leggiucchiando in modo molto rapido il tutorial
ufficiale di Python mi sono fatto un'idea della struttura del
linguaggio (contento, Andrea? ;)) ed effettivamente è come dite voi.
E' molto simile ad altri linguaggi di scripting su cui ho lavorato (al
netto della sintassi), almeno per il discorso "tipizzazione delle
variabili". In pratica la variabile viene tipizzata a runtime a
seconda dell'utilizzo (pippo = "la vispa teresa" ---> La variabile
pippo diventa una stringa), un po' come succede in VBScript o PHP. Al
contrario di questi, però, supporta le classi (OOP), che in VBScript
sono una porcheria (niente ereditarietà, niente di niente) e in PHP mi
pare siano state aggiunte solo nella versione 5.0, se non ricordo male
(è un po' che non ci traffico seriamente).
Insomma, come dicevo, il linguaggio mi ispira, anche se al momento non
ho proprio tempo di studiarlo in modo approfondito :D
Lone

 linguaggio (contento, Andrea? ;)) 
Non particolarmente ;-)... diciamo che del fatto che tu, come caso
isolato, sia informato su Python mi interessa poco; ci tengo più a che tu
non diffonda notizie "false e tendenziose" :-)... indi per cui sono
ugualmente contento, visto che confido che la "maggiore" (le virgolette
sono d'obbligo vista la leggiucchiata molto rapida) conoscenza del
linguaggio ti porti a dire cose esatte e non cose errate. Poi, ovviamente,
lascio il beneficio del dubbio: puoi continuare a dire inesattezze e
questo è il rischio da correre :-)
Just for the record: io non sono affatto ferrato su Python (anche io sono
in deficit perenne di tempo libero), ci ho fatto giusto qualcosina
(peraltro come integrazione a Delphi, il linguaggio che uso principalmente
per programmare), ma ho consigliato il suo apprendimento a persone anche
molto giovani e ho visto gli ottimi risultati.  Attualmente "lurko"
it.comp.lang.python, in cui c'è una buona concentrazione di persone che,
oltre ad essere esperte del linguaggio in sé (Alex Martelli, tanto per
fare un esempio eclatante, ha scritto un paio di libri su Python e lavora
per Google) è ferrata in molti altri ambiti.
Se Python attrae le menti più fervide in programmazione (ed io non mi
annovero affatto tra esse, intendiamoci; parlo di altri), un motivo ci
sarà :-)


>> 1 + 'ciao'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Penso che il messaggio di errore sia particolarmente chiaro. 
-- 
blog:  
http://www.akropolix.net/rik0/blogs
 | Uccidete i filosofi,
site:  
http://www.akropolix.net/rik0/
      | tenetevi riso e
forum: 
http://www.akropolix.net/forum/
     | bacchette per voi.

 (è un po' che non ci traffico seriamente).
Fermati. Sei fuori strada. Io non so tu con quali linguaggi ti senti
ferrato, per cui cerco di lasciare fuori esempi.
Se c'è una cosa che trovo ancora più priva di senso del concetto di
'linguaggio compilato' e 'linguaggio interpretato' (e se vuoi poi ti
spiego perchè) è la dizione 'linguaggio di scripting'.
Linguaggio di scripting vuole dire tutto e niente. E' un'etichetta
convenzionale (e spesso usata in senso 'leggermente dispregiativo'). Ma
vuole dire poco o nulla.
Python come sistema di tipi è relativamente simile a Ruby. E
radicalmente diverso da PHP e da Perl. 
In primo luogo in Python le variabili sono 'puntatori' o 'riferimenti',
chiamalo come vuoi (purtroppo se pensi ai puntatori e ai riferimenti del
C++ vai fuori strada: in C++ i primi hanno l'artimetica dei puntatori, i
secondi non sono riassegnabili). Attenzione: questo non vuole dire che
ci sia l'aritmetica dei puntatori.
Per certi versi sono simili alle variabili di Java (lasciando stare i
tipi numerici): una variabile in realtà 'punta' ad un oggetto. Quindi
con una cosa tipo
r = s
hai che r e s puntano allo stesso oggetto. Lo stesso è in Python.
La differenza è però questa: in Python gli oggetti hanno tipo, non le
variabili. Un oggetto in Python ha un tipo (e conosce in maniera del
tutto precisa il suo tipo). Le variabili no: una variabile 'punta' ad un
oggetto di qualunque tipo.
D'altra parte le operazioni non lecite (sommare pere con mele) lanciano
eccezione, non sono passate sotto silenzio come in molti casi in PHP o
in Perl. 
Quando dici "La variabile pippo diventa una stringa" stai pensando la
cosa in modo sbagliato.
pippo = "la vispa teresa"
tu hai che *esiste* un oggetto di tipo stringa (e che contiene il testo
"la vispa teresa"). E hai che la variabile 'pippo' ti permette di
riferirti a quell'oggetto.
Ma la variabile pippo non ha *mai* un tipo. L'oggetto di tipo stringa ha
*sempre* tipo stringa. 


 variabili".
Beh, qui si dovrebbe definire bene che cosa si intende di preciso
quando si utilizza l'espressione "linguaggio di scripting" (che è una
cosa tutt'altro che banale). :-)
Il più delle volte tale appellativo viene (erroneamente) associato a
tutti quei linguaggi a tipizzazione dinamica e/o che non richiedono
compilazione.
Definire bash o ksh linguaggi di scripting mi pare appropriato,
associare questo appellativo a Python o Ruby mi pare estremamente
riduttivo e, molto spesso, sinonimo di una cultura assai limitata e/o
errata sull'argomento (non mi sto riferendo a te in particolare,
beninteso).
Software complessi come bittorrent o twisted non si fanno di certo con
un mero "linguaggio di scripting"...
Che poi con py ci si faccia anche quello è un altro discorso.