Python: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Daniele (discussione | contributi)
Nessun oggetto della modifica
Riga 1:
'''Python''' è un potente [[w:Linguaggio di programmazione#Linguaggi di scripting|linguaggio di programmazione]] interpretato creato da [[w:Guido van Rossum|Guido van Rossum]]. Prende il nome dalla serie televisiva ''[[w:Monty Python's Flying Circus|Monty Python's Flying Circus]]''.
 
== Filosofia ==
Python è un linguaggio multi-paradigma. Infatti permette in modo agevole di scrivere programmi seguendo il [[w:paradigma object oriented|paradigma object oriented]], oppure la [[w:programmazione strutturata|programmazione strutturata]], oppure la [[w:programmazione funzionale|programmazione funzionale]]. Il controllo dei tipi viene fatto a [[w:runtime|runtime]] ([[w:dynamic typing|dynamic typing]]) e usa un [[w:garbage collector|garbage collector]] per la gestione automatica della memoria.
 
Python ha qualche similarità con [[Linguaggio Perl|Perl]], ma i suoi progettisti hanno scelto la via di una sintassi molto più essenziale e uniforme, con l'obiettivo di aumentare la leggibilità del codice. Come il [[Perl]] spesso è classificato ''[[w:linguaggio di scripting|linguaggio di scripting]]'', ma pur essendo utile per scrivere [[w:script|script]] di sistema (in alternativa ad esempio a [[w:bash|bash]]), la grande quantità di librerie disponibili e la facilità con cui questo linguaggio permette di scrivere software modulare favoriscono anche lo sviluppo di applicazioni molto complesse.
 
== Tipi di dati e strutture ==
Riga 12:
Supporta tutte le operazione classiche sulle stringhe con questa eccezione: le stringhe in Python sono oggetti immutabili, cosicchè qualsiasi operazione che in qualche modo potrebbe alterare una stringa (come ad esempio la sostituzione di un carattere) restituirà invece una nuova stringa.
 
Essendo il Python a tipizzazione dinamica, tutte le variabili sono in realtà semplici puntatori ad oggetto ([[reference]]), sono gli oggetti invece ad essere dotati di tipo. Ad esempio ad una variabile cui era assegnato un intero, un istante dopo può essere assegnata una [[w:stringa|stringa]] o un [[w:array|array]].
 
In Python c'è un moderato controllo dei tipi a runtime. Si ha conversione implicita per i tipi numerici, per cui si può ad esempio moltiplicare un numero complesso per un intero, ma non c'è ad esempio conversione implicita tra numeri e stringhe, per cui un numero è un argomento non valido per le operazioni su stringa.
Riga 30:
== Sintassi ==
 
Python è stato progettato in modo da essere altamente leggibile. Visivamente si presenta in modo molto semplice e ha pochi costrutti sintattici rispetto a molti altri linguaggi strutturati come [[Linguaggio C|C]], [[Linguaggio Perl|Perl]] o [[PascalProgrammare (linguaggio)in Pascal|Pascal]].
 
Per esempio, Python ha solo due forme di ciclo -- <TT>for</TT>, che cicla sugli elementi di una lista o su di un iteratore (come il <TT>foreach</TT> del Perl); e <TT>while</TT>, che cicla fin tanto che l'espressione booleana indicata risulta vera. In sostanza manca dei cicli in stile C <TT>for</TT>, <TT>do</TT>...<TT>while</TT>, oppure di un <TT>until</TT> in stile Perl, ma tutti questi naturalmente possono essere espressi con dei semplici equivalenti. Allo stesso modo ha solamente il costrutto <TT>if</TT>...<TT>elif</TT>...<TT>else</TT> per le scelte condizionate -- niente <TT>switch</TT> oppure <TT>goto</TT>.
Riga 38:
Una cosa inusuale del Python è il metodo che usa per delimitare i blocchi di programma, che lo rende unico fra tutti i linguaggi più diffusi.
 
Nei linguaggi derivati dall'[[Linguaggio Algol|Algol]] -- come ad esempio Pascal, [[C]] e [[Perl]] -- i blocchi di codice sono indicati con le parentesi oppure con parole chiave. (Il [[C]] ed il [[Perl]] usano <TT>{ }</TT>; il Pascal usa <TT>begin</TT> ed <TT>end</TT>.) In questi linguaggi è solo una convenzione degli sviluppatori il fatto di indentare il codice interno ad un blocco, per metterlo in evidenza rispetto al codice circostante.
 
Python, invece, prende a prestito una caratteristica dal meno noto linguaggio di programmazione [[Linguaggio Occam|Occam]] -- invece di usare parentesi o parole chiavi, usa l'indentazione stessa per indicare i blocchi nidificati. Di seguito un esempio per chiarire questo. La versione [[C]] e Python di funzioni che fanno la stessa cosa -- calcolare il fattoriale di un intero:
 
''Fattoriale in C:''
Riga 63:
==== Programmazione funzionale ====
 
Come detto sopra, un altro punto di forza del Python è la disponibilità di elementi che facilitano la [[w:programmazione funzionale|programmazione funzionale]]. Come ci si può aspettare, questo rende ancora più comodo operare con liste o altri tipi contenitore. Uno di questi costrutti è stato preso dal linguaggio funzionale [[Linguaggio Haskell|Haskell]] e consente il "riempimento" di una lista, come possiamo vedere nel seguente esempio in cui vengono calcolate le prime cinque potenze di due:
 
numeri = [1, 2, 3, 4, 5]
Riga 80:
Python supporta e usa estensivamente la [[gestione delle eccezioni]] come un mezzo per controllare la presenza di eventuali condizioni di errore. Addirittura è possibile intercettare l'eccezione generata da un errore di sintassi (syntax error)!
 
Le [[eccezioni]] permettono un controllo degli errori più conciso ed affidabile rispetto a molti altri modi possibili usati in genere per segnalare errori o situazioni anomale. Le eccezioni sono [[thread-safe]]; non sovraccaricano il [[codice sorgente]] come fanno invece in [[C]] i controlli sui valori di errore ritornati, e inoltre possono facilmente propagarsi verso l'alto nello [[stack]] delle chiamate a funzione quando un errore deve venire segnalato ad un livello più alto del programma.
 
Il modo di fare frequente consiste, invece che fare controlli preventivi, nell'eseguire direttamente l'azione desiderata e catturare invece le eventuali eccezioni che si verificassero.
Riga 87:
 
Python ha una vasta [[libreria standard]], il che lo rende adatto a molti impieghi.
Inoltre ai moduli della libreria standard se ne possono aggiungere altri scritti in C oppure Python per soddisfare le proprie esigenze particolari. Tra i moduli già disponibili ce ne sono per scrivere applicazioni web (sono supportati [[w:MIME|MIME]], [[w:HTTP|HTTP]] e tutti gli altri standard internet). Sono disponibili anche moduli per creare applicazioni con interfaccia grafica, per connettersi a [[database relazionali]], per usare le [[espressioni regolari]] e per fare molte altre cose.
 
La libreria standard è uno dei punti forti di Python. Essa infatti compatibile con tutte le piattaforme, ad eccezione di poche funzioni, segnalate chiaramente nella documentazione come specifiche di una piattaforma particolare. Grazie a questo generalmente anche programmi Python molto grossi possono funzionare su Linux, Mac, Windows e altre piattaforme senza dover essere modificati.
Riga 108:
 
[[Categoria:Linguaggi di programmazione]]
[[Categoria:Linguaggi interpretati]]
 
[[de:Python-Programmierung]]