Python: Cabe no seu bolso, no seu micro, no seu cérebro.
Upcoming SlideShare
Loading in...5
×
 

Python: Cabe no seu bolso, no seu micro, no seu cérebro.

on

  • 1,289 views

Versão apresentada na Unicamp em Agosto 2010.

Versão apresentada na Unicamp em Agosto 2010.
Presented at Unicamp in August 2010

Statistics

Views

Total Views
1,289
Views on SlideShare
901
Embed Views
388

Actions

Likes
0
Downloads
13
Comments
0

1 Embed 388

http://rodrigo.senra.nom.br 388

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

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

Python: Cabe no seu bolso, no seu micro, no seu cérebro. Python: Cabe no seu bolso, no seu micro, no seu cérebro. Presentation Transcript

  • Python: Cabe no seu bolso, no seu micro, no seu cérebroRodrigo Dias Arruda Senra IC-UNICAMP / HI Tecnologia
  • • Engenheiro de Computação Graduação-MSc-(PhD em curso) IC-Unicamp• Desenvolvedor e Projetista de Software na HI Tecnologia (desde 2008) (no mercado desde 1996 )• Entusiasta de FLOSS desde 1999) (atuante na comunidade Python 2
  • Uma palavra dos patrocinadores...
  • Uma palavra dos patrocinadores...
  • Uma palavra dos patrocinadores...
  • Uma palavra dos patrocinadores...
  • Uma palavra dos patrocinadores...
  • Quem está aí ?
  • Quem está aí ?• Estudantes ?
  • Quem está aí ?• Estudantes ?• Professores ?
  • Quem está aí ?• Estudantes ?• Professores ?• conhecedores de Python ?
  • Quem está aí ?• Estudantes ?• Professores ?• conhecedores de Python ?• Membros de python-brasil@ ?
  • Quem está aí ?• Estudantes ?• Professores ?• conhecedores de Python ?• Membros de python-brasil@ ?• Membros da APyB ?
  • Vamos falar do quê ? • O Graal do desenvolvedor ? • Escolhendo uma linguagem • Contextualizando Python • Vocabulário Ofidiglota
  • O Graal do Desenvolvedor
  • O Graal do Desenvolvedor
  • O Graal do Desenvolvedor • Facilidade
  • O Graal do Desenvolvedor • Facilidade • Legibilidade
  • O Graal do Desenvolvedor • Facilidade • Legibilidade • Estabilidade
  • O Graal do Desenvolvedor • Facilidade • Legibilidade • Estabilidade • Portabilidade
  • O Graal do Desenvolvedor • Facilidade • Legibilidade • Estabilidade • Portabilidade • Interoperabilidade
  • O Graal do Desenvolvedor • Facilidade • Legibilidade • Estabilidade • Portabilidade • Interoperabilidade • Extensibilidade
  • O Graal do Desenvolvedor • Facilidade • Legibilidade • Estabilidade • Portabilidade • Interoperabilidade • Extensibilidade • Escalabilidade
  • O Graal do Desenvolvedor • Rapidez no ciclo de Desenvolvimento • Facilidade • Legibilidade • Estabilidade • Portabilidade • Interoperabilidade • Extensibilidade • Customização • Escalabilidade • Segurança
  • 2000 D C# GoMac OSX LinuxWindows ME 2000 XP Vista 7
  • 40 2000Plankalkü D C# Go Mac OSX Linux Windows ME 2000 XP Vista 7Transistor
  • 40 50 2000Plankalkü Fortran D LISP C# Go Mac OSX Linux Windows ME 2000 XP Vista 7 Circuito IntegradoTransistor Harddisk
  • 40 50 60 2000Plankalkü Fortran COBOL D LISP SIMULA C# BASIC Go LOGO ITS Mac OSX OS360 Linux MULTICS Windows ME 2000 XP RS-232 Vista ARPANET 7 Circuito Virt.Mem Integrado InterrupçõesTransistor Harddisk Mouse
  • 40 50 60 70 2000Plankalkü Fortran COBOL Pascal D LISP SIMULA C C# BASIC Smalltalk Go LOGO Prolog ITS UNIX Mac OSX OS360 CP/M Linux MULTICS VMS Windows ME 2000 Ethernet XP RS-232 TCP/IP Vista ARPANET 7 PONG Circuito Virt.Mem Micro- Integrado Interrupções processadorTransistor Harddisk Mouse Floppy
  • 40 50 60 70 80 2000Plankalkü Fortran COBOL Pascal Ada D LISP SIMULA C C++ C# BASIC Smalltalk Perl Go LOGO Prolog SQL ITS UNIX LISA Mac OSX OS360 CP/M Macintosh Linux MULTICS VMS UNIX MS-DOS Windows ME Windows 2000 1.0-2.0 Ethernet XP RS-232 OS/2 Vista TCP/IP MINIX ARPANET PONG 7 AIX Circuito Virt.Mem HPUX Micro- Integrado Interrupções processador SCO GNUTransistor Harddisk Mouse Floppy RISC
  • 40 50 60 70 80 90 2000Plankalkü Fortran COBOL Pascal Ada Javascript D LISP SIMULA C C++ Python C# BASIC Smalltalk Perl Java Go LOGO Prolog SQL PHP ITS UNIX LISA BeOS Mac OSX OS360 CP/M Macintosh Linux Linux MULTICS VMS UNIX Solaris MS-DOS OpenBSD Windows ME Windows Windows 2000 1.0-2.0 2.0 - 98 Ethernet XP RS-232 OS/2 Vista TCP/IP MINIX ARPANET PONG 7 AIX Circuito Virt.Mem HPUX Micro- Integrado Interrupções processador SCO GNU WWWTransistor Harddisk Mouse Floppy RISC ISA
  • A eterna busca pelaferramenta perfeita
  • A verdade dói...# Edsger W.Dijkstra, 18 Junho 1975 http://www.cbi.umn.edu/inv/burros/ewd498.htm
  • A verdade dói... FORTRAN --"the infantile disorder"--, by now nearly 20 years old, is hopelessly inadequate for whatever computer application you have in mind today: it is now too clumsy, too risky, and too expensive to use# Edsger W.Dijkstra, 18 Junho 1975 http://www.cbi.umn.edu/inv/burros/ewd498.htm
  • A verdade dói... PL/1 --"the fatal disease"-- belongs more to the problem set than to the solution set# Edsger W.Dijkstra, 18 Junho 1975 http://www.cbi.umn.edu/inv/burros/ewd498.htm
  • A verdade dói... It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration# Edsger W.Dijkstra, 18 Junho 1975 http://www.cbi.umn.edu/inv/burros/ewd498.htm
  • A verdade dói... The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence# Edsger W.Dijkstra, 18 Junho 1975 http://www.cbi.umn.edu/inv/burros/ewd498.htm
  • Truth lies on statistics!
  • http://www.tiobe.com
  • http://www.tiobe.com
  • Top 10 - SourceForge
  • Top 10 - SourceForge
  • Top 10 - SourceForge
  • Java Javascript C# C++ Python C PHPhttp://flossmole.org/category/queries/sourceforge - June 2009
  • x86 Ubuntu™ Intel® Q6600® one core - http://shootout.alioth.debian.org/ 
  • http://dada.perl.it/shootout/wc_details.html
  • Segurança Fonte: http://nvd.nist.gov/nvd.cfm PHP Perl Java Python
  • Segurança Fonte: http://nvd.nist.gov/nvd.cfm PHP Perl Java Python 9.000 8.121CVE - Common Vulnerabilities and Exposures 6.690 6.750 4.500 2.250 1.766 1.537 735 871 28 38 0 junho 2007 abril 2008
  • Duelo de linguagens
  • Duelo de linguagens
  • Duelo de linguagens
  • Javaimport java.io.*;import java.util.*;import java.text.*;public class sumcol {public static void main(String[] args) { int count = 0; String line; try { BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); while ((line = in.readLine()) != null) { count = count + Integer.parseInt(line); } } catch (IOException e) { } System.out.println(Integer.toString(count));
  • Java C#importSystem;using java.io.*;importApp {class java.util.*;import static int Main(String[] args) {public java.text.*;public class sumcol { int count = 0;public static void main(String[] args) { for (String line = Console.In.ReadLine(); int count != 0; line = null; String line; Console.In.ReadLine()) line = try {count += System.Convert.ToInt32(line); } { BufferedReader in = new BufferedReader( Console.WriteLine(count.ToString()); return(0); new InputStreamReader(System.in)); } while ((line = in.readLine()) != null) { count = count + Integer.parseInt(line); } } catch (IOException e) { } System.out.println(Integer.toString(count));
  • Python Java C#importSystem;import java.io.*;using sysimportApp {class java.util.*;count = 0import1:public java.text.*;while static int Main(String[] args) {public class sumcol { line = count = 0; int sys.stdin.readline().strip()public static void main(String[] args) { for (String line = Console.In.ReadLine(); if not line: int count != 0; break line = null; count += line; Console.In.ReadLine()) String int(line) line =print try {count += System.Convert.ToInt32(line); } { count BufferedReader in = new BufferedReader( Console.WriteLine(count.ToString()); return(0); new InputStreamReader(System.in)); } while ((line = in.readLine()) != null) { count = count + Integer.parseInt(line); } } catch (IOException e) { } System.out.println(Integer.toString(count));
  • Python Java C#importSystem;import java.io.*;using sysimportApp { itertoolscount java.util.*;class sys,import= 0import1:public java.text.*;while static int Main(String[] args) {print sum(itertools.imap(int, sys.stdin))public class sumcol { line = count = 0; int sys.stdin.readline().strip()public static void main(String[] args) { for (String line = Console.In.ReadLine(); if not line: int count != 0; break line = null; count += line; Console.In.ReadLine()) String int(line) line =print try {count += System.Convert.ToInt32(line); } { count BufferedReader in = new BufferedReader( Console.WriteLine(count.ToString()); return(0); new InputStreamReader(System.in)); } while ((line = in.readLine()) != null) { count = count + Integer.parseInt(line); } } catch (IOException e) { } System.out.println(Integer.toString(count));
  • Who is using Python ?
  • Who is using Python ?
  • Who is using Python ?
  • Who is using Python ?
  • Who is using Python ?
  • Python é ...• propósito geral• foco em produtividade do desenvolvedor• multi-plataforma e multi-paradigma• pilhas incluídas• floss software• fácil de extender e embutir• madura (criada em1989, liberada ao público 1991)
  • Interoperabiilidade✴ Jython (Python implementado em Java)✴ CPython (onde existir compilador C ISO/IEC 9899:1990)✴ IronPython (implementado em C# pela M$)✴ PyPy (Python implementado em... Python)✴ Python for .NET [Brian Lloyd]✴ Win32all [Mark Hammond] (adeus VBA!)✴ PyObjC (Mac OSX middleware)✴ Python for Delphi [Morgan Marat]✴ LunaticPython [Gustavo Niemeyer]✴ Ruby/Python (importar módulos Python em Ruby)✴ Python + Fortran
  • Hora da Demo Dá tempo de vero Python em ação ? É possível ?Seria pedir muito ?
  • Pygame
  • Python no celular S60
  • Bancos de Dadosfrom psycopg import *o = connect(“ dbname=teste user=fulano” )c = o.cursor()c.execute(“ SELECT * FROM nome_da_tabela” )row = c.fetchone()print rowx = [ (valor_1, fulano, 0), (valor_2, beltrano, 5), (valor_3, ciclano, 15)]c.executemany(" " " INSERT INTO outra_tabela VALUES (%s, %s, %s)""", x)c.commit()
  • Networkingfrom twisted.internet.protocol import Protocol, Factoryfrom twisted.internet import reactorfrom time import asctimeclass TimeServer(Protocol): def dataReceived(self, data): self.transport.write(asctime())def main(): f = Factory() f.protocol = TimeServerreactor.listenTCP(8000, f)reactor.run()main()
  • Web Servicesfrom SOAPpy import SOAPProxyfrom SOAPpy import Typesgoogle = SOAPProxy( http://api.google.com/search/beta2, urn:GoogleSearch)results = google.doGetCachedPage(Pd6ke...ArQoX , www.owls.org)of = open(cached_page_response.html, w)of.write(results)of.close()
  • SciPyimport viewfrom Numeric import *x = arange(-3, 6, .04)y = arange(-12, 12, .08)y = sin(y)*exp(-y*y/18.0)z = x * y[:,NewAxis]view.view(z)
  • Apps
  • Referências http://python.org http://www.pythonbrasil.com.br http://associacao.pythonbrasil.org http://showmedo.com
  • Referências Mergulhando no Python: Mark Pilgrim (Alta Books) Python in a Nutshell: Alex Martelli (OReilly) Python Cookbook: Alex Martelli, David Ascher (OReilly) Python Programming on Win32: Mark Hammond (OReilly) Jython Essential: Noel Rappin, Samuele Pedroni (OReilly) Foundations of Python Network Programming: John Goerzen (Apress)
  • Conclusão • Ágil, madura e moderna • Fácil aprendizado • Comunidade Ativa • Fartura de documentação • Divertida ;o)
  • Não tenha medo,experimente Python!
  • Não tenha medo,experimente Python!
  • Obrigado a todos pela atenção. Rodrigo Dias Arruda Senra http://rodrigo.senra.nom.br rsenra@acm.orgAs opiniões e conclusões expressas nesta apresentação são de exclusiva responsabilidade de Rodrigo Senra.Não é necessário requisitar permissão do autor para o uso de partes ou do todo desta apresentação, desde quenão sejam feitas alterações no conteúdo reutilizado e que esta nota esteja presente na íntegra no materialresultante.Imagens e referências para outros trabalhos nesta apresentação permanecem propriedade daqueles que detêmseus direitos de copyright.