Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python per Tutti

Python per Tutti

Massimiliano Pippi

October 29, 2011
Tweet

More Decks by Massimiliano Pippi

Other Decks in Programming

Transcript

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

    View Slide

  2. Python per etimologisti

    View Slide

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

    View Slide

  4. Python per etimologisti
    Pythonesque vs Pythonic
    Pythons vs Pythonistas

    View Slide

  5. Cos'è Python

    Linguaggio di programmazione:

    Alto livello e General purpose

    Sintassi estremamente pulita

    Multiparadigma

    Tipazione dinamica

    Embeddable ed Estensibile

    Multipiattaforma

    Diverse implementazioni del linguaggio

    View Slide

  6. 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

    View Slide

  7. Python per programmatori C++

    Multiparadigma

    Ereditarietà multipla

    Sovraccarico degli operatori

    Decine di librerie terze parti per applicazioni
    GUI, rete, database, calcolo distribuito

    View Slide

  8. 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

    View Slide

  9. 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

    View Slide

  10. The Dream Language

    View Slide

  11. 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

    View Slide

  12. Popolarità

    View Slide

  13. Popolarità

    View Slide

  14. Popolarità

    View Slide

  15. 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

    View Slide

  16. 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

    View Slide

  17. Fattori esterni

    Comunità

    Python Diversity

    Local User Groups

    Conferenze

    Open Source - Licenza PSFL

    Certificata OSI

    Certificata FSF

    BSD-like, molto liberale

    View Slide

  18. 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

    View Slide

  19. Hackability

    Clean

    Facile da usare

    Facile da imparare

    Facile da leggere

    Dirty

    View Slide

  20. Programmi usa e getta

    Installato di default su tutte le distribuzioni
    Linux e su Mac OSX

    Shell interattiva

    View Slide

  21. 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)

    View Slide

  22. 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

    View Slide

  23. Efficienza

    Efficienza != Velocità

    Profilers (cProfile, profile)

    Threads

    Multiprocess

    View Slide

  24. 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

    View Slide

  25. Evoluzione agile

    Python Enhancement Proposal (PEP)

    View Slide

  26. 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

    View Slide

  27. 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

    View Slide

  28. Python per tutti

    Linux, Windows, OSX, AIX

    Dispositivi Embedded, Smartphones, Mac,
    PC, HPC

    CPython, Jython, IronPython, PyPy

    View Slide

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

    View Slide