Vous êtes sur la page 1sur 31

Curso de Python em 5 Horas

Curso de Python em 5 Horas

Introdu¸c˜ao `a Linguagem, Hist´oria e Propaganda

Gustavo Sverzut Barbieri

GPSL - UNICAMP

2 de outubro de 2006

Gustavo Sverzut Barbieri

Gustavo Sverzut Barbieri GPSL - UNICAMP 2 de outubro de 2006 Gustavo Sverzut Barbieri Curso de

Curso de Python em 5 Horas

Curso de Python em 5 Horas

Resumo

Esta ´e a aula introdut´oria `a linguagem Python. Aborda-se um pouco da hist´oria, faz-se uma propaganda da linguagem, mostra-se coment´arios sobre ela e tamb´em uma explica¸c˜ao breve sobre a comunidade que dela cuida.

N˜ao ser´a abordado qualquer tipo de c´odigo ou constru¸c˜ao sint´atica, apenas os aspectos filos´ofico e cultural que s˜ao pe¸cas importantes para um desenvolvedor Python.

Gustavo Sverzut Barbieri

e cultural que s˜ao pe¸cas importantes para um desenvolvedor Python. Gustavo Sverzut Barbieri Curso de Python

Curso de Python em 5 Horas

Curso de Python em 5 Horas

1
1

Introdu¸c˜ao

2
2

Propaganda

3
3

Entendendo os Porquˆes

4
4

A Comunidade

5
5

Referˆencias

Gustavo Sverzut Barbieri

os Porquˆes 4 A Comunidade 5 Referˆencias Gustavo Sverzut Barbieri Curso de Python em 5 Horas

Curso de Python em 5 Horas

Curso de Python em 5 Horas Introdu¸c˜ao Nascimento do Python

de Python em 5 Horas Introdu¸c˜ao Nascimento do Python Onde e Quando Criada em 1989 pelo

Onde e Quando

Criada em 1989 pelo holandˆes Guido van Rossum no Centrum voor Wiskunde en Informatica (CWI), em Amsterd˜a, Holanda. Guido van Rossum no Centrum voor Wiskunde en Informatica (CWI), em Amsterd˜a, Holanda.

Influenciada pela linguagem ABC, desenvolvida no CWI por Guido e outros nas d´ecadas de 70 e 80. ABC tinha um foco bem definido: ser uma linguagem de programa¸c˜ao para usu´arios inteligentes de computadores que n˜ao eram programadores: F´ısicos, Cientistas Sociais e at´e Linguistas.voor Wiskunde en Informatica (CWI), em Amsterd˜a, Holanda. O projeto de sistema operacional distribu´ıdo Amoeba

O projeto de sistema operacional distribu´ıdo Amoeba precisava de uma linguagem de script . Nasce o Python. script. Nasce o Python.

Gustavo Sverzut Barbieri

Amoeba precisava de uma linguagem de script . Nasce o Python. Gustavo Sverzut Barbieri Curso de

Curso de Python em 5 Horas

Curso de Python em 5 Horas Introdu¸c˜ao Nascimento do Python

de Python em 5 Horas Introdu¸c˜ao Nascimento do Python Bases do Python Elementos que eram bem

Bases do Python

Elementos que eram bem sucedidos no ABC.5 Horas Introdu¸c˜ao Nascimento do Python Bases do Python Estruturas de dados poderosas inclusas: Listas,

Estruturas de dados poderosas inclusas: Listas, Dicion´arios, Strings . Strings.

Usar indenta¸c˜ao para delimitar blocos, eliminando chaves.dados poderosas inclusas: Listas, Dicion´arios, Strings . F´acil extens˜ao (li¸c˜ao aprendida com os erros do

F´acil extens˜ao (li¸c˜ao aprendida com os erros do ABC).indenta¸c˜ao para delimitar blocos, eliminando chaves. F´acil de portar: al´em do Amoeba, gostaria de executar em

F´acil de portar: al´em do Amoeba, gostaria de executar em Unix, Macintosh e Windows.extens˜ao (li¸c˜ao aprendida com os erros do ABC). Influˆencias de Modula-2 e Modula-3: m´odulos e

Influˆencias de Modula-2 e Modula-3: m´odulos e namespaces . namespaces.

Gustavo Sverzut Barbieri

Influˆencias de Modula-2 e Modula-3: m´odulos e namespaces . Gustavo Sverzut Barbieri Curso de Python em

Curso de Python em 5 Horas

Curso de Python em 5 Horas Introdu¸c˜ao Nascimento do Python

de Python em 5 Horas Introdu¸c˜ao Nascimento do Python Ambiente de Concep¸c˜ao Universidade: pessoas altamente

Ambiente de Concep¸c˜ao

Universidade: pessoas altamente especializadas para desenvolver e opinar sobre os elementos do projeto pessoas altamente especializadas para desenvolver e opinar sobre os elementos do projeto

Descontra´ıdo: o nome Python vem da s´erie de humor Monty Python’s Flying Circus o nome Python vem da s´erie de humor Monty Python’s Flying Circus

Sem prazos, Sem press˜ao: o desenvolvimento n˜ao foi pressionado por estrat´egias de marketing, prazos, clientes ou qualquer outro fator o desenvolvimento n˜ao foi pressionado por estrat´egias de marketing, prazos, clientes ou qualquer outro fator que pudesse influenciar nas decis˜oes de projeto, resultando em maior qualidade.

Software Livre: garante a vida da tecnologia. garante a vida da tecnologia.

Gustavo Sverzut Barbieri

em maior qualidade. Software Livre: garante a vida da tecnologia. Gustavo Sverzut Barbieri Curso de Python

Curso de Python em 5 Horas

Curso de Python em 5 Horas Introdu¸c˜ao Sobre a Linguagem

Curso de Python em 5 Horas Introdu¸c˜ao Sobre a Linguagem Caracter´ısticas B´asicas Interpretada: usa m´aquina

Caracter´ısticas B´asicas

Interpretada: usa m´aquina virtual, facilita portabilidade. usa m´aquina virtual, facilita portabilidade.

Interativa: pode-se programar interativamente, os comandos s˜ao executados enquanto s˜ao digitados. Facilita testes, desenvolvimento pode-se programar interativamente, os comandos s˜ao executados enquanto s˜ao digitados. Facilita testes, desenvolvimento r´apido e outros. Facilitadores est˜ao presentes

help(obj).

Orientada a Objetos: tudo 1 ´e objeto: n´umeros, strings , fun¸c˜oes, classes, instˆancias, m´etodos, tudo 1 ´e objeto: n´umeros, strings, fun¸c˜oes, classes, instˆancias, m´etodos,

Fortemente Tipada: N˜ao existe casts e nem convers˜ao autom´atica, n˜ao se mistura tipos “automagicamente”. N˜ao existe casts e nem convers˜ao autom´atica, n˜ao se mistura tipos “automagicamente”.

Tipagem Dinˆamica: A tipagem de um objeto ´e feita em tempo de execu¸c˜ao. Um objeto tem tipo, A tipagem de um objeto ´e feita em tempo de execu¸c˜ao. Um objeto tem tipo, uma vari´avel n˜ao.

1 Quase tudo ´e um objeto :-)

Gustavo Sverzut Barbieri

tem tipo, uma vari´avel n˜ao. 1 Quase tudo ´e um objeto :-) Gustavo Sverzut Barbieri Curso

Curso de Python em 5 Horas

Curso de Python em 5 Horas Introdu¸c˜ao Sobre a Linguagem

Curso de Python em 5 Horas Introdu¸c˜ao Sobre a Linguagem Caracter´ısticas Importantes Sintaxe clara, sem caracteres

Caracter´ısticas Importantes

Sintaxe clara, sem caracteres “in´uteis”:Sobre a Linguagem Caracter´ısticas Importantes blocos s˜ao marcados por indenta¸c˜ao parˆenteses s˜ao

blocos s˜ao marcados por indenta¸c˜aoImportantes Sintaxe clara, sem caracteres “in´uteis”: parˆenteses s˜ao opcionais, s´o precisam ser utilizados

parˆenteses s˜ao opcionais, s´o precisam ser utilizados para eliminar ambiguidades.“in´uteis”: blocos s˜ao marcados por indenta¸c˜ao palavras-chave ( keywords ) e forma¸c˜oes que ajudam na

palavras-chave (keywords ) e forma¸c˜oes que ajudam na leitura, keywords) e forma¸c˜oes que ajudam na leitura,

como for

in

F´acil extens˜ao: codificar nos m´odulos ´e muito f´acil, podendo utilizar bibliotecas nativas, aproveitando desempenho, caracter´ısticas nativas das plataformas, etc.) e forma¸c˜oes que ajudam na leitura, como for in API Python/C ´e bem simples Diversos

API Python/C ´e bem simplesdesempenho, caracter´ısticas nativas das plataformas, etc. Diversos conversores autom´aticos (SWIG, SIP, Jython:

Diversos conversores autom´aticos (SWIG, SIP,nativas das plataformas, etc. API Python/C ´e bem simples Jython: usando Python em Java e vice-versa.

Jython: usando Python em Java e vice-versa. usando Python em Java e vice-versa.

PyRex: pseudo linguagem para facilitar integra¸c˜ao Python + C/C++. pseudo linguagem para facilitar integra¸c˜ao Python + C/C++.

)

Gustavo Sverzut Barbieri

pseudo linguagem para facilitar integra¸c˜ao Python + C/C++. ) Gustavo Sverzut Barbieri Curso de Python em

Curso de Python em 5 Horas

Curso de Python em 5 Horas Introdu¸c˜ao Sobre a Linguagem

Curso de Python em 5 Horas Introdu¸c˜ao Sobre a Linguagem Caracter´ısticas Importantes (2) Tipos b´asicos poderosos:

Caracter´ısticas Importantes (2)

Tipos b´asicos poderosos: listas, dicion´arios ( hash tables ), listas, dicion´arios (hash tables),

strings,

otimizados e de f´acil uso.

Baterias Inclusas: biblioteca padr˜ao cont´em diversos biblioteca padr˜ao cont´em diversos

recursos uteis:´

Interface Gr´afica (Tk), XML, Servidores (TCP,

UDP, HTTP,

),

HTML, protocolos de internet (email, http,

), xmlrpc,

Grande base de c´odigo e bibliotecas de terceiros), HTML, protocolos de internet (email, http, ), xmlrpc, Grande comunidade de desenvolvedores Software Livre:

Grande comunidade de desenvolvedoresxmlrpc, Grande base de c´odigo e bibliotecas de terceiros Software Livre: liberdade de uso, distribui¸c˜ao.

Software Livre: liberdade de uso, distribui¸c˜ao. Licen¸ca pr´opria, compat´ıvel com GPL, por´em pode distribuir somente o liberdade de uso, distribui¸c˜ao. Licen¸ca pr´opria, compat´ıvel com GPL, por´em pode distribuir somente o bin´ario.

Independente: a entidade sem fins lucrativos Python Software Foundation cuida da propriedade intelectual do Python. a entidade sem fins lucrativos Python Software Foundation cuida da propriedade intelectual do Python.

Python Software Foundation cuida da propriedade intelectual do Python. Gustavo Sverzut Barbieri Curso de Python em

Gustavo Sverzut Barbieri

Curso de Python em 5 Horas

Curso de Python em 5 Horas Propaganda Quem Usa?

Curso de Python em 5 Horas Propaganda Quem Usa? No Brasil Embratel: monitoramento das interfaces de

No Brasil

Embratel: monitoramento das interfaces de backbone e clientes de internet, tamb´em existem scripts de uso interno. monitoramento das interfaces de backbone e clientes de internet, tamb´em existem scripts de uso interno.

CPqD: monitoramento de centrais telefˆonicas. monitoramento de centrais telefˆonicas.

Conectiva: Gerenciamento de pacotes da distribui¸c˜ao Linux e ferramentas de uso interno. Gerenciamento de pacotes da distribui¸c˜ao Linux e ferramentas de uso interno.

Async: desenvolvimento de software de automa¸c˜ao comercial desenvolvimento de software de automa¸c˜ao comercial

GPr Sistemas: Desenvolvimento de aplica¸c˜oes sob encomenda, sistemas como monitoramento de transporte terrestre via sat´elite s˜ao Desenvolvimento de aplica¸c˜oes sob encomenda, sistemas como monitoramento de transporte terrestre via sat´elite s˜ao as solu¸c˜oes j´a feitas

Outras que utilizam o Python para sistemas Web, como Varig, Serpro, Cˆamara, Interlegis, que utilizam o Python para sistemas Web, como Varig, Serpro, Cˆamara, Interlegis,

Os sistemas web de gest˜ao de conte´udo usando o trio Python/Zope/Plone vem crescendo a cada dia, principalmente em empresas grandes e no governo.

crescendo a cada dia, principalmente em empresas grandes e no governo. Gustavo Sverzut Barbieri Curso de

Gustavo Sverzut Barbieri

Curso de Python em 5 Horas

Curso de Python em 5 Horas Propaganda Quem Usa?

Curso de Python em 5 Horas Propaganda Quem Usa? No Mundo Industrial Light & Magic: automa¸c˜ao

No Mundo

Industrial Light & Magic: automa¸c˜ao interna: “Python plays a key role in our production pipeline. Without it a project automa¸c˜ao interna: “Python plays a key role in our production pipeline. Without it a project the size of Star Wars: Episode II would have been very difficult to pull off. From crowd rendering to batch processing to compositing, Python binds all things together”

NASA: reposit´orio de CAD/CAE/PDM, gerˆencia de modelos, integra¸c˜ao e sistema colaborativo: “We chose Python because it reposit´orio de CAD/CAE/PDM, gerˆencia de modelos, integra¸c˜ao e sistema colaborativo: “We chose Python because it provides maximum productivity, code that’s clear and easy to maintain, strong and extensive (and growing!) libraries, and excellent capabilities for integration with other applications on any platform.”

University of Maryland: ensino: “I have the students learn Python in our undergraduate and graduate Semantic Web courses. ensino: “I have the students learn Python in our undergraduate and graduate Semantic Web courses. Why? Because basically there’s nothing else with the flexibility and as many web libraries”

nothing else with the flexibility and as many web libraries” Gustavo Sverzut Barbieri Curso de Python

Gustavo Sverzut Barbieri

Curso de Python em 5 Horas

Curso de Python em 5 Horas Propaganda Quem Usa?

Curso de Python em 5 Horas Propaganda Quem Usa? No Mundo (2) Apple: ferramenta padr˜ao desde

No Mundo (2)

Apple: ferramenta padr˜ao desde o MacOS X. ferramenta padr˜ao desde o MacOS X.

Microsoft: investimento no IronPython para a plataforma .NET. investimento no IronPython para a plataforma .NET.

Disney: jogos e Sistemas internos de automa¸c˜ao e cria¸c˜ao, patroc´ınio do PyQT. jogos e Sistemas internos de automa¸c˜ao e cria¸c˜ao, patroc´ınio do PyQT.

Bank Boston: sistema Web usando Python e Zope. sistema Web usando Python e Zope.

Nokia: sistema de programa¸c˜ao para celulares da s´erie 60, permite mais recursos que o Java. sistema de programa¸c˜ao para celulares da s´erie 60, permite mais recursos que o Java.

Atari: jogos, como “Temple of Elemental Evil”. jogos, como “Temple of Elemental Evil”.

Yahoo!: Yahoo! Groups foi escrito inicialmente em puro python: 180.000 linhas de c´odigo cuidavam de tudo, Yahoo! Groups foi escrito inicialmente em puro python: 180.000 linhas de c´odigo cuidavam de tudo, tratando mais de 200 mensagens/segundo em um simples Pentium

400Mhz.

Gustavo Sverzut Barbieri

tratando mais de 200 mensagens/segundo em um simples Pentium 400Mhz. Gustavo Sverzut Barbieri Curso de Python

Curso de Python em 5 Horas

Curso de Python em 5 Horas Propaganda Quem Usa?

Curso de Python em 5 Horas Propaganda Quem Usa? No Mundo (3) Nortel: sistemas web “ChartWare”,

No Mundo (3)

Nortel: sistemas web “ChartWare”, “WebBook” e “WebTrack” s˜ao exemplos. sistemas web “ChartWare”, “WebBook” e “WebTrack” s˜ao exemplos.

Philips: automa¸c˜ao da linha de semicondutores na f´abrica de Fishkill. automa¸c˜ao da linha de semicondutores na f´abrica de Fishkill.

Lawrence Livermore National Laboratories: ambiente de engenharia num´erica. ambiente de engenharia num´erica.

Red Hat: diversas ferramentas para linux, o instalador das distribui¸c˜oes Red Hat e Fedora (“Anaconda”). diversas ferramentas para linux, o instalador das distribui¸c˜oes Red Hat e Fedora (“Anaconda”).

Gentoo Linux: sistema de gerˆencia de pacotes “Portage”. sistema de gerˆencia de pacotes “Portage”.

Blender3D: software pode ser estendido usando plugins Python. software pode ser estendido usando plugins Python.

Gustavo Sverzut Barbieri

Blender3D: software pode ser estendido usando plugins Python. Gustavo Sverzut Barbieri Curso de Python em 5

Curso de Python em 5 Horas

Curso de Python em 5 Horas Propaganda Quem Usa?

Curso de Python em 5 Horas Propaganda Quem Usa? No Mundo: Google Maior “case” Python da

No Mundo: Google

Maior “case” Python da atualidade:

”Python has been an important part of Google since the beginning, and remains so as the system grows and evolves. Today dozens of Google engineers use Python, and we’re looking for more people with skills in this language.” — Peter Norvig, director of search quality at Google, Inc.

Gustavo Sverzut Barbieri

— Peter Norvig, director of search quality at Google, Inc. Gustavo Sverzut Barbieri Curso de Python

Curso de Python em 5 Horas

Curso de Python em 5 Horas Propaganda Quem Usa?

Curso de Python em 5 Horas Propaganda Quem Usa? No Mundo: Google (2) Sistema de ajuda

No Mundo: Google (2)

Sistema de ajuda do GMailPython em 5 Horas Propaganda Quem Usa? No Mundo: Google (2) Google Groups Sistema de compila¸c˜ao

Google GroupsQuem Usa? No Mundo: Google (2) Sistema de ajuda do GMail Sistema de compila¸c˜ao de aplicativos

Sistema de compila¸c˜ao de aplicativos (build system ). build system).

Sistema de empacotamento e entrega de dados (packaging system ). packaging system).

Sistema de monitoramento e manuten¸c˜ao do clusterde empacotamento e entrega de dados ( packaging system ). Sistema de testes An´alise de registros

Sistema de testes). Sistema de monitoramento e manuten¸c˜ao do cluster An´alise de registros ( logs ), i´e an´alise

An´alise de registros (logs ), i´e an´alise de falsos clicks no Sponsored Ads . logs ), i´e an´alise de falsos clicks no Sponsored Ads.

Prototipa¸c˜aologs ), i´e an´alise de falsos clicks no Sponsored Ads . Recentemente liberando c´odigo em http://code.google.com

Recentemente liberando c´odigo em http://code.google.com , como Goopy. http://code.google.com, como Goopy.

Requisito para contratar profissionais Java: saber Python! :-)liberando c´odigo em http://code.google.com , como Goopy. Gustavo Sverzut Barbieri Curso de Python em 5 Horas

Gustavo Sverzut Barbieri

Goopy. Requisito para contratar profissionais Java: saber Python! :-) Gustavo Sverzut Barbieri Curso de Python em

Curso de Python em 5 Horas

Curso de Python em 5 Horas Propaganda Opini˜oes sobre o Python e Compara¸c˜oes

Horas Propaganda Opini˜oes sobre o Python e Compara¸c˜oes Bruce Eckel Bruce Eckel ´e o autor de

Bruce Eckel

Bruce Eckel ´e o autor de livros de renome, como “Thinking in Java” e “Thinking in C++”, mas hoje prefere pensar em Python. Ele apresentou 10 raz˜oes por que ele ama esta linguagem, algumas delas:

10 raz˜oes por que ele ama esta linguagem, algumas delas: Python is about me Outras linguagens:

Python is about me

Outras linguagens: “Sim, n´os estamos tentando fazer sua vida mais f´acil com esta linguagem, mas estas coisas “Sim, n´os estamos tentando fazer sua vida mais f´acil com esta linguagem, mas estas coisas s˜ao mais importantes”.

Python: “N´os tentamos fazer sua vida mais f´acil, e ´e isto. Fazer sua vida mais f´acil “N´os tentamos fazer sua vida mais f´acil, e ´e isto. Fazer sua vida mais f´acil ´e o que n˜ao vamos comprometer.”.

Exemplo: C++ tentou fazer a vida do desenvovedor mais f´acil, por´em comprometimentos com performance e compatibilidade C++ tentou fazer a vida do desenvovedor mais f´acil, por´em comprometimentos com performance e compatibilidade com C++, o que n˜ao ajudou em muito a vida do desenvolvedor. Qualquer problema do C++ pode ser explicado devido a estas duas caracter´ısticas.

Exemplo: Java achou que o marketing era mais importante. Java achou que o marketing era mais importante.

Exemplo: Java achou que o marketing era mais importante. Gustavo Sverzut Barbieri Curso de Python em

Gustavo Sverzut Barbieri

Curso de Python em 5 Horas

Curso de Python em 5 Horas Propaganda Opini˜oes sobre o Python e Compara¸c˜oes

Horas Propaganda Opini˜oes sobre o Python e Compara¸c˜oes Bruce Eckel (2) Menos Porcaria: Dizem que uma

Bruce Eckel (2)

Opini˜oes sobre o Python e Compara¸c˜oes Bruce Eckel (2) Menos Porcaria: Dizem que uma pessoa armazena

Menos Porcaria: Dizem que uma pessoa armazena 7 ± 2 informa¸c˜oes ao mesmo tempo, quanto menos porcaria, melhor.

Java: 3 passos para abrir um arquivo. Muito mais para iterar

Java: 3 passos para abrir um arquivo. Muito mais para iterar

sobre suas linhas.

Python: 1 chamada para abrir um arquivo. Constru¸c˜oes f´aceis para iterar sobre o conteudo:

Python: 1 chamada para abrir um arquivo. Constru¸c˜oes f´aceis para iterar sobre o conteudo:

for line in file(’fname’).readlines(): print line.

A falta de caracteres in´uteis e a obrigatoriedade de uma

A

falta de caracteres in´uteis e a obrigatoriedade de uma

identa¸c˜ao consistente tamb´em ajuda a se concentrar no problema.

Produtividade ´e mais importante que performance:consistente tamb´em ajuda a se concentrar no problema. otimizar prematuramente ´e um grande erro. maioria dos

otimizar prematuramente ´e um grande erro.

maioria dos programas n˜ao precisa de alta-performanceque performance: otimizar prematuramente ´e um grande erro. A maioria dos programas precisa de alta-produtividade Dos

A

maioria dos programas precisa de alta-produtividademaioria dos programas n˜ao precisa de alta-performance A Dos programas que precisam de performance, a maioria

Dos programas que precisam de performance, a maioria seA maioria dos programas precisa de alta-produtividade A resolve com um profiler e otimiza¸c˜oes

A

resolve com um profiler e otimiza¸c˜oes algor´ıtmicas.

se A resolve com um profiler e otimiza¸c˜oes algor´ıtmicas. Gustavo Sverzut Barbieri Curso de Python em

Gustavo Sverzut Barbieri

Curso de Python em 5 Horas

Curso de Python em 5 Horas Propaganda Opini˜oes sobre o Python e Compara¸c˜oes

Horas Propaganda Opini˜oes sobre o Python e Compara¸c˜oes Bruce Eckel (3) N˜ao tenta adivinhar como descobrir

Bruce Eckel (3)

N˜ao tenta adivinhar como descobrir erros: tipagem est´atica foi um grande avan¸co em rela¸c˜ao ao Assembly, mas pode-se fazer melhor. tipagem est´atica foi um grande avan¸co em rela¸c˜ao ao Assembly, mas pode-se fazer melhor.

Tipagem est´atica serve para digitar maisem rela¸c˜ao ao Assembly, mas pode-se fazer melhor. Casts induzem a erros Sistema de templates ajudaria

Casts induzem a erros induzem a erros

Sistema de templates ajudaria templates ajudaria

Conferˆencia de tipo tardia agiliza o desenvolvimento: a maiora dos casos que o compilador acusa erro na conferˆencia prematura nunca chegam a acontecer.mais Casts induzem a erros Sistema de templates ajudaria Em geral, os erros mais dif´ıceis de

Em geral, os erros mais dif´ıceis de descobrir s˜ao os com testes reais: com Python vocˆe tem um programa funcionando mais rapidamente, podento testar com dados reais mais cedo e resolver estes problemas mais r´apido.erro na conferˆencia prematura nunca chegam a acontecer. se fosse implementado direito N˜ao tem pessoal de

se fosse implementado direito

N˜ao tem pessoal de marketing envolvido: todas as decis˜oes da linguagem s˜ao com fundamentos t´ecnicos, vˆem de quem usa a linguagem. todas as decis˜oes da linguagem s˜ao com fundamentos t´ecnicos, vˆem de quem usa a linguagem.

s˜ao com fundamentos t´ecnicos, vˆem de quem usa a linguagem. Gustavo Sverzut Barbieri Curso de Python

Gustavo Sverzut Barbieri

Curso de Python em 5 Horas

Curso de Python em 5 Horas Propaganda Opini˜oes sobre o Python e Compara¸c˜oes

Horas Propaganda Opini˜oes sobre o Python e Compara¸c˜oes Bruce Eckel (4) Digite menos, Olhe mais: com

Bruce Eckel (4)

Digite menos, Olhe mais: com Python vocˆe consegue expressar mais com menos, digitando menos, faz mais r´apido, com maior com Python vocˆe consegue expressar mais com menos, digitando menos, faz mais r´apido, com maior densidade, consegue analisar mais id´eias ao mesmo tempo. Eckel diz que tem um ganho de 5 a 10 vezes.

Os chutes geralmente est˜ao certos: As constru¸c˜oes, chamadas e m´odulos em python costumam ser bem consistentes e ap´os pouco tempo As constru¸c˜oes, chamadas e m´odulos em python costumam ser bem consistentes e ap´os pouco tempo de pr´atica torna-se pouco freq¨uente pausas para consultas a manuais ou mesmo nomes de fun¸c˜oes ou m´etodos. Geralmente ´e mais r´apido digitar o que vocˆe acha correto e rodar o teste do que procurar na documenta¸c˜ao.

Python n˜ao fica entre vocˆe e o problema: por ser praticamente um pseudo-c´odigo, vocˆe n˜ao tem que se preocupar com detalhes da linguagem por ser praticamente um pseudo-c´odigo, vocˆe n˜ao tem que se preocupar com detalhes da linguagem e esquecer do problema. Pense no problema e muito provavelmente este ser´a um c´odigo Python.

Gustavo Sverzut Barbieri

no problema e muito provavelmente este ser´a um c´odigo Python. Gustavo Sverzut Barbieri Curso de Python

Curso de Python em 5 Horas

Curso de Python em 5 Horas Propaganda Opini˜oes sobre o Python e Compara¸c˜oes

Horas Propaganda Opini˜oes sobre o Python e Compara¸c˜oes Paul Graham Paul Graham desenvolveu a primeira aplica¸c˜ao

Paul Graham

Paul Graham desenvolveu a primeira aplica¸c˜ao Web, em 1995, o “Viaweb” feita em LISP. Em 1998 sua empresa foi comprada pelo

Yahoo!, onde hoje ´e pesquisador. Foi o inventor do filtro de Spam Bayesiano. Apesar de gostar de LISP, desenvolve uma linguagem

concorrente chamada Arc. Painters”.

´

E o autor do livro “Hackers &

Paul ´e influente e tem v´arios amigos que trabalham em diversas ´areas, tendo contato com programadores Java, Lisp, Python e outros. Ele nota alguns padr˜oes interessantes os quais descreve em alguns ensaios dos quais apresento algumas partes.

Gustavo Sverzut Barbieri

quais descreve em alguns ensaios dos quais apresento algumas partes. Gustavo Sverzut Barbieri Curso de Python

Curso de Python em 5 Horas

Curso de Python em 5 Horas Propaganda Opini˜oes sobre o Python e Compara¸c˜oes

Horas Propaganda Opini˜oes sobre o Python e Compara¸c˜oes Paul Graham sobre os desenvolvedores Python Great Hackers:

Paul Graham sobre os desenvolvedores Python

Great Hackers:

When you decide what infrastructure to use for a project, you’re not just making a technical decision. You’re also making a social decision, and this may be the more important of the two. For example, if your company wants to write some software, it might seem a prudent choice to write it in Java. But when you choose a language, you’re also choosing a community. The programmers you’ll be able to hire to work on a Java project won’t be as smart as the ones you could get to work on a project written in Python. And the quality of your hackers probably matters more than the language you choose. Though, frankly, the fact that good hackers prefer Python to Java should tell you something about the relative merits of those languages.

The Python Paradox:

I didn’t mean by this that Java programmers are dumb. I meant that Python programmers are smart. It’s a lot of work to learn a new programming language. And people don’t learn Python because it will get them a job; they learn it because they genuinely like to program and aren’t satisfied with the languages they already know.

Gustavo Sverzut Barbieri

program and aren’t satisfied with the languages they already know. Gustavo Sverzut Barbieri Curso de Python

Curso de Python em 5 Horas

Curso de Python em 5 Horas Entendendo os Porquˆes O Zen do Python
Curso de Python em 5 Horas
Entendendo os Porquˆes
O Zen do Python

The Zen of Python

Para entender os “porquˆes” da linguagem Python basta abrir o intepretador e digitar: import this. O seguinte texto de Tim Peters descreve as decis˜oes que governam a linguagem:

>>>

The

import

Zen

of

this

Python,

by

Tim

Peters

Beautiful

Explicit

Simple

Complex

Flat

is

Readability

Special

is

is

better

better

is

is

better

better

better

better

than

than

counts.

aren’t

cases

is

ugly.

implicit.

than

than

complex.

complicated.

than

nested.

than

dense.

special

beats

enough

to

Sparse

break

the

rules.

Although

Errors

Unless

In

There

Although

Now

Although

If

If

Namespaces

the

is

the

the

practicality

should

never

pass

purity.

silently.

explicitly

silenced.

face

of

ambiguity,

and

not

never.

is

should

be

one--

may

that

better

never

way

than

often

implementation

implementation

is

is

are

one

honking

refuse

preferably

the

be

obvious

better

hard

easy

than

to

to

great

temptation

only

at

to

guess.

way

you’re

one

first

--obvious

unless

do

to

Dutch.

*right*

now.

explain,

explain,

idea

--

it’s

it

let’s

a

may

do

bad

be

a

more

idea.

good

of

idea.

those!

it.

it let’s a may do bad be a more idea. good of idea. those! it. Gustavo

Gustavo Sverzut Barbieri

Curso de Python em 5 Horas

Curso de Python em 5 Horas Entendendo os Porquˆes O Zen do Python

de Python em 5 Horas Entendendo os Porquˆes O Zen do Python Explicando o Zen do

Explicando o Zen do Python

Explicit is better than implicit.

´

E uma das explica¸c˜oes para a passagem do self como primeiro argumento para os m´etodos de uma classe.

Errors should never pass silently. Unless explicitly silenced. N˜ao obrigar o usu´ario a declarar que uma exce¸c˜ao ser´a pega ou ter que silenci´a-la. O que parecia ser uma ´otima t´ecnica teoricamente demonstrou-se um fiasco na pr´atica, estimulando o uso de try-catch que silenciam os erros em Java.

O uso de exce¸c˜oes ´e um ponto forte do Python.

In the face of ambiguity, refuse the temptation to guess.

Javascript: "10" +

Esta ´e a frase-explica¸c˜ao para a divis˜ao de inteiros retornar inteiro:

5

==

"105", mas "10" *

5

==

50.

3/2

=

1, 3.0/2

=

1.5.

, mas "10" * 5 == 50 . 3/2 = 1 , 3.0/2 = 1.5 .

Gustavo Sverzut Barbieri

Curso de Python em 5 Horas

Curso de Python em 5 Horas A Comunidade Mundial

Curso de Python em 5 Horas A Comunidade Mundial Comunidade Mundial URL: http://python.org/ News: comp.lang.python Mail:

Comunidade Mundial

IRC: irc.freenode.org , canal #python irc.freenode.org, canal #python

Gustavo Sverzut Barbieri

, python-help@python.org IRC: irc.freenode.org , canal #python Gustavo Sverzut Barbieri Curso de Python em 5 Horas

Curso de Python em 5 Horas

Curso de Python em 5 Horas A Comunidade Mundial

Curso de Python em 5 Horas A Comunidade Mundial Pessoas Importantes Algumas pessoas que s˜ao bem

Pessoas Importantes

Algumas pessoas que s˜ao bem conhecidas na comunidade mundial:

Guido van Rossum: criador da linguagem e BDFL ( Benevolent Dictator for Life ). criador da linguagem e BDFL (Benevolent Dictator for Life).

Tim Peters: um dos mais ativos desenvolvedores, tamb´em um dos mais ativos desenvolvedores, tamb´em

´

respons´avel pelo ZODB.

interpretador, a implementa¸c˜ao hyper-otimizada de hast table (dict) ´e dele.

E um dos que mais otimizam o

Jim Fulton: criador do Zope, core python developer desde criador do Zope, core python developer desde

1994.

Gustavo Sverzut Barbieri

o Jim Fulton: criador do Zope, core python developer desde 1994. Gustavo Sverzut Barbieri Curso de

Curso de Python em 5 Horas

Curso de Python em 5 Horas A Comunidade Brasileira

Curso de Python em 5 Horas A Comunidade Brasileira Comunidade Brasileira URL: http://www.pythonbrasil.com.br/ Mail:

Comunidade Brasileira

IRC: irc.freenode.org , canal #python-br irc.freenode.org, canal #python-br

Gustavo Sverzut Barbieri

IRC: irc.freenode.org , canal #python-br Gustavo Sverzut Barbieri Curso de Python em 5 Horas

Curso de Python em 5 Horas

Curso de Python em 5 Horas A Comunidade Brasileira

Curso de Python em 5 Horas A Comunidade Brasileira Pessoas Importantes Algumas pessoas que s˜ao bem

Pessoas Importantes

Algumas pessoas que s˜ao bem conhecidas na comunidade brasileira:

Gustavo Niemeyer: Python Core Developer, trabalha na Conectiva, criador do Smart, mantenedor do m´odulo de express˜oes regulares, Python Core Developer, trabalha na Conectiva, criador do Smart, mantenedor do m´odulo de express˜oes regulares, dentre outros.

Rodrigo Senra: Desenvolvedor Python h´a anos, grande conhecedor dos “internos” da linguagem Desenvolvedor Python h´a anos, grande conhecedor dos “internos” da linguagem

Osvaldo Santana Neto: criador da Python-Brasil, mantenedor do site e da lista criador da Python-Brasil, mantenedor do site e da lista

Pedro Werneck: Desenvolvedor Python h´a anos, conhece muito sobre interface gr´afica com o Tkinter. Desenvolvedor Python h´a anos, conhece muito sobre interface gr´afica com o Tkinter.

Fabio Rizzo: Desenvolvedor Python, Zope e Plone de longa data. Possui diversos artigos sobre o assunto. Desenvolvedor Python, Zope e Plone de longa data. Possui diversos artigos sobre o assunto.

Luciano Ramalho: Programador desde 77, fundador da Hiperl´ogica e da Simples consultoria, especialista em Zope. Programador desde 77, fundador da Hiperl´ogica e da Simples consultoria, especialista em Zope.

da Hiperl´ogica e da Simples consultoria, especialista em Zope. Gustavo Sverzut Barbieri Curso de Python em
da Hiperl´ogica e da Simples consultoria, especialista em Zope. Gustavo Sverzut Barbieri Curso de Python em

Gustavo Sverzut Barbieri

Curso de Python em 5 Horas

Curso de Python em 5 Horas Referˆencias Procurando Assistˆencia

de Python em 5 Horas Referˆencias Procurando Assistˆencia Procura na documenta¸c˜ao; http:

Procura na documenta¸c˜ao; http: http:

Hist´orico da Lista Python-Brasil:http://www.pythonbrasil.com.br/ moin.cgi/AntesDePerguntar http://news.gmane.org/gmane.comp.python.brasil Gustavo

Gustavo Sverzut Barbieri

da Lista Python-Brasil: http://news.gmane.org/gmane.comp.python.brasil Gustavo Sverzut Barbieri Curso de Python em 5 Horas

Curso de Python em 5 Horas

Curso de Python em 5 Horas Referˆencias Referˆencias utilizadas nesta aula

em 5 Horas Referˆencias Referˆencias utilizadas nesta aula Python http://python.org Uso de Python no Brasil: http:

Uso de Python no Brasil: http: http:

Uso de Python no Mundo:http: //www.pythonbrasil.com.br/moin.cgi/EmpresasPython http://pythonology.org/success Python Quotes:

Bruce Eckel 1:Python Quotes: http://www.python.org/Quotes.html http://www.artima.com/intv/aboutme.html Bruce Eckel 2:

Bruce Eckel 2:Bruce Eckel 1: http://www.artima.com/intv/aboutme.html http://www.artima.com/intv/prodperf.html Bruce Eckel 3:

Bruce Eckel 3:Bruce Eckel 2: http://www.artima.com/intv/prodperf.html http://www.artima.com/intv/typing.html Bruce Eckel 4:

Bruce Eckel 4:Bruce Eckel 3: http://www.artima.com/intv/typing.html http://www.artima.com/intv/tipping.html Gustavo Sverzut

Gustavo Sverzut Barbieri

Bruce Eckel 4: http://www.artima.com/intv/tipping.html Gustavo Sverzut Barbieri Curso de Python em 5 Horas

Curso de Python em 5 Horas

Curso de Python em 5 Horas Referˆencias Referˆencias utilizadas nesta aula

em 5 Horas Referˆencias Referˆencias utilizadas nesta aula Paul Graham — Great Hackers:

Paul Graham — Great Hackers:em 5 Horas Referˆencias Referˆencias utilizadas nesta aula http://www.paulgraham.com/gh.html Paul Graham — The Python

Paul Graham — The Python Paradox:Graham — Great Hackers: http://www.paulgraham.com/gh.html http://www.paulgraham.com/pypar.html Gustavo Sverzut

Gustavo Sverzut Barbieri

Graham — The Python Paradox: http://www.paulgraham.com/pypar.html Gustavo Sverzut Barbieri Curso de Python em 5 Horas

Curso de Python em 5 Horas

Curso de Python em 5 Horas Referˆencias Contato

Curso de Python em 5 Horas Referˆencias Contato Contato Gustavo Sverzut Barbieri Email: barbieri@gmail.com

Contato

Gustavo Sverzut Barbieri

Email:

Website:

ICQ:

17249123

MSN:

barbieri@gmail.com

Jabber:

gsbarbieri@jabber.org

Obtenha esta palestra em:

Gustavo Sverzut Barbieri

esta palestra em: http://palestras.gustavobarbieri.com.br/python-5hs/ Gustavo Sverzut Barbieri Curso de Python em 5 Horas

Curso de Python em 5 Horas