• Save
Python No Terra  (2006-12-21)
Upcoming SlideShare
Loading in...5
×
 

Python No Terra (2006-12-21)

on

  • 1,641 views

Palestra de apresentação da linguagem Python para as equipes de tecnologia do Terra.

Palestra de apresentação da linguagem Python para as equipes de tecnologia do Terra.

Statistics

Views

Total Views
1,641
Views on SlideShare
1,639
Embed Views
2

Actions

Likes
1
Downloads
0
Comments
1

2 Embeds 2

http://www.linkedin.com 1
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

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…
  • Muito bom mesmo.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Os tipos primitivos sao objetos (numeros, strings, descritores de arquivo). Objetos vivem no heap por isso devem ser criados (malloc) e destruidos (free). Variaveis sao como referencias ou ponteiros para os objetos. Pode lembrar COBOL, mas nao e’ fixo em colunas, apenas deve-se usar codigo alinhado em vem de uma clausula BEGIN e END ou { e }.
  • Mecanimos de modulos (namespace) e excessoes.

Python No Terra  (2006-12-21) Python No Terra (2006-12-21) Presentation Transcript

      • “ Por Que Eu Deveria Me Preocupar Em Aprender Python?”
      • ou
      • Um seminário de apresentação e propaganda da linguagem Python para as equipes de Tecnologia do Terra.
      • Rudá Moura
      • 21 de Dezembro de 2006
    Terra.append(“Python”)
  • O Que É Python?
    • Python é uma linguagem de (muito) alto nível, compilada em byte-code e interpretada em uma máquina virtual (PVM).
    • Suporta programação modular, estrutural, funcional e OO, com ênfase em OO.
    • Possui gerênciamento automático de memória, por contagem de referências e coleta de lixo (GC).
    • O pai da linguagem é o Holandês Guido van Rossum. O nome vem de Monthy Python.
  • O Que É Python?
    • Python está mais para Ruby, Java e SmallTalk do que para Perl, PHP e C/C++.
    • Implementações da linguagem:
      • CPython é o interpretador padrão feito em C.
      • Jython é o interpretador feito em Java.
      • IronPython é o Python para .NET.
      • PyPy é o Python em Python.
      • Todas compilam o mesmo fonte mas os byte-codes podem ser incompatíveis entre si.
    • É fácil de aprender, é divertido e muito útil!
  • Os Prós da Linguagem
    • Disponível para as plataformas Windows, Linux e Mac OS X. Multiplaforma sem ser um elefante como Java.
    • Biblitoteca padrão abrangente para uso imediato.
    • Convive muito bem com C, é fácil de fazer bindings.
  • Os Contras da Linguagem
    • Não tem o desempenho de C, embora há meios de se otimizar o desempenho.
    • Não há muitos programadores de Python, embora o governo brasileiro esteja procurando profissionais!
    • Não há uma empresa como a Sun por trás, mas existe a Python Foundation, igual à fundação do Apache.
  • Python Não É Lento?
    • Muito já se fez para tornar as linguagens interpretadas mais rápidas, o tempo de (Visual) BASIC já passou.
    • Python é compilado na forma de um byte-code, a tradução é rápida e a execução é boa o suficiente para muitos casos.
    • A sua tarefa necessita de tanto desempenho assim?
  • Como Otimizar?
    • Entender a linguagem e utilizar estruturas de dados rápidas.
    • Re-escrever partes do programa (módulos) em C.
    • Usar mais as bibliotecas em C para Python.
    • Uma opção imediata de ganho de desempenho é através do Psyco (JIT).
  • Os Brasileiros Que Usam Python
    • O CPqD monitora centrais telefônicas NGN com um sistema em grande parte implementado em Python.
    • O Serpro usa Python para a confecção rápida de portais Web. Principal ferramenta de sua Fábrica de Sítios.
    • Na Embratel, as interfaces do backbone e clientes internet são monitorados através de um sistema desenvolvido em Python.
    • Fonte: PythonBrasil.com.br
  • Os Estrangeiros Que Usam Python
    • O Google usa Python para o sistema de ajuda do gmail e outros. O Guido é funcionário do Google!
    • O Yahoo! usa Python para o sistema de mapas , o sistema de arquivamento de grupos do Yahoo! também é em Python.
    • A NASA usa Python (além de Perl e C++) em diversos usos administrativos.
    • Fonte: Python.ORG
  • Quem Mais Utiliza?
    • A Nokia usa Python como a linguagem de alto-nível para as plataformas S60 (Symbian) e Maemo (Linux).
    • O Terra já utiliza Python! O nosso LMTPd possui um interpretador embutido para extensões.
  • Aplicações da Linguagem
    • Linguagem de scripting como “ferramenta de cola” ou de administração, dado à sua ampla biblioteca.
    • Linguagem embutida para extensão de programas.
    • Ferramenta de desenvolvimento de aplicações para Web.
    • Ferramenta de automação de testes.
    • Desenvolvimento em geral (com GUI), com prototipagem rápida.
  • “ Killer Applications”
    • MoinMoin – um wiki popular.
    • Bittorrent – programa famoso e original de P2P.
    • Yum – gerenciador de pacotes de alto nível para RPM.
    • Ananconda – O instalador da RedHat.
    • Mailman – Gerenciador de listas.
    • Zope – Framework para Web.
    • Plone – um CMS.
    • Django – Framework para Web, é para ser o “Ruby on Rails” do Python.
  • O Caminho
    • Vasculhar o PythonBrasil.com.br.
    • Ler o tutorial da linguagem escrito pelo Guido no Py.ORG. Tem a versão em português no PyBrasil.
    • Ler o livro Learning Python, 1ª Edição disponível on-line na O'Reilly.
    • Ler o livro Dive into Python. Disponível em formato PDF (gratuito) ou em papel.
  • Mantras
    • “ Tudo em Python é objeto.”
    • “ Variáveis referenciam objetos; objetos têm tipos, mas variáveis não têm tipos.”
    • “ Blocos de código são alinhados por espaços e/ou tabulações.”
    • “ Não há conversão automática de tipos. Tudo tem que ser explícito.”
  • Tipos Básicos e Expressões
      • # Comentário
      • None, True, False # None lembra o NULL do C
      • (123 + 456) / 789 * 2 # inteiros
      • 123.456 # ponto flutuante
      • “ string” ou ’cadeia de caracteres’
      • “ Trr” + “DSV” # “TrrDSV”
      • “ Terra” * 5 # “TerraTerraTerraTerraTerra”
      • (“vermelho”, “vermelho” , “azul”) # tupla
      • [1, 2, 3, “foo”, [1,2,3]] # listas
      • {“nome”: “fulano”, “idade”: 42} # dicionário
  • Comandos e Métodos
    • x = 123
    • x = “foo”
    • x = [ ]
    • x = { }
    • a = b = c = 1
    • if x > 0:
    • print “positivo”
    • elif : x == 0:
    • print “zero”
    • else :
    • print “negativo”
    • while counter > 0:
      • x = x + counter
      • counter -= 1
    • lista = [4,3,2]
    • lista.append(1) # [4,3,2,1]
    • lista.sort() # [1,2,3,4]
    • str = “terra brasil”
    • print str.upper()
    • TERRA BRASIL
  • Interadores
      • objetos = ["tesoura", "pedra", "papel"]
      • for objeto in objetos:
      • print objeto
      • for x in range (1000):
      • faca_algo()
      • if x >= 5: continue
      • if x+y == 100: break
  • Fatias (slices)
      • nums = [“um”, “dois”, “tres”, “quatro”]
      • nums[0] # um
      • nums[1:] # dois, tres, quatro
      • nums[:-1] # um, dois, tres
      • nums[1:-1] # dois, tres
      • nums[-2] # tres
      • nums[2][0] # t
      • linha = “isto e’ uma sentenca”
      • linha.split(“ “) # [“isto”, “e’”, “uma”, “sentenca”]
  • Módulos e Excessões
      • import os, sys
      • print os.environ["HOME"], os.environ[“SHELL”]
      • /home/ruda /bin/bash
      • print sys.argv[0], sys.argv[1]
      • programa.py argumento1
      • print 1/0
      • Traceback (most recent call last):
      • File &quot;<stdin>&quot;, line 1, in ?
      • ZeroDivisionError: integer division or modulo by zero
      • try :
      • print 1/0
      • except ZeroDivisionError:
      • print “divisao por zero”
  • Arquivos e Funções
    • def max(x, y):
      • “ calcula o maior valor”
      • if x > y:
      • return x
      • else :
      • return y
    • print max(10,1)
    • 10
    • f = max
    • print f(10, 1)
    • 10
    • pw= open (&quot;/etc/passwd&quot;)
    • line=pw.readline()
    • print line
    • root:x:0:0:root:/root:/bin/bash
    • pw.close()
    • f= open (“arq_varios_MB”)
    • lines=f.xreadlines()
    • f.close()
    • print len(lines)
  • Classes e Objetos
      • class Pessoa(object):
      • def __init__(self, nome, endereco):
      • self.nome = nome
      • self.endereco = endereco
      • def getNome(self):
      • return self.nome
      • pessoa = Pessoa(“Fulano”, “XYZ”)
      • print pessoa.getNome()
      • Fulano
  • Programa Passwd
      • #!/usr/bin/env python
      • import sys
      • def username_of(login):
      • passwd = open(&quot;/etc/passwd&quot;)
      • lines = passwd.readlines()
      • passwd.close()
      • for line in lines:
      • list = line.split(&quot;:”) # ['root', 'x', '0', '0', 'root', '/root', '/bin/bash ']
      • user, x, uid, gid, name, home, shell = list
      • if login == user:
      • return name
      • return None
  • Programa Passwd (continuação)
      • if __name__ == &quot;__main__&quot;:
      • for arg in sys.argv[1:]: # [“root”, “ruda”, “abc”]
      • name = username_of(arg)
      • if name != None:
      • try :
      • name = name[:name.index(&quot;,&quot;)]
      • except ValueError:
      • pass
      • print 'O login &quot;%s&quot; pertence ao &quot;%s&quot;' % (arg, name)
      • else :
      • print 'O login &quot;%s&quot; nao existe!' % arg
  • Programa IMAP
      • #!/usr/bin/env python
      • import imaplib
      • imap = imaplib.IMAP4(&quot;imap.terra.com.br&quot;)
      • imap.login(&quot;rruuddaa&quot;, &quot;hackme&quot;) # ('OK', ['LOGIN Ok.'])
      • status, data = imap.list() # ('OK', ['() &quot;.&quot; &quot;Inbox&quot;', '() &quot;.&quot; &quot;Sent&quot;', ..., &quot;Rascunhos&quot;'])
      • folders = [ ]
      • for x in data:
      • x = x[7:] # corta o '() &quot;.&quot; '
      • x = x[1:-1] # tira as aspas
      • folders.append(x)
  • Programa IMAP (continuação)
      • for folder in folders:
      • res, data = imap.select(folder) # ('OK', ['575'])
      • print &quot;Pasta&quot;, folder,
      • print &quot;contem %d mensagens&quot; % int(data[0]),
      • res, data = imap.search(None, &quot;UNSEEN&quot;) # ('OK', ['5 7 8 9 10...'])
      • print &quot;destas %d nao foram lidas&quot; % len(data[0].split(&quot; &quot;))
      • imap.close()
      • imap.logout()
  • Evolução
    • Shell => Python => Python + Módulos em C
    • C, C + Interpretador Python embutido + módulos feitos em Python.
    • Python procedural => Python híbrido procedural + OO => Python OO puro.
    • C => C + testes automatizados em Python
  • Perguntas?
      • A pergunta mais óbvia é... Como se pronuncia Python?
      • Pái-tom, já que o th em inglês é difícil de pronunciar.
      • Outras?
  • sys.exit(0)
      • for x in range(3): print “Obrigado!”
      • Contato: Rudá Moura [email_address]
      • Equipe TrrDSV do Terra Networks Brasil