Python
Keywords: Python, 1990, Amsterdã, BitTorrent, Blender, CPython, C mais mais, Compilador
right Python é uma linguagem de programação interpretada, interativa, dinamicamente tipada, orientada a objetos.
O desenvolvimento do Python começou em 1990, no CWI (Instituto de Matemática e Ciência da Computação), em Amsterdã, na Holanda, por Guido Van Rossum, e foi depois continuado pela Python Software Foundation (PSF).
O nome Python teve a sua origem no grupo humorístico britânico Monty Python, criador do programa Monty Python's Flying Circus.
| Conteúdo |
O que é Python
Python é uma linguagem de programação interpretada, interativa, orientada a objetos (ainda que suporte outros paradigmas, como a programação funcional) dinamicamente tipada (tipos de variáveis, retornos de funções e parâmetros são identificados pelo interpretador) embora fortemente tipada (Os valores e objetos têm tipos bem definidos e não sofrem coerções como em linguagem C ou Perl).
A delimitação dos blocos de instruções é feito por alinhamento (Endentação ou Indentação), não há delimitadores como Begin e End de Algol ou { e } da linguagem C. Oferece tipos de dados de alto nível como strings de verdade, dicionários (também conhecido por hashes ou arranjos associativos), listas, tuplas, classes, etc.
O Python suporta outros paradigmas de programação além da orientação a objetos, como a programação modular, para organizar melhor os nomes e escopos de variáveis e a programação funcional, que enfatiza a avaliação de expressões, ao invés da execução imperativa de comandos. A sintaxe é fácil de ser compreendida e rápida de ser dominada, sendo considerada por muitos um dos grandes atrativos da linguagem. A construção dos tipos de dados são de alto-nível.
O Python pode ser extendida em módulos de compilação como C, C++. Os módulos de extensão podem definir novas funções e variáveis, também como novos tipos de objetos. Python é, em vários aspectos, semelhante a outras linguagens interpretadas como Tcl, Perl, Scheme e Ruby.
Foi inicialmente criado para ensino de programação de computadores mas sem que isso o tornasse uma linguagem limitada ou com poucos recursos. É uma linguagem de altíssimo nível, ou seja, bem mais próxima do raciocínio humano que da arquitetura da máquina.
Hoje é usada em diversas áreas, como servidores de aplicação e computação gráfica. Está disponível como linguagem script em aplicações como OpenOffice (Python UNO Bridge) e pode ser utilizado em Stored Procedures no banco de dados PostgreSQL (PL/Python).
Plataformas disponíveis
Está disponível para as mais diversas plataformas, desde Unix (Linux, FreeBSD, Solaris, MacOS X etc.), Windows, versões antigas de MacOS até consoles de videogames ou mesmo alguns celulares, como a série 60 da Nokia e palmtops.
O código fonte é traduzido pelo interpretador para o formato bytecode, que é multiplataforma e pode ser executado e distribuído sem fonte original.
Filosofia da Linguagem
'''The Zen of Python''' Bonito é melhor que feio. Explícito é melhor que implícito. Simples é melhor que complexo. Complexo é melhor que complicado. Plano é melhor que aglomerado. Esparso é melhor que denso. O que conta é a legibilidade. Casos especiais não são especiais o bastante para quebrar as regras. A natureza prática derruba a teórica. Erros nunca deveriam passar silenciosamente. A menos que sejam explícitamente silenciados. Diante da ambigüidade, recuse a tentação de adivinhar. Deveria haver um -- e preferentemente só um -- modo óbvio para fazer as coisas. Embora aquele modo pode não ser óbvio a menos que você seja holandês. Agora é melhor que nunca. Embora nunca é freqüentemente melhor que *agora mesmo*. Se a implementação é difícil para explicar, isto é uma idéia ruim. Se a implementação é fácil para explicar, pode ser uma idéia boa. Namespaces são uma grande idéia -- façamos mais desses!
Esse texto pode ser obtido (em inglês) digitando o comando abaixo no prompt interativo da linguagem:
>>> import this
Implementações
Python possui diversas implementações. Entre elas estão:
- CPython - A implementação original e a mais conhecida, disponível para várias plataformas (www.python.org)
- Stackless Python - Variante do CPython que permite multi-tarefa sem o uso de threads. O nome se deve a tentativa de eliminar o stack da linguagem C (www.stackless.com)
- Jython - Implementação em java (www.jython.org)
- IronPython - Implementação para .NET e Mono (www.ironpython.com)
- Pippy - Porte do Python para Palm (pippy.sourceforge.net)
- PyPy - Python totalmente escrito em Python (codespeak.net/pypy)
Licença
Python possui uma licença Open Source certificada pela OSI compatível com a GPL, porém menos restritiva. Sua licença prevê (entre outras coisas) que binários da linguagem sejam distribuídos sem a necessidade de se haver o código-fonte junto. Para maiores detalhes, visite http://www.python.org/2.4.1/license.html.
Módulos
Ao longo do tempo têm sido desenvolvidos pela comunidade de programadores Python muitas bibliotecas de funções especializadas (módulos) que permitem expandir as capacidades base da linguagem. Entre estes módulos especializados salientam-se:
- Pygame - Conjunto de módulos para o desenvolvimento de jogos, incluindo graficos SDL (www.pygame.org)
- PIL - Python Imaging Library: poderosa biblioteca para manipulação de imagens digitais (www.pythonware.com/products/pil)
- PyOpenGL - Python OpenGL Binding: suporte multi-plataforma ao OpenGL (pyopengl.sourceforge.net)
- Twisted - Framework para o desenvolvimento de aplicações de rede. Inclui módulos para servidor Web, de Aplicações, SSH e diversos outros protocolos (twistedmatrix.com)
- CherryPy - Framework para aplicações Web (www.cherrypy.org)
- Cheetah Template - Template Engine (www.cheetahtemplate.org)
- SQLObject - Mapeador objeto-relacional: traduz estruturas relacionais para objetos Python e manipula o banco de dados de forma transparente (sqlobject.org)
- Numarray - Módulo para manipulação de vetores e computação cientifíca (www.stsci.edu/resources/software_hardware/numarray)
- ZODB - Sistema de persistência e banco de dados orientado a objetos (sourceforge.net/projects/zodb)
Interfaces Gráficas
GUI é um método de interagir com um computador através de uma metáfora de manipulação direta de imagens e sinais gráficos (ícones, botões, janelas e outros)
Exemplos de GUIs para Python:
- Tkinter - Módulo padrão para GUI no Python. Simples, com poucos recursos (wiki.python.org/moin/TkInter)
- PyGTK - interface para a biblioteca GTK (www.pygtk.org)
- PyQT - interface para a biblioteca QT (www.riverbankcomputing.co.uk/pyqt)
- wxPython - interface para a biblioteca wxWidgets (www.wxpython.org)
- Wax - Construído para simplificar o uso do wxPython (www.zephyrfalcon.org/labs/wax.html)
- FXPy - interface para a biblioteca FOX (fxpy.sourceforge.net)
- PyFLTK - interface para a biblioteca FLTK (pyfltk.sourceforge.net)
Aplicações
- BitTorrent - Famoso programa P2P (bitconjurer.org/BitTorrent)
- Zope - Servidor de aplicações (zope.org)
- Plone - Gerenciador de conteúdo (ou CMS, de content management system) desenvolvido em Python e Zope (plone.org)
- Google - Engine de pesquisa de sites na Internet que possui partes de seu software desenvolvido em Python (www.google.com)
- Blender - Programa de modelagem 3D e animação que permite a criação de scripts para automatização de tarefas em Python (www.blender.org)
- Skencil - programa de desenho vetorial (www.nongnu.org/skencil)
- Gramps - Análise de Genealogia (gramps.sourceforge.net)
Utilização industrial da Linguagem
- Industrial Light & Magic (http://www.ilm.com), produz filmes da série Star Wars, usando extensivamente Python para computação gráfica nos processos de produção dos filmes.
- Google Inc. (http://www.google.com), o maior site de busca da internet, é desenvolvido em Python.
- Yahoo! (http://www.yahoo.com) usa Python para o site de grupos.
- The Inktomi (http://www.inktomi.com) usa Python para seu site de busca.
- IBM (http://www.ibm.com) e consequentemente Philips (http://www.philips.com), entre outras linguagens e aplicativos, usam Python para criar a lógica da prática de negócios para a produção de ferramentas de controle de aplicativos.
- Disney (http://www.disney.com) usa Python para produção de aplicativos de animação.
- Wolfgang Puck Soups (http://www.wolfgangpucksoup.com) usa Python na infra-estrutura de seus bens de consumo duráveis fabricando pela companhia.
- Red Hat Linux (http://www.redhat.com) usa Python para instalação, configuração e gerenciamento de pacotes.
- Real Networks (http://www.real.com) usa extensivamente Python em testes do sistema e em testes cliente/servidor para plataformas de apoio.
- Strakt (http://www.straky.com) usa Python para construir a próxima geração de seu rapidíssimo ambiente colaborativo.
- Object Domain (http://www.objectdomain.com) é uma implementação em Java, compreendendo ferramenta CASE e usando Python para suporte.
- Totally Games (http://www.totallygames.com) usa Python para muitas características de jogos como Star Trek Bridge Commander.
- The7 Afilias INFO (http://www.afilias.info) usa Python como primeira linguagem, uso genérico de alto nível com aplicações .COM desde 1985.
- The Viacom Television Stations Group (http://www.paramountstations.com) usa Python para vários sites de estações de TV.
- BEA (http://www.bea.com) usa Python em testes de softwares e-comércio.
- American Greetings (http://www.americangreetings.com) usa Python para servir milhões de cartões-saudação todos os dias.
- Plone Inc. (http://www.plone.org) usa Python para desenvolver seu conhecido software colaborativo Plone.
- Zope Corporation (http://www.zope.org) usa Python para diversa aplicações como ZOBD (Banco de Dados), CMF (aplicações de baixo nível), etc.
- NASA (http://www.nasa.gov) usa Python em muitos dos seus projetos, incluindo um sistema CAD/CAM e um módulo gráfico usado em missões de planejamento do espaço.
- The National Institutes of Health (http://www.ncrr.nih.gov) e Case Western Rerserve University (http://www.cwru.edu/) são building cutting-edge genetic analysis software with Python.
- The National Weather Service (http://www-md.fsl.noaa.gov/eft) usa Python para preparar previsões meteorológicas. Python também é usado para este propósito no Swedish Meteorological and Hydrological Institute e na TV Sueca TV4.
- Lawrence Livermore National Laboratories (http://www.llnl.gov) é baseado em um novo ambiente numérico de engenharia em Python, substituindo uma outra linguagem em funcionamento a mais de 10 anos.
- The Theoretical Physics Division at Los Alamos National Laboratory (http://bifrost.lanl.gov/MD/MD.html) usa Python para controlar códigos de grande escala de física em super-computadores paralelos, servidores e clusters.
- The US Navy (http://www.navy.mil) usa Python e Zope para seu sistema de website.
- The US Dept. of Agriculture (http://www.usda.gov) usa Python e Zope para grande quantidade de colaborações.
Sintaxe
Uma das características mais marcantes da linguagem, a sintaxe do Python é clara, concisa e elegante, o que facilita a manutenção e garante a produtividade.
Exemplos:
# O tradicional "Hello, world" print 'Olá, mundo!'
# Imprimindo uma lista ordenada com os itens com a primeira letra em maiuscula
lista = ['laranja', 'banana', 'uva']
lista.sort()
for item in lista:
print item.capitalize()
# Contando palavras em um arquivo
arquivo = file('text.txt')
palavras = arquivo.read().split()
# Tirando as repetidas
unicas = set(palavras)
# Mostrando os resultados
print 'Palavras: %d. Tirando as repetidas: %d' % (len(palavras), len(unicas))
Links externos
- Site oficial
- Site da Comunidade Brasileira
- Tutoriais
- http://www.tchezope.org
- http://minerva.ufpel.tche.br/~campani/laminas.pdf
- http://www.async.com.br/projects/python/pnp
- http://www.fabiorizzo.com/artigos/python
- http://www.python.org/doc/tut
- http://www.ic.unicamp.br/~ra008849/downloads/aulas_python/aula-01.pdf
- http://www.labaki.tk
- Outros tutoriais de Python
- Python Cookbook
- Outros links
- http://www.pyzine.com
- http://www.pythonware.com/daily
- http://www.planetpython.org
- http://diveintopython.org
