Cos'è Python ● Linguaggio di programmazione: ● Alto livello e General purpose ● Sintassi estremamente pulita ● Multiparadigma ● Tipazione dinamica ● Embeddable ed Estensibile ● Multipiattaforma ● Diverse implementazioni del linguaggio
Python per programmatori Java ● Linguaggio compilato in bytecode ● In Python compilazione implicita ● Tutto è un oggetto ● Libreria standard vasta e potente ● Garbage collection ● Introspezione ● Serializzazione ● Threads
Python per programmatori C++ ● Multiparadigma ● Ereditarietà multipla ● Sovraccarico degli operatori ● Decine di librerie terze parti per applicazioni GUI, rete, database, calcolo distribuito
Python per programmatori C ● Trust the programmer ● Don’t prevent the programmer from doing what needs to be done. ● Keep the language small and simple. ● Provide only one way to do an operation. ● Make it fast, even if it is not guaranteed to be portable. (oops... :-) – Keep the spirit of C, C99 Rationale
Python per programmatori. ● Tipazione forte ma dinamica ● I nomi non hanno tipo, gli oggetti sì ● Niente dichiarazioni – solo istruzioni ● Sintassi minimale ● Indentazione definisce i blocchi ● Niente () se non strettamente necessario ● In generale, poca punteggiatura ● Tutto è un oggetto di prima classe ● Funzioni, classi, metodi, moduli ● Il focus è sull'alto livello
Popolarità Non necessariamente un linguaggio popolare è anche buono, ma un linguaggio buono deve essere popolare (P.Graham). http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Fattori esterni ● Documentazione e libri ● Documentazione ufficiale esaustiva ed aggiornata ● Mailing lists, gruppi di discussione, canali IRC sia internazionali che localizzati ● Decine di Tutorials online ● Decine e decine di ottimi libri e manuali sull'argomento
Fattori esterni ● Comunità ● Python Diversity ● Local User Groups ● Conferenze ● Open Source - Licenza PSFL ● Certificata OSI ● Certificata FSF ● BSD-like, molto liberale
Espressività ● add x to y giving z ● z=x+y ● print 'hello, world' ● print sum(x for x in range(1000) if x%3==0 or x % 5==0) ● The Zen of Python: readability counts. ● Executable pseudo-code
Python per tutti ● Ottimo come primo linguaggio ● Ragazzi – Python 4 kids, Snake wrangling for kids, Invent With Python ● Adulti – How to Think Like a Computer Scientist – A Gentle Introduction to Programming Using Python (MIT) ● Nonnetti – Artificial Intelligence: a modern approach, P.Norvig ● Ottimo come ultimo linguaggio ● Nel senso che non vorrete più cambiarlo