Home Documentazione in italiano Aiuto Link FAQ

La FAQ di Python - Sezione 1

(Basata sulla FAQ aggiornata al 28 Giugno 1999)


1. Informazioni generali e di accesso alle risorse Python


1.1. Che cos'è Python?

Python è un linguaggio di programmazione interpretato, interattivo, ad oggetti. Incorpora i moduli, le eccezioni, la tipizzazione dinamica, alcuni tipi di dati dinamici ad altissimo livello e le classi. Python unisce una potenza considerevole ad una sintassi molto pulita e comprensibile. È dotato di interfacce a molte chiamate di sistema e librerie, come pure a vari sistemi a finestre, ed è estensibile in C o C++. È utilizzabile pure come linguaggio di estensione per applicazioni che necessitano di un'interfaccia programmabile. Infine, Python è portabile: funziona su molte versioni di UNIX, su Mac, e sui PC sotto MS-DOS, Windows, Windows NT, e OS/2.

Per saperne di più la cosa migliore è iniziare a leggere il tutorial, presente nella documentazione ufficiale [lo potrete trovare a breve sul nostro sito in italiano NdT] (si veda qualche domanda più avanti).

Si veda anche la domanda 1.17. Cos'è capace di fare Python?.


1.2. Perché è chiamato Python?

Oltre ad essere un informatico, Guido Van Rossum [anche autore della presente NdT] è anche un fan del "Monty Python's Flying Circus", una serie televisiva apparsa sulla BBC negli anni '70, nel caso non ne abbiate sentito parlare. Un giorno, mentre pensava ad un nome che fosse breve, unico ed un po' misterioso, gli capitò di leggere dei copioni [`script' NdT] della serie... e così decise di chiamare Python il linguaggio da lui creato. Ma Python non è un gioco. E non è nemmeno il caso di associarlo ai pericolosi rettili omonimi! (Se vi serve un'icona, usate l'immagine del peso di 16 tonnellate della serie TV o di una confezione di carne in scatola, lo `SPAM' :-))


1.3. Come posso ottenere una copia dei sorgenti Python?

La distribuzione completa dei sorgenti Python più recenti è sempre disponibile a mezzo ftp anonimo, per esempio presso ftp://ftp.python.org/pub/python/src/python1.4.tar.gz. Si tratta di un archivio tar gzippato contenente il codice sorgente C completo, la documentazione in formato LaTeX, i moduli della libreria Python, programmi di esempio e parecchi altri utili frammenti di software liberamente distribuibile. Potrà essere compilato ed eseguito senza modifiche sulla maggior parte delle piattaforme UNIX. (Si veda la sezione 7 per informazioni sull'utilizzo su piattaforme diverse da UNIX [e la sezione 8 per informazioni sull'utilizzo su piattaforme Windows NdT]).

Il file INDEX contiene un indice della directory ftp menzionata. Una versione HTML dell'indice si trova in ftp://ftp.python.org/pub/python/index.html.


1.4. Dove trovo documentazione su Python?

Tutta la documentazione è disponibile in linea, si può partire da: http://www.python.org/doc .

Il sorgente LaTeX della documentazione è compreso nella distribuzione dei sorgenti. Se non avete LaTeX, l'intera documentazione Python, nella versione più recente, è disponibile in vari formati (postscript, html ecc.) a mezzo ftp anonimo - si consulti l'URL soprariportato per i link alle versioni correnti.

In un file PostScript a parte sul sito ftp, nluug-paper.ps, si può trovare una descrizione ad alto livello di Python [titolo: Un'introduzione a Python per Programmatori Unix/C NdT].


1.5. Ci sono altri siti ftp con mirror della distribuzione Python?

I siti ftp seguenti mantengono un mirror della distribuzione Python:

USA:

        ftp://ftp.python.org/pub/python/
        ftp://gatekeeper.dec.com/pub/plan/python/
        ftp://ftp.uu.net/languages/python/
        ftp://ftp.wustl.edu/graphics/graphics/sgi-stuff/python/
        ftp://ftp.sterling.com/programming/languages/python/
        ftp://uiarchive.cso.uiuc.edu/pub/lang/python/
        ftp://ftp.pht.com/mirrors/python/python/
	ftp://ftp.cdrom.com/pub/python/
Europe:

        ftp://ftp.cwi.nl/pub/python/
        ftp://ftp.funet.fi/pub/languages/python/
        ftp://ftp.sunet.se/pub/lang/python/
        ftp://unix.hensa.ac.uk/mirrors/uunet/languages/python/
        ftp://ftp.lip6.fr/pub/python/
        ftp://sunsite.cnlab-switch.ch/mirror/python/
        ftp://ftp.informatik.tu-muenchen.de/pub/comp/programming/languages/python/
Australia:

        ftp://ftp.dstc.edu.au/pub/python/


1.6. Ci sono gruppi o liste di discussione dedicati a Python?

C'è un newsgroup, comp.lang.python, e una mailing list [per la situazione in Italia si veda in fondo alla risposta! NdT]. Il newsgroup e la mailing list sono collegati in gateway reciproco -- se si possono leggere le news non è necessario iscriversi alla lista. Per iscriversi alla lista (python-list@python.org) si visiti la pagina web del Mailman presso http://www.python.org/mailman/listinfo/python-list

Maggiori informazioni sul newsgroup e sulla mailing list, e su altre liste, possono essere trovate presso: http://www.python.org/psa/MailingLists.html.

Gli archivi del newsgroup sono conservati da Deja News e accessibili attraverso la pagina web "Python newsgroup search", http://www.python.org/search/search_news.html. Tale pagina contiene anche dei puntatori ad altre raccolte di archivi.

[Presenteremo una RFD per it.comp.lang.python a settembre, votatela! Abbiamo anche aperto una lista di discussione in italiano, iscrivetevi sulla pagina apposita del ns. sito! NdT]


1.7. C'è una pagina web dedicata a Python?

Sì, http://www.python.org è la home page ufficiale di Python [e c'è la nostra home page italiana di Python NdT].


1.8. La documentazione Python è disponibile sul web?

Certo, si veda http://www.python.org/ (La home page di Python). Contiene puntatori a versioni ipertestuali dell'intero set di documenti (sotto forma di ipertesto, non PostScript).

Se si desidera consultare la documentazione in formato HTML in locale sulla propria macchina, essa è disponibile, debitamente impacchettata, a mezzo ftp anonimo, come:ftp://ftp.python.org/pub/python/doc/html.tar.gz e mirror vari.

Un insieme di file nel formato Emacs-INFO, contenente il manuale della libreria è ugualmente disponibile via ftp anonimo, presso ftp://ftp.python.org/pub/python/doc/lib-info.tar.gz e mirror vari.


1.9. Ci sono libri su Python?

Si, parecchi [nessuno in lingua italiana :-/ NdT]:

      + Internet Programming with Python 
        by Aaron Watters, Guido van Rossum, and James Ahlstrom
        MIS Press/Henry Holt publishers
        ISBN: 1-55851-484-8
        First published October, 1996
      + Programming Python 
        by Mark Lutz
        O'Reilly & Associates
        ISBN: 1-56592-197-6
        First published October, 1996
      + Das Python-Buch (in German)
        by Martin von Loewis and Nils Fischbeck
        Addison-Wesley-Longman, 1997
        ISBN: 3-8273-1110-1
Ne stanno per uscire altri:

      + Python Pocket Reference
	by Mark Lutz
	O'Reilly & Associates
	ISBN 1-56592-500-9
	1st Edition October 1998 (est.)
	80 pages (est.), $6.95 (est.)


1.10. C'è qualche articolo su Python al quale possa fare riferimento?

Se non potete fare riferimento al sito web, e non volete rivolgervi ai libri (si veda la domanda precedente), ci sono parecchi articoli su Python che potreste consultare.

La maggior parte delle pubblicazioni su Python sono raccolte sul sito web di Python:

    http://www.python.org/doc/Publications.html
Non è più raccomandato di consultare un vecchio articolo dell'autore di Python:

    Guido van Rossum and Jelke de Boer, "Interactively Testing Remote
    Servers Using the Python Programming Language", CWI Quarterly, Volume
    4, Issue 4 (December 1991), Amsterdam, pp 283-303.


1.11. Ci sono brevi documenti introduttivi su Python?

Ce ne sono parecchi - alcuni link si possono trovare su: http://www.python.org/doc/Hints.html#intros.


1.12. Come funziona lo schema di numerazione delle versioni Python?

Le versioni di Python sono numerate come A.B.C o A.B . A è il numero della versione principale (`major version number') -- è incrementato solo in occasione di modifiche importanti nella funzionalità o nella struttura del sorgente. B è il numero della versione secondaria, incrementato in occasione di cambiamenti meno traumatici a una release. C è il `livello di patch' -- viene incrementato ad ogni nuova patch per una determinata release. Non tutte le release hanno patch di release. Si noti che nel passato le patch hanno apportato cambiamenti significativi; infatti il passaggio da 0.9.9 a 1.0.0 fu la prima volta che A o B cambiarono!

Le versioni beta hanno un suffisso addizionale "betaN" con N numero piuttosto piccolo. Si noti che (per esempio) tutte le versioni classificate come 1.4betaN precedono l'effettiva release 1.4 . 1.4b3 è un'abbreviazione di 1.4beta3 .


1.13. Come posso ottenere una versione beta di Python?

Se ci sono delle release beta, esse vengono rese disponibili nella normale directory dei sorgenti (p.e. ftp://ftp.python.org/pub/python/src/).

Le release alpha sono disponibili solo ai membri PSA. Si veda http://www.python.org/psa/ per informazioni su come entrare a farne parte ($50/anno).


1.14. Ci sono restrizioni per diritti di copyright sull'uso di Python?

A malapena. Si può fare ciò che si vuole con i sorgenti, fino a che si lasciano inalterati i copyright presenti, e si riportano tali copyright in qualsiasi documentazione che si produca su Python. Inoltre non si usi il nome dell'istituto dell'autore per fare pubblicità senza un precedente permesso scritto, e non lo si ritenga responsabile di alcunché (si legga il vero copyright per un'enunciazione precisa in termini legali).

In particolare, se si rispettano le regole del copyright, sono permessi usi commerciali di Python, come vendere copie di Python in forma di sorgenti o binari, o vendere prodotti che costituiscono miglioramenti di Python o lo incorporano in qualche forma (totalmente o in parte). Nondimeno vorrei venire a conoscenza di tutti gli usi commerciali di Python!


1.15. Per quale motivo fu creato Python in primo luogo?

Ecco un sommario veramente conciso di ciò che mi ha fatto iniziare:

Ho fatto molta esperienza nell'implementazione di un linguaggio interpretato nel gruppo ABC presso CWI, e lavorando con questo gruppo ho imparato molto circa la progettazione di linguaggi. Queste sono le origini di molte caratteristiche di Python, compreso l'uso dell'indentazione [o "rientro" NdT] per raggruppare le istruzioni e l'inclusione di tipi di dati di altissimo livello (sebbene i dettagli in Python siano totalmente diversi).

C'erano cose del linguaggio ABC che non mi andavano giù, ma apprezzavo anche molte delle sue caratteristiche. Era impossibile estendere ABC (o la sua implementazione) per rimediare a quello che non mi andava a genio -- in effetti la carenza di estensibilità era uno dei suoi problemi più grossi. Avevo una qualche esperienza nell'utilizzo di Modula-2+ e parlai con i progettisti di Modula-3 (e lessi il rapporto M3). M3 è l'origine della sintassi e della semantica usate per le eccezioni, e di alcune altre caratteristiche di Python.

Stavo lavorando nel gruppo del sistema operativo distribuito Amoeba presso il CWI. Avevamo bisogno di effettuare l'amministrazione di sistema in un modo migliore che scrivendo programmi in C o script per la shell Bourne, dato che Amoeba aveva un'interfaccia propria alle chiamate di sistema che non era facilmente accessibile dalla shell Bourne. La mia esperienza con la gestione degli errori in Amoeba mi rese acutamente consapevole dell'importanza [del trattamento NdT] delle eccezioni come caratteristica di un linguaggio di programmazione.

Mi venne in mente che un linguaggio di script con una sintassi come quella di ABC ma con accesso alle chiamate di sistema Amoeba sarebbe stato un'ottima soluzione. Capii che sarebbe stato sciocco scrivere un linguaggio specifico per Amoeba, così decisi che avevo bisogno di un linguaggio che fosse estensibile in generale.

Durante le vacanze di Natale del 1989 avevo un mucchio di tempo a disposizione, così decisi di provarci. Durante l'anno successivo, mentre ancora ci stavo lavorando sopra, perlopiù durante il mio tempo libero, Python fu usato nel progetto Amoeba con crescente successo, e i suggerimenti dei miei colleghi mi permisero di aggiungere molti miglioramenti allo stadio iniziale.

Nel Febbraio 1991, dopo poco più di un anno di sviluppo, decisi di inviare un messaggio su USENET. Il resto si trova nel file Misc/HISTORY.


1.16. Mi deve piacere il "Monty Python's Flying Circus"?

No, ma aiuta. Il vero Pythoniano gradisce i riferimenti occasionali a SPAM e, ovviamente, nessuno si aspetta l'Inquisizione Spagnola [uno sketch dei MP al quale si riferisce anche "E le belle uniformi rosse" NdT].

Le due ragioni principali per usare Python sono:

 - la portabilità
 - la facilità di apprendimento
Le tre ragioni principali per usare Python sono:

 - la portabilità
 - la facilità di apprendimento
 - la potente libreria standard
(E le belle uniformi rosse).

E ricordatevi, non c'è nessuna regola numero sei [rif. allo sketch "The Bruces" dei MP NdT].


1.17. Cos'è capace di fare Python?

Python viene usato in molte situazioni dove sono necessari in gran quantità dinamismo, facilità di utilizzo, potenza e flessibilità.

Nell'area della manipolazione di semplice testo, Python puro (senza alcuna estensione `non-core') è più semplice da usare di qualsiasi altro linguaggio ed è all'incirca ugualmente veloce. Ciò rende Python una buona scelta per molti compiti del tipo amministrazione di sistema, per la programmazione CGI e per altre aree applicative in cui sia fondamentale il trattamento di testo e stringhe, e così via.

Quando gli si aggiungono estensioni standard (come PIL, COM, Numeric, oracledb, kjbuckets, tkinter, win32api, ecc.) o estensioni per scopi particolari (che è possibile scrivere, utilizzando strumenti come SWIG, o protocolli ad oggetti come ILU/CORBA o COM) Python diventa un ottimo linguaggio di "gluing" o di "steering", che permette di far lavorare assieme gruppi eterogenei di pacchetti software che non hanno rapporti tra di loro. Ad esempio, combinando Numeric con oracledb diventano possibili analisi statistiche sul proprio database SQL, o anche trasformate di Fourier. Una delle caratteristiche che rendono Python un eccellente linguaggio di "gluing" è la sua semplice, usabile e potente API C runtime.

Inoltre molti sviluppatori utilizzano largamente Python come strumento di sviluppo di interfacce grafiche utente.


1.18. Posso usare il software `FAQ Wizard' per gestire la mia FAQ personale?

Certo. La Versione 1.0 è distribuita nella subdirectory Tools dei sorgenti Python 1.5 presso:

  http://www.python.org/ftp/python/src/py152.tgz


1.19. Quale programma editor offre un buon supporto alla scrittura di codice sorgente Python?

Su Unix, la scelta primaria è Emacs/XEmacs. C'è un'elaborata modalità di editing del codice Python, disponibile nella distribuzione dei sorgenti Python (Misc/python-mode.el). Si trova anche in `bundle' con XEmacs (stiamo ancora lavorando sui dettagli legali per rendere possibile un `bundle' con FSF Emacs). Ed ha pure una pagina web dedicata:

    http://www.python.org/emacs/python-mode/index.html
Sono possibili molte altre scelte, per Unix, Windows o Macintosh. Richard Jones ha compilato una tabella prendendo spunto dai messaggi apparsi sul newsgroup di Python:

    http://www.bofh.asn.au/~richard/editors.html

Si veda anche la domanda 7.10 per alcune opzioni in più per Mac e Win.


Potete inviare commenti e correzioni a questo doc a python.it@tiscalinet.it.