Slide 1

Slide 1 text

Python per Tutti PyPg – Perugia Python Local Users Group Questa opera è distribuita da PyPg con licenza Creative Commons Attribuzione 3.0 Unported.

Slide 2

Slide 2 text

Python per etimologisti

Slide 3

Slide 3 text

Python per etimologisti http://www.flickr.com/photos/69er/200248914/

Slide 4

Slide 4 text

Python per etimologisti Pythonesque vs Pythonic Pythons vs Pythonistas

Slide 5

Slide 5 text

Cos'è Python ● Linguaggio di programmazione: ● Alto livello e General purpose ● Sintassi estremamente pulita ● Multiparadigma ● Tipazione dinamica ● Embeddable ed Estensibile ● Multipiattaforma ● Diverse implementazioni del linguaggio

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Python per programmatori C++ ● Multiparadigma ● Ereditarietà multipla ● Sovraccarico degli operatori ● Decine di librerie terze parti per applicazioni GUI, rete, database, calcolo distribuito

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

The Dream Language

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

Popolarità

Slide 13

Slide 13 text

Popolarità

Slide 14

Slide 14 text

Popolarità

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

Fattori esterni ● PSF (Python Software Foundation) ● Detiene e protegge la IP (©, ®) di Python ● Organizza la PyCon accollandosi gli oneri ● Finanzia progetti degni di nota come Jython e PyPy ● Partecipa alla Google Summer of Code

Slide 17

Slide 17 text

Fattori esterni ● Comunità ● Python Diversity ● Local User Groups ● Conferenze ● Open Source - Licenza PSFL ● Certificata OSI ● Certificata FSF ● BSD-like, molto liberale

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

Hackability ● Clean ● Facile da usare ● Facile da imparare ● Facile da leggere ● Dirty

Slide 20

Slide 20 text

Programmi usa e getta ● Installato di default su tutte le distribuzioni Linux e su Mac OSX ● Shell interattiva

Slide 21

Slide 21 text

Librerie ● Batterie incluse! ● Standard Python Library – 190+ moduli ● math, sys, os, random, gzip, socket, select, urllib, ftplib, ... – 13+ packages ● compile, ctypes, email, xml, ... ● Cheeseshop – 17184 packages ad oggi (Ottobre 2011)

Slide 22

Slide 22 text

Librerie ● Batterie terze parti ● GUI – PyQt, PyGTK, wxPython ● SQL – SqlAlchemy ● Calcolo scientifico & elaborazione dati – Numpy, SciPy, PIL, openCV, pyVTK, pyCUDA ● Giochi – PyGame, PyGLet, PyOGRE ● Web e rete – Django, Pyramid, Turbogears, Twisted

Slide 23

Slide 23 text

Efficienza ● Efficienza != Velocità ● Profilers (cProfile, profile) ● Threads ● Multiprocess

Slide 24

Slide 24 text

Maturità ● 1991: prima uscita pubblica ● 1992: versione MS-DOS ● 1994: comp.lang.python ● 1996: esce “Programming Python” di M.Lutz ● 1998: Zope ● 2000: versione 2.0 ● 2001: RMS says Yes! (licenza gpl-compatibile) ● Sempre 2001: nasce la PSF ● 2007: prima conferenza italiana, PyCon UNO ● 2008: esce la versione 3.0

Slide 25

Slide 25 text

Evoluzione agile ● Python Enhancement Proposal (PEP)

Slide 26

Slide 26 text

Evoluzione agile ● Python Enhancement Proposal (PEP) ● Standard Track – PEP100 – Unicode integration – PEP202 – List comprehension ● Informational – PEP8 – Style guidelines – PEP20 – The Zen of Python ● Process – PEP3000 – Python 3k

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

Python per tutti ● Linux, Windows, OSX, AIX ● Dispositivi Embedded, Smartphones, Mac, PC, HPC ● CPython, Jython, IronPython, PyPy

Slide 29

Slide 29 text

import antigravity Massimiliano Pippi @maxpippi @pyperugia http://www.pypg.org