• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Sviluppare in Python, un passo verso la libertà
 

Sviluppare in Python, un passo verso la libertà

on

  • 3,337 views

Presentazione tenuta in occasione del Codemotion del 5 marzo 2011 a Roma http://www.codemotion.it/ ...

Presentazione tenuta in occasione del Codemotion del 5 marzo 2011 a Roma http://www.codemotion.it/

L'esperienza di programmazione in Python vista con gli occhi di due programmatori Java. Quali sono le difficoltà incontrate e le prime impressioni nel lavorare con questo linguaggio ed il suo ambiente di sviluppo. Compariamo i due linguaggi e sfatiamo alcuni luoghi comuni che li riguardano, tracciando un quadro imparziale dei pro e dei contro di ognuno di essi. In questo talk si risponderà ad alcune domande per capire se Python rappresenti realmente un passo verso la libertà degli sviluppatori.

Statistics

Views

Total Views
3,337
Views on SlideShare
3,161
Embed Views
176

Actions

Likes
0
Downloads
0
Comments
0

11 Embeds 176

http://www.codemotion.it 88
http://2011.codemotion.it 55
http://codemotion.macaronilab.com 10
http://theoldreader.com 7
http://codemotion.it 5
http://p111110.blogspot.com 4
http://p111110.blogspot.co.at 3
http://www.slideshare.net 1
http://noidellosti.altervista.org 1
http://p111110.blogspot.co.uk 1
http://p111110.blogspot.it 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Sviluppare in Python, un passo verso la libertà Sviluppare in Python, un passo verso la libertà Presentation Transcript

    • Sviluppare in Pythonun passo verso la libertà Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàObiettivo Stimolare la curiosità e diffondere linteresse nei confronti di Python in ambito professionale! Matteo Cafarotti - Serafino Beraldi
    • Agenda● Confronto Python vs Java● Caratteristiche di Python● Campi di applicazione● Considerazioni Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàStoria ● Java nasce nel 1996 ad opera di James Gosling... ● Obiettivo: ambiente software platform-indipendent ● Target: dallelettronica di consumo al WWW ● Nel 2009 Sun Microsystem viene acquisita da Oracle ● Python è stato creato da Guido Van Rossum nel 1991... ● Il nome del linguaggio è stato ispirato da uno show televisivo ● Semplicità dei linguaggio di scripting + potenza dei linguaggi Object Oriented ● Nel 2010 vince il “TIOBE Programming Award” Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàPython è free ed Open Source ● Python è FLOSS (Free and Open Source Software) ● È possibile vedere il suo codice sorgente, modificarlo, prelevare segmenti di codice e usarli in altri programmi free ● FLOSS si basa sul principio della libera condivisione delle conoscenze allinterno di una community ● Fin dalla sua creazione Python è stato aggiornato da una community che lo migliora e lo fa crescere costantemente Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàPEP ● Con il termine PEP (Python Enhancement Proposal) si indicano le proposte di avanzamento di Python che sono raccolte dalla Python org, valutate ed eventualmente adottate negli sviluppi del linguaggio. ● Tali proposte sono avanzate sia dal team di sviluppo di Python che dalla community e sono raccolte sul sito python.org. Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàPEP20: Zen of Python ● Beautiful is better than ugly. ● In the face of ambiguity, refuse the ● Explicit is better than implicit. temptation to guess. There should be one-- and preferably only Simple is better than complex. ● ● ● Complex is better than complicated. one – obvious way to do it. ● Although that way may not be obvious at first ● Flat is better than nested. unless youre Dutch. ● Sparse is better than dense. ● Now is better than never. ● Readability counts. ● Although never is often better than *right* now. ● Special cases arent special enough to break the rules. ● If the implementation is hard to explain, its a bad idea. ● Although practicality beats purity. ● If the implementation is easy to explain, it ● Errors should never pass silently. may be a good idea. ● Unless explicitly silenced. ● Namespaces are one honking great idea -- lets do more of those! Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàSimilitudini tra Java e Python Java Python Object Oriented pre compilato javac compiler python compiler/interpreter java byte code interpreter python compiler/interpreter portabile tipizzazione strongly typed strongly typed gestione memoria automatic garbage collection automatic garbage collection in Python qualsiasi cosa è un oggetto: moduli, classi, funzioni... Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàDifferenze tra Java e Python Java Python tipizzazione statica dinamica ereditarietà singola multipla overloading operatori interprete interattivo sintassi verbosa sintetica Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàTipizzazione Statica vs Tipizzazione Dinamica Statica ↔ Compile-Time Dinamica ↔ Run-Time variabile variabile valore tipo valore tipo tipo Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàCosa ci è piaciuto di Python ● Python consente di scrivere meno codice ● Usare linterprete Python in modo interattivo ● Pre-compilazione automatica dei sorgenti ● File di configurazione nello stesso linguaggio ● I metodi possono restituire più di un valore ● Valori di default sui parametri di un metodo ● Test e doctest ● ... Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàCosa ci è piaciuto di Python ● … ● Una code convention ben formalizzata ( PEP8 ) ● Strutture dati built-in ( lists, tuples, sets, dict ) ● L’overloading degli operatori ● Keyword arguments Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàPython consente di scrivere meno codice def backup_txt_file(file_name): in_file = open(file_name,"r") out_file = open("backup_file.txt","w") i = 0 for line in in_file.readlines(): i += 1 out_file.write("%s : %s" % (i ,line)) in_file.close() out_file.close() meno codice => TTM migliore Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàUsare linterprete Python in modo interattivo Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41) [GCC 4.3.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> (2+3)*4 20 >>> nome = raw_input(Inserisci il tuo nome: ) Inserisci il tuo nome: Matteo >>> print nome Matteo >>> file = open("/home/serafino/ciao.txt") >>> file.readline() Ciao Pythonn Linterprete consente di testare le funzioni durante lo sviluppo! Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàPre-compilazione automatica dei sorgenti javac java a.java a.class python python a.py a.pyc La pre-compilazione automatica fa risparmiare molto tempo! Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàFile di configurazione in Python DEBUG = True DATABASES = { TIME_ZONE = Europe/Rome default: { INSTALLED_APPS = ( ENGINE: postgresql_psycopg2, djangodevtools, NAME: db_name, kiowa, USER: db_user, myapp, PASSWORD: db_pwd, ) HOST: localhost, PORT: , } } No XML o properties! Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàRestituire più di un valore >>> def split_lista(lista): ... pari, dispari = [], [] ... for i in lista: ... (dispari if bool(i % 2) else pari).append(i) ... return pari, dispari ... >>> p, d = split_lista([3,2,6,5,1,8,5,8,2,6,5,1,5,7,3,2,9,0,2,4,7]) >>> p [2, 6, 8, 8, 2, 6, 2, 0, 2, 4] >>> d [3, 5, 1, 5, 5, 1, 5, 7, 3, 9, 7] Riduce la quantità di codice! Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàValori di default sui parametri >>> def split_lista(lista=[]): c ... pari, dispari = [], [] ... for i in lista: ... (dispari if bool(i % 2) else pari).append(i) ... return pari, dispari ... >>> p, d = split_lista() >>> p [] >>> d [] Riduce la quantità di codice! Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàTest from django.test import TestCase class PersonaTestCase(TestCase): fixtures = [persone.json] def test_save(self): """ Test save worst-case: not all mandatory fields are provided => IntegrityError """ data = { ‘name : ‘Mario, } target_item = Persona(**data) self.assertRaises(IntegrityError, target_item.save, force_insert=False) Il metodo assertRaises è molto comodo! Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàDoctest def split_lista(lista=[]): Suddivide una lista di interi in due liste, ... Usage: >>> p, d = split_lista([3,2,6,5,1,8,5,8,2,6,5,1,5,7,3,2,9,0,2,4,7]) >>> p [2, 6, 8, 8, 2, 6, 2, 0, 2, 4] >>> d [3, 5, 1, 5, 5, 1, 5, 7, 3, 9, 7] ... return pari, dispari Aumenta la leggibilità e garantisce il “corretto” funzionamento! Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàPEP8 class Classe1(object): def __init__(self): # ... 2 righe bianche tra un classe e laltra → class Classe2(object): def metodo1(self): 1 spazio bianco # ... 1 riga bianca tra un metodo e laltro → def metodo2(self, a, b): self.X = a + b # ... 1 spazio bianco Aumenta la leggibilità del codice! Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàStrutture dati built-in >>> # liste >>> l = [7, 19 ,14, 5, 11] >>> l[1] 19 >>> l[2:] [14, 5, 11] >>> l.append(16) >>> l [7, 19, 14, 5, 11, 16] >>> # insiemi >>> s1 = set([1, 23, 5, 6, 11, 23, 5, 4]) >>> s1 set([1, 4, 5, 6, 11, 23]) >>> s2 = set([23, 15, 6, 15]) >>> s2 set([15, 6, 23]) >>> s1 | s2 # unione tra due insiemi set([1, 4, 5, 6, 23, 11, 15]) >>> s1 & s2 # intersezione tra due insiemi Set([6, 23]) Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàOverloading degli operatori class Complex(object): def __init__(self, real, imag): self.real = real self.imag = imag def __repr__(self): return (%s,%si%s) % (self.real, - if self.imag<0 else , abs(self.imag)) def __add__(self, c): return Complex(self.real+c.real, self.imag+c.imag) def __mul__(self, c): return Complex(self.real*c.real-self.imag*c.imag, self.real*c.real+self.imag*c.imag) >>> a = Complex(1,1) >>> b = Complex(1,-1) >>> b = Complex(-1,-1) >>> a+b*c Aumenta la leggibilità! u(1,i3) Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàKeyword arguments class Persona(object): def __init__(self, nome="", cognome="", **kwargs): self.nome = nome self.cognome = cognome for k, v in kwargs.items(): setattr(self, k, v) def __repr__(self): return %s %s % (self.cognome, self.nome) >>> Persona(nome=Marco) Marco >>> p = Persona(nome=Marco, cognome=Rossi, citta=Roma) >>> p Rossi Marco Riduce la quantità di >>> p.citta Roma codice! >>> p.email = "marco.rossi@email.com" >>> p.email marco.rossi@email.com Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàCampi di applicazione Industria cinematografica ● Python è stato adottato dalla Dreamworks nellambito della produzione delle animazioni 3D in sostituzione di Perl per la maggiore facilità di utilizzo e per la capacità di integrazione con le librerie C++ ● La Industrial Light & Magic (LucasFilm), lazienda di effetti speciali che ha creato Star Wars, utilizza Python per amalgamare insieme le centinaia di computers e componenti software utilizzati in ambito di computer grafica. Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàCampi di applicazione Industria aerospaziale ● La Nasa utilizza Python per implementare i sistemi di controllo delle proprie missioni Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàCampi di applicazione Monitoraggio traffico aereo ● Frequentis, uno dei leader a livello mondiale per le soluzioni di gestione del traffico aereo e la sicurezza pubblica, utilizza software scritto in Python per il monitoraggio del traffico aereo Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàCampi di applicazione Metereologia ● ForecastWatch.com usa Python per aiutare meteorologi a produrre previsioni meteo più accurate Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàCampi di applicazione Biologia ● AstraZeneca, una delle aziende leader nel mondo della farmaceutica, utilizza Python nel processo di identificazione delle droghe. ● Molecular Modeling Toolkit, una libreria per la modellazione e la simulazione delle molecole. Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàCampi di applicazione Amministrazione ● Devis utilizza Python e Zope (server per applicazioni) per la produzione di un CMS (content management system) utilizzato nel settore dell eGovernment. ● K-tech utilizza Python e Django (web framework) per lo sviluppo del CRM aziendale e web application per i propri clienti. Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàCampi di applicazione Sistemi Operativi Molte delle applicazioni scritte per il Desktop Manager di Linux "Gnome" sono scritte in linguaggio Python tramite utilizzo delle librerie PyGTK: ● Computer Temperature Monitor ● Bittorrent ● Exaile ● Pitivi ● Pycasa Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàBig G, il gigante di Mountain View, ha avviato già da tempo una marcatapolitica di investimenti su Python iniziata con lassunzione di Guido VanRossum tra le sue fila e che ha portato alla nascita di Google App Engine(piattaforma di sviluppo e hosting di web application scritta al 100% inPython) Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàAltri● Red Hat ha implementato in python il proprio tool di installazione Anaconda.● Infoseek usa python nei propri prodotti per la ricerca sul web.● Yahoo! ha sviluppato in python alcuni servizi di internet. Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàPrimo impatto Il primo impatto con Python può disorientare: ● Eclipse non risponde più ai comandi :-( ● Si ritorna alla shell ● Rispolverare i pattern di programmazione ed i principi Object Oriented La prima impressione è che programmare in queste condizioni sarà maledettamente faticoso! Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàSiamo programmatori o specialisti di prodotto? Sviluppare software in un linguaggio come Java che è supportato da strumenti (IDE e Frameworks) sempre più avanzati ha reso il processo di sviluppo più facile. Scrivere codice che superi la fase di compilazione senza errori è ormai un obiettivo alla portata di tutti. Gli strumenti sono i veri protagonisti! Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàPython può rappresentare un passo verso la libertà? Il mercato dei programmatori è saturo di javisti surplus di offerta rispetto alla domanda crollo del valore di mercato di quella tipologia di skill Chi ne gioverà saranno le aziende che avranno a disposizione forza lavoro a costo irrisorio e facilmente sostituibile. Quali saranno le conseguenze? Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàConseguenze ● Stipendi sempre più bassi per i programmatori java ● Qualità del codice e del prodotto software sempre più scadente ● Perdita di competitività delle aziende nei confronti dei competitors internazionali Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàAbbracciare un linguaggio che pone come conditio sine qua non una preparazioneconsistente ed “effettiva” è una garanzia● per la nostra professione● per le aziende che decidono di investirvi Siamo ritornati protagonisti! Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertàRiferimenti www.python.org m.cafarotti@gmail.com serafino.beraldi@gmail.com Matteo Cafarotti - Serafino Beraldi
    • Sviluppare in Python: un passo verso la libertà Estrazione!!! Matteo Cafarotti - Serafino Beraldi