Hoje no Hack ‘n’ Cast, com a ajuda do Eric Hideki (twitter do Eric), falaremos de uma das linguagens mais amadas da história, o Python é utilizado para scripts simples, programas comuns, programas para simulação científica, scripting e interligação de módulos de jogos, cálculo numérico, desenvolvimento front-end e back-end e etc.
Para não perder nenhum episódio siga-nos nas redes sociais (Twitter e Facebook) ou inscreva-se (Feed, Podflix, iTunes e Pocket Casts). Você quer colaborar com o Hack ‘n’ Cast? Sugira um tema, nos ajude a produzir uma pauta ou participe conosco! Basta entrar em contato por E-mail, Facebook ou Twitter. E agora temos a nossa lista de discussão no Google Groups!
O que é?
Python é uma linguagem de programação de propósitos gerais, isto é, ela não foi criada com um propósito específico. Exemplos de linguagens de domínio específico: HTML, VHDL, Shell Script, Matlab, SQL e etc.
A linguagem Python foi criada em 1989 para ser a sucessora da linguagem ABC com o intuito inicial de ser uma linguagem intermediária entre o Shell Script e a linguagem C. O Python é um software livre desde sua criação e até a presente data é mantida pela comunidade com o apoio da Python Sofware Foundation (PSF). Apesar de ser um software livre o direcionamento desta linguagem é gerenciado por seu criador, Guido Van Rossum, carinhosamente apelidado de BDFL (Benevolent Dictator for Life).
Influências da linguagem Python:
- ABC (Principal inspiração);
- BASIC;
- ALGOL 68;
- Modula-2 e Modula-3;
- C/C++;
- Haskell;
- Lisp;
- Perl.
Características da linguagem:
- Ela é uma linguagem intuitiva, fácil e agradável de ser utilizada;
- Possui uma sintaxe concisa e clara;
- Criado para ser semelhante a um pseudocódigo;
- Visa reduzir o esforço do programador e favorecer o esforço computacional;
- Prioriza a legibilidade do código (o foco não é a velocidade);
- Excelente biblioteca padrão (batteries included);
- Diversos módulos/frameworks desenvolvidos por terceiros;
Uma lista completa de casos de sucesso está disponível no site oficial do Python.
História
Há alguns anos, quando eu tinha o projeto de escrever um livro sobre Python, eu fiz uma pesquisa extensa sobre a história do Python. O resultado foram quase três páginas com diversos detalhes interessantes sobre a história desta linguagem. Infelizmente nem todos os pontos da história do Python puderam ser abordados neste episódio (por motivos de duração) então, tireia poeira dos arquivos, limpei os excessos e o resultado está disponível para todos lerem aqui.
Características
O Python possuí algumas características importantes:
- É um Software Livre
- Você pode distribuir cópias, ter acesso ao código fonte, alterar, modificar, redistribuir e utilizar pedaços dele em outros programas. Além disso, isso garante seu constante aperfeiçoamento e que todo o trabalho é feito por uma comunidade que quer ver a linguagem crescer.
- Portável
- Isto é, roda em diversas arquiteturas. Seu programa pode facilmente rodar em: Linux, Windows, FreeBSD, Macintosh, Solaris, OS/2, Amiga, AROS, AS/400, BeOS, OS/390, z/OS, Palm OS, QNX, VMS, Psion, Acorn RISC OS, VxWorks, PlayStation, Sharp Zaurus, Windows, PocketPC e Symbian OS (utilizado por exemplo no Nokia S60).
- De altíssimo nível
- Conforme nosso penúltimo episódio, as linguagens podem ser divididas em níveis. Esta é uma linguagem de alto nível, mas alguns gostam de defini-la como de altíssimo nível (termo não aceito no meio acadêmico).
- Interpretada
- Conforme nosso penúltimo episódio, as linguagens de programação podem ser classificadas como compiladas ou interpretadas. Como Python é interpretada, ela não gera arquivos binários, mas bytecodes interpretados pela máquina virtual do Python. Consequentemente sua performance não é excelente.
- Interativa
- Esta característica permite que você tenha "acesso ao programa" durante sua execução, além de te prover um shell interativo.
- Orientada a objetos (ou não)
- Conforme nosso penúltimo episódio a Orientação a Objetos é um modelo de programação. Apesar do Python ser 100% orientada a objeto (até os erros são objetos), você não é obrigado a programar orientado a objeto. Esta linguagem lhe permite realizar programação estruturada e possui elementos de programação funcional.
- Extensível e Integrável
- Possui suporte de integração de diversos tipos, incluindo Enterprise Application Integration (EAI), invocação de componentes COM ou CORBA e a chamar ou ser chamada diretamente por códigos C, C++, ou Java (via Jython). Dessa forma é possível "envelopar", de maneira rápida e simples, tecnologias existentes em C/C++ e Java para serem usadas pelo Python.
- Tipagem Dinâmica
- Tipagem dinâmica quer dizer que não há pré-declaração de variáveis, pois o tipo é definido dinamicamente durante a execução do programa. Consequentemente, uma variável que neste momento é um inteiro, posteriormente pode vir a ser uma string. Esta funcionalidade remove complexidades mas exige do programador uma disciplina peculiar ao escrever seus programas.
- Tipagem Forte
- Apesar da tipagem ser dinâmica, ela possui tipagem forte, isto implica que a linguagem possui um comportamento bem definido ao realizarmos "operações" entre tipos descasados.
- Indentação e Blocos de Códigos
- Um dos focos do Python é ter um código legível e bem organizado. Todo programador sabe que, na pressa para atender um prazo, o código se torna desorganizado, e a indentação do código é a primeira característica a ser deixada para trás. Por isso a indentação é algo obrigatório na linguagem. Diferente de outras linguagens, que utilizam delimitadores como BEGIN e END ou { e }, o Python utiliza a indentação (tanto com espaços ou com tabulações) como controle de bloco de códigos.
- Bibliotecas e Módulos
- O Python possui uma vasta biblioteca desde a mais básicas, como expressões regulares, chegando até o manuseio de conexões HTTP seguras, processamento de XML e HTML, bancos de dados, ftp, e-mail, manipulamento de imagens, engine de jogos, criptografia, GUIs (interfaces gráficas), manipulamento de arquivos WAV e muito mais. Todos os modulos externos estão organizados e indexados no PyPi
Zen of Python
Um mantra criado por Tim Peters (criador do Timsort) que tinha como objetivo guiar o estilo de programação de todos os programadores Python, ela é quase uma "filosofia". Toda a Zen of Python está disponível juntamente com a linguagem, bastando um import this.
Beautiful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than complicated.Flat is better than nested.Sparse is better than dense.Readability counts.Special cases aren’t special enough to break the rules.Although practicality beats purity.Errors should never pass silently.Unless explicitly silenced.In the face of ambiguity, refuse the temptation to guess.There should be one— and preferably only one —obvious way to do it.Although that way may not be obvious at first unless you’re Dutch.Now is better than never.Although never is often better than right now.If the implementation is hard to explain, it’s a bad idea.If the implementation is easy to explain, it may be a good idea.Namespaces are one honking great idea — let’s do more of those!—The Zen of Python, by Tim Peters
Exemplos de Códigos
O típico Hello World:
print "Hello World!"
Um código que imprime o conteúdo de uma lista:
lista = [1, 2, 3, 4, 5]
for item in lista:
print item
Um código que sorteia uma pessoa em uma lista:
import random
nomes = [
"José",
"João",
"Maria",
"Ana"
]
print random.choice(nomes)
Um função que calcula a série de Fibonacci:
def fibonacci(n):
a,b = 0,1
for i in range(n):
a,b = b,a+b
return a
Jogo de adivinhar o número (de 1 a 100):
from random import randint
print ('Bem vindo!')
sorteado = randint(1, 100)
chute = 0
while chute != sorteado:
chute = int(input ('Chute: '))
if chute == sorteado:
print ('Você venceu!')
else:
if chute > sorteado:
print ('Alto')
else:
print ('Baixo')
print ('Fim do jogo!')
Jogo de adivinhar um nome feminino entre os mais frequentes no Brasil (feito por uma menina de 12 anos)
import random
nomes = '''Júlia Sophia Isabella Manuela Giovanna Alice Laura
Luiza Beatriz Mariana Yasmin Gabriela Rafaela Isabelle Lara
Letícia Valentina Nicole Sarah Vitória Isadora Lívia Helena
Lorena Clara Larissa Emanuelly Heloisa Marina Melissa Gabrielly
Eduarda Rebeca Amanda Alícia Bianca Lavínia Fernanda Ester
Carolina Emily Cecília Pietra Milena Marcela Laís Natália
Maria Bruna Camila Luana Catarina Olivia Agatha Mirella
Sophie Stella Stefany Isabel Kamilly Elisa Luna Eloá Joana
Mariane Bárbara Juliana Rayssa Alana Caroline Brenda Evelyn
Débora Raquel Maitê Ana Nina Hadassa Antonella Jennifer
Betina Mariah Sabrina'''.split()
nomes.sort()
print (' '.join(nomes))
sorteado = random.choice(nomes)
chute = ''
while chute != sorteado:
chute = input('Chute: ')
if chute == sorteado:
print ('Parabéns!')
elif chute > sorteado:
print ('Alto')
else:
print ('Baixo')
Modulos Externos
- Frameworks para Desenvolvimento Web
- Django
- Pylons
- TurboGears
- Plone
- CherryPy
- Web2py
- Flask
- Bottle
- Processamento de Imagem/dados e geração de gráficos
- Matplotlib
- Pylab
- Numarray
- Numpy
- Scipy
- Python Imaging Library (PIL)
- Pillow
- PyOpenGL
- Visual Python
- Pandas
- GUI Development
- wxPython
- tkInter
- PyGtk
- PyQt
- System Administration
- Ansible
- Salt
- OpenStack
Fontes de Aprendizado
- Site oficial;
- Beginners Guide;
- Documentação Oficial;
- Tutorial Python 2;
- Tutorial Python 3;
- Best Free Python Books;
- Vídeo Aulas Gratuitas;
- PythonHelp;
- Livros da Novatec
Na compra de qualquer livro na Novatec utilize o código MINDBENDING para conseguir 20% de desconto.
Outros Links Citados
- Python + Haskell;
- Python Brochure;
- BioPython;
- Sentibol (Projeto do Cássio Botaro);
- Python tocando Sweet Child O’Mine;
- iPython;
- Curto Circuito Podcast;
- PEP8;
- O Que Python Pode Fazer e Você Não Sabia;
Links Citados no Bug Report
Trilha Sonora
A trilha sonora deste episódio foi escolhida pelo Eric Hideki e é uma homenagem ao System of a Down.
- System Of A Down (1998)
- P.L.U.C.K
- War
- Suite-Pee
- Know
- Spiders
- Soil
- Toxicity (2001)
- Prison Song
- Needles
- Deer Dance
- Chop Suey!
- Forest
- ATWA
- Toxicity
- Steal This Album (2002)
- I-E-A-I-A-I-O
- Bubbles
- Boom!
- Ego Brain
- Roulette
Comments
comments powered by Disqus