Transcript
Page 1: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Python:Cabe no seu bolso,

no seu micro,no seu cérebro

Rodrigo Dias Arruda SenraIC-UNICAMP / HI Tecnologia

Page 2: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Apenas um rapaz latino americano...

• Desenvolvedor e Projetista de Softwarena HI Tecnologia (desde 2008)

(no mercado desde 1996 )

• Engenheiro de Computação Graduação-MSc-(PhD em curso) IC-Unicamp

• Entusiasta de FLOSS(atuante na comunidade Python desde 1999)

2

Page 3: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Uma palavra dos patrocinadores...

Page 4: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Uma palavra dos patrocinadores...

Page 5: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Uma palavra dos patrocinadores...

Page 6: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Uma palavra dos patrocinadores...

Page 7: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Uma palavra dos patrocinadores...

Page 8: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Quem está aí ?

Page 9: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Quem está aí ?

• Estudantes ?

Page 10: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Quem está aí ?

• Estudantes ?

• Professores ?

Page 11: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Quem está aí ?

• Estudantes ?

• Professores ?

• conhecedores de Python ?

Page 12: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Quem está aí ?

• Estudantes ?

• Professores ?

• conhecedores de Python ?

• Membros de python-brasil@ ?

Page 13: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Quem está aí ?

• Estudantes ?

• Professores ?

• conhecedores de Python ?

• Membros de python-brasil@ ?

• Membros da APyB ?

Page 14: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Vamos falar do quê ?

• O Graal do desenvolvedor ?

• Escolhendo uma linguagem

• Contextualizando Python

• Vocabulário Ofidiglota

Page 15: Python: Cabe no seu bolso, no seu micro, no seu cérebro

O Graal do Desenvolvedor

Page 16: Python: Cabe no seu bolso, no seu micro, no seu cérebro

O Graal do Desenvolvedor

Page 17: Python: Cabe no seu bolso, no seu micro, no seu cérebro

• Facilidade

O Graal do Desenvolvedor

Page 18: Python: Cabe no seu bolso, no seu micro, no seu cérebro

• Facilidade• Legibilidade

O Graal do Desenvolvedor

Page 19: Python: Cabe no seu bolso, no seu micro, no seu cérebro

• Facilidade• Legibilidade• Estabilidade

O Graal do Desenvolvedor

Page 20: Python: Cabe no seu bolso, no seu micro, no seu cérebro

• Facilidade• Legibilidade• Estabilidade• Portabilidade

O Graal do Desenvolvedor

Page 21: Python: Cabe no seu bolso, no seu micro, no seu cérebro

• Facilidade• Legibilidade• Estabilidade• Portabilidade• Interoperabilidade

O Graal do Desenvolvedor

Page 22: Python: Cabe no seu bolso, no seu micro, no seu cérebro

• Facilidade• Legibilidade• Estabilidade• Portabilidade• Interoperabilidade• Extensibilidade

O Graal do Desenvolvedor

Page 23: Python: Cabe no seu bolso, no seu micro, no seu cérebro

• Facilidade• Legibilidade• Estabilidade• Portabilidade• Interoperabilidade• Extensibilidade• Escalabilidade

O Graal do Desenvolvedor

Page 24: Python: Cabe no seu bolso, no seu micro, no seu cérebro

• Rapidez no ciclo de Desenvolvimento

• Facilidade• Legibilidade

• Estabilidade

• Portabilidade

• Interoperabilidade

• Extensibilidade

• Customização

• Escalabilidade

• Segurança

O Graal do Desenvolvedor

Page 25: Python: Cabe no seu bolso, no seu micro, no seu cérebro

2000

DC#

Mac OSXLinux

WindowsME

2000XP

Vista7

Go

Page 26: Python: Cabe no seu bolso, no seu micro, no seu cérebro

2000

DC#

Mac OSXLinux

WindowsME

2000XP

Vista7

40

Plankalkü

Transistor

Go

Page 27: Python: Cabe no seu bolso, no seu micro, no seu cérebro

2000

DC#

Mac OSXLinux

WindowsME

2000XP

Vista7

40

Plankalkü

Transistor

50

FortranLISP

Harddisk

CircuitoIntegrado

Go

Page 28: Python: Cabe no seu bolso, no seu micro, no seu cérebro

2000

DC#

Mac OSXLinux

WindowsME

2000XP

Vista7

40

Plankalkü

Transistor

50

FortranLISP

Harddisk

CircuitoIntegrado

60

COBOLSIMULABASICLOGO

ITSOS360

MULTICS

Mouse

InterrupçõesVirt.MemARPANET

RS-232

Go

Page 29: Python: Cabe no seu bolso, no seu micro, no seu cérebro

2000

DC#

Mac OSXLinux

WindowsME

2000XP

Vista7

40

Plankalkü

Transistor

50

FortranLISP

Harddisk

CircuitoIntegrado

60

COBOLSIMULABASICLOGO

ITSOS360

MULTICS

Mouse

InterrupçõesVirt.MemARPANET

RS-232

70

PascalC

SmalltalkProlog

UNIXCP/MVMS

Floppy

Micro-processador

PONGTCP/IP

Ethernet

Go

Page 30: Python: Cabe no seu bolso, no seu micro, no seu cérebro

2000

DC#

Mac OSXLinux

WindowsME

2000XP

Vista7

40

Plankalkü

Transistor

50

FortranLISP

Harddisk

CircuitoIntegrado

60

COBOLSIMULABASICLOGO

ITSOS360

MULTICS

Mouse

InterrupçõesVirt.MemARPANET

RS-232

70

PascalC

SmalltalkProlog

UNIXCP/MVMS

Floppy

Micro-processador

PONGTCP/IP

Ethernet

80

AdaC++PerlSQL

LISAMacintosh

UNIXMS-DOSWindows

1.0-2.0OS/2

MINIXAIX

HPUXSCOGNURISC

Go

Page 31: Python: Cabe no seu bolso, no seu micro, no seu cérebro

2000

DC#

Mac OSXLinux

WindowsME

2000XP

Vista7

40

Plankalkü

Transistor

50

FortranLISP

Harddisk

CircuitoIntegrado

60

COBOLSIMULABASICLOGO

ITSOS360

MULTICS

Mouse

InterrupçõesVirt.MemARPANET

RS-232

70

PascalC

SmalltalkProlog

UNIXCP/MVMS

Floppy

Micro-processador

PONGTCP/IP

Ethernet

80

AdaC++PerlSQL

LISAMacintosh

UNIXMS-DOSWindows

1.0-2.0OS/2

MINIXAIX

HPUXSCOGNURISC

90

JavascriptPython

JavaPHP

BeOSLinuxSolaris

Windows2.0 - 98

OpenBSD

ISAWWW

Go

Page 32: Python: Cabe no seu bolso, no seu micro, no seu cérebro

A eterna busca pela ferramenta perfeita

Page 33: Python: Cabe no seu bolso, no seu micro, no seu cérebro
Page 34: Python: Cabe no seu bolso, no seu micro, no seu cérebro

A verdade dói...

# Edsger W.Dijkstra, 18 Junho 1975 http://www.cbi.umn.edu/inv/burros/ewd498.htm

Page 35: Python: Cabe no seu bolso, no seu micro, no seu cérebro

A verdade dói...

# Edsger W.Dijkstra, 18 Junho 1975 http://www.cbi.umn.edu/inv/burros/ewd498.htm

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

Page 36: Python: Cabe no seu bolso, no seu micro, no seu cérebro

A verdade dói...

# Edsger W.Dijkstra, 18 Junho 1975 http://www.cbi.umn.edu/inv/burros/ewd498.htm

PL/1 --"the fatal disease"-- belongs more to the problem set than to the solution set

Page 37: Python: Cabe no seu bolso, no seu micro, no seu cérebro

A verdade dói...

# Edsger W.Dijkstra, 18 Junho 1975 http://www.cbi.umn.edu/inv/burros/ewd498.htm

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

Page 38: Python: Cabe no seu bolso, no seu micro, no seu cérebro

A verdade dói...

# Edsger W.Dijkstra, 18 Junho 1975 http://www.cbi.umn.edu/inv/burros/ewd498.htm

The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence

Page 39: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Truth lies on statistics!

Page 40: Python: Cabe no seu bolso, no seu micro, no seu cérebro

http://www.tiobe.com

Page 41: Python: Cabe no seu bolso, no seu micro, no seu cérebro

http://www.tiobe.com

Page 42: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Top 10 - SourceForge

Page 43: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Top 10 - SourceForge

Page 44: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Top 10 - SourceForge

Page 45: Python: Cabe no seu bolso, no seu micro, no seu cérebro

http://flossmole.org/category/queries/sourceforge - June 2009

Java

C++

PHPC

Python

C#

Javascript

Page 46: Python: Cabe no seu bolso, no seu micro, no seu cérebro

x86 Ubuntu™ Intel® Q6600® one core - http://shootout.alioth.debian.org/ 

Page 48: Python: Cabe no seu bolso, no seu micro, no seu cérebro
Page 49: Python: Cabe no seu bolso, no seu micro, no seu cérebro
Page 50: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Segurança PHP JavaPerl Python

Fonte: http://nvd.nist.gov/nvd.cfm

Page 51: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Segurança

0

2.250

4.500

6.750

9.000

junho 2007 abril 2008

3828

1.7661.537

871735

8.121

6.690

CV

E -

Com

mon

Vul

nera

bilit

ies

and

Exp

osur

es

PHP JavaPerl Python

Fonte: http://nvd.nist.gov/nvd.cfm

Page 52: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Duelo de linguagens

Page 53: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Duelo de linguagens

Page 54: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Duelo de linguagens

Page 55: Python: Cabe no seu bolso, no seu micro, no seu cérebro
Page 56: Python: Cabe no seu bolso, no seu micro, no seu cérebro

import 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

Page 57: Python: Cabe no seu bolso, no seu micro, no seu cérebro

import 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));

Javausing System;class App {public static int Main(String[] args) { int count = 0; for (String line = Console.In.ReadLine(); line != null; line = Console.In.ReadLine()) { count += System.Convert.ToInt32(line); } Console.WriteLine(count.ToString()); return(0); }

C#

Page 58: Python: Cabe no seu bolso, no seu micro, no seu cérebro

import 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));

Javausing System;class App {public static int Main(String[] args) { int count = 0; for (String line = Console.In.ReadLine(); line != null; line = Console.In.ReadLine()) { count += System.Convert.ToInt32(line); } Console.WriteLine(count.ToString()); return(0); }

C#import syscount = 0while 1: line = sys.stdin.readline().strip() if not line: break count += int(line)print count

Python

Page 59: Python: Cabe no seu bolso, no seu micro, no seu cérebro

import 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));

Javausing System;class App {public static int Main(String[] args) { int count = 0; for (String line = Console.In.ReadLine(); line != null; line = Console.In.ReadLine()) { count += System.Convert.ToInt32(line); } Console.WriteLine(count.ToString()); return(0); }

C#import syscount = 0while 1: line = sys.stdin.readline().strip() if not line: break count += int(line)print count

Pythonimport sys, itertoolsprint sum(itertools.imap(int, sys.stdin))

Python

Page 60: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Who is using Python ?

Page 61: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Who is using Python ?

Page 62: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Who is using Python ?

Page 63: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Who is using Python ?

Page 64: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Who is using Python ?

Page 65: Python: Cabe no seu bolso, no seu micro, no seu cérebro

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)

Page 66: Python: Cabe no seu bolso, no seu micro, no seu cérebro

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

Page 67: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Hora da Demo

Dá tempo de vero Python em ação ?

É possível ?Seria pedir muito ?

Page 68: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Pygame

Page 69: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Python no celular S60

Page 70: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Bancos de Dados

from 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()

Page 71: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Networkingfrom twisted.internet.protocol import Protocol, Factoryfrom twisted.internet import reactorfrom time import asctime

class TimeServer(Protocol): def dataReceived(self, data): self.transport.write(asctime())

def main(): f = Factory() f.protocol = TimeServer

reactor.listenTCP(8000, f)reactor.run()main()

Page 72: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Web Services

from SOAPpy import SOAPProxyfrom SOAPpy import Types

google = 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()

Page 73: Python: Cabe no seu bolso, no seu micro, no seu cérebro

SciPy

import 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)

Page 74: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Apps

Page 76: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Referências

Mergulhando no Python: Mark Pilgrim (Alta Books) Python in a Nutshell: Alex Martelli (O'Reilly) Python Cookbook: Alex Martelli, David Ascher (O'Reilly) Python Programming on Win32: Mark Hammond (O'Reilly) Jython Essential: Noel Rappin, Samuele Pedroni (O'Reilly) Foundations of Python Network Programming: John

Goerzen (Apress)

Page 77: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Conclusão

• Ágil, madura e moderna

• Fácil aprendizado

• Comunidade Ativa

• Fartura de documentação

• Divertida ;o)

Page 78: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Não tenha medo, experimente Python!

Page 79: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Não tenha medo, experimente Python!

Page 80: Python: Cabe no seu bolso, no seu micro, no seu cérebro

Obrigado a todos pela atenção.

Rodrigo Dias Arruda Senrahttp://rodrigo.senra.nom.br

[email protected]

As 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 que não sejam feitas alterações no conteúdo reutilizado e que esta nota esteja presente na íntegra no material resultante.

Imagens e referências para outros trabalhos nesta apresentação permanecem propriedade daqueles que detêm seus direitos de copyright.