O futuro e as escolhas com Python

25 11 2008

Para começar iremos falar sobre o futuro e as escolhas com o Python, uma linguagem que está ganhando mercado e pode ser uma escolha interessante profissionalmente.

Python Parte I – O futuro e as escolhas com Python

SOBRE PYTHON

Python é uma linguagem que traz uma simplicidade indiscutível, ao mesmo tempo

em que, apesar de ser uma linguagem interpretada, é extremamente veloz. Foi criada por GuidoVanRossum

python border=0

REVISÃO DE CONCEITOS

Python é uma linguagem simples, mas é construída em uma base teórica e técnica

muito complexa. Ela eleva a orientação a objetos, em alguns casos, ao extremo.

LINGUAGEM INTERPRETADA vs COMPILADA

Python, como já foi dito, é uma linguagem interpretada, como Perl, entre outras. Isso signifíca que não é necessária a compilaçãao do código para que ele seja executado e isso trás várias vantagens e desvantagens embutidas.

Linguagens compiladas normalmente são mais rápidas, porque o código já está num

formato que o computador entende. Linguagens interpretadas costumam funcionar de

uma ou outra maneira:

Compilação Just-In-Time

Interpretação pura ou em Bytecode

TIPAGEM FORTE

Python é uma linguagem de tipagem forte. Isso signifíca que se uma variável adquire

um determinado tipo não deixa mais de ser daquele tipo a menos que seja recriada. Isso

o torna diferente de um script Shell, por exemplo, em que nunca se sabe o tipo exato de

uma variável.

Apesar da sua tipagem ser forte, a declaração de variáveis não é necessária e a simples

atribuição de um valor serve para criar ou recriar uma variável. Leve isso em conta quando

programar. Tome muito cuidado com os nomes das variáveis.

ORIENTAÇÃO A OBJETO

Uma linguagem orientada a objetos coloca como centro nervoso do programa um ou

mais objetos de determinada classe, ao contrário das linguagens estruturadas, em que o

processo, ou as estruturas de dados são o centro e você chama funções que atuam sobre

esses elementos.

Python é uma linguagem orientada a objetos, e nela quase tudo é um objeto. Até

mesmo as variáveis que representam os tipos mais básicos, como inteiro e caractere são

objetos, têm seus métodos e propriedades.

Utilizando Python podemos programar para web (Django, zope, TurboGears, etc), para desktop e para celular. A mesma vantagem que temos no uso de java.

ENTÃO PORQUE USAR PYTHON?

  • Fácil de aprender e intuitiva
  • Maior produtividade
  • Dificulta escrita códigos obscuros
  • Multi-plataforma
  • Mais robusta e segura que outras linguagens de script
  • Código aberto

MERCADO DE TRABALHO COM PYTHON

As linguagens de mercado agora são Java, .NET e PHP, falando de web, claro.

Atualmente existe demanda por profissionais que conheçam Python. Cidades como Brasília, São Paulo, Recife e Rio de Janeiro têm um volume maior de ofertas de emprego do que profissionais qualificados.

Portais web no Brasil(alguns por segmento):
  • Comunidade Zope e Plone brasileira
  • Comunidade de desenvolvedores TurboGears
  • Comunidade ServidorPublico.net
  • Universidade Metodista de São Paulo
  • Editora Moderna
  • Universidade Corporativa Caixa
  • Portal do Governo do Brasil
  • Presidência da República
  • Câmara dos Deputados
  • SERPRO
  • IDGNow!
  • Dicionário Veja Larousse
  • Linux Magazine
  • Varig
  • Simples Consultoria
  • Politec
  • OAB/SP
  • UNESCO
Utilização comercial de Python:
  • Google
  • Industrial Light and Magic
  • NASA
  • Thawte
  • Inktomi

COMPARAÇÃO ENTRE LINGUAGENS:

Python e Perl

são linguagens com propósitos bastante parecidos, entretanto Python promove a facilidade de leitura em contraste ao modo “somente de escrita” que muitos programadores adotam em Perl. Um outro lema oposto ao Perl é que existe somente um jeito de se fazer uma coisa, em vez de se utilizar diversos dielatos que Perl permite.

Python e Java

são linguagens bastante diferentes, o que torna a comparação direta difícil. Python sugere um desenvolvimento rápido, do tipo “editar-executar” (Python compila automaticamente quando executamos o programa), Java exige que o programador “editar-compilar-executar” (ainda que o arquivo gerado tenha que ser interpretado…).

Python e C

C é de médio nível e, assim como o assembly, expõe conceitos estruturais da arquitetura da máquina e complica a implementação de conceitos modernos com Orientação a Objetos.

Python e Pascal

Pascal é “linguagem de brinquedo”. Nos anos 80 era uma ótima linguagem para iniciar a programar, mas hoje este papel pode ser cumprido com vantagens por Python.

Python e PHP

PHP é uma linguagem de programação especialmente direcionada para a programação de websites dinâmicos. Até existe o projeto PHP-GTK, ou seja, tornar o PHP também uma linguagem de programação com suporte a objetos gráficos, porém é complicado, trabalhoso e problemático. O Python é uma linguagem sem objetivo principal: pode ser tanto utilizada em programas modo texto, quanto suporte a objetos gráficos e páginas dinâmicas. Aprendendo Python, você terá a capacidade de montar programas para diversas plataformas e objetivos sem nem mesmo precisar trocar de linguagem.

Python e Visual Basic/Delphi

Em termos de Win32, o Python não perde em nada para VB/Delphi, pois oferece o acesso completo ao MFC e outras bibliotecas gráficas mais produtivas. Em contrapartida, oferece uma linguagem Orientada a Objetos DE VERDADE enquanto que essas outras duas apenas implementam parte dos conceitos da OOP. Outras vantagens importantes são o custo/benefício e o fato de ser multi-plataforma. Em termos de .Net, o IronPython oferece bom suporte, com a vantagem de suportar também o Mono.

Bom, acho que conseguimos responder algumas questões interessantes sobre Python. Abaixo, os links usados como fonte. E nos quais podemos ter mais detalhes sobre Python:

Para saber mais (em português):

http://www.pythonbrasil.com.br

http://www.tchezope.org

http://www.oturbogears.org

Para saber mais (em inglês):

http://www.python.org

http://www.djangoproject.com

http://www.zope.org

http://www.plone.org

http://www.turbogears.org





Utilização de frameworks para desenvolvimento ágil

25 11 2008

Com frameworks conseguimos um nível bem elevado de produtividade, já que eles possuem muitas facilidades embutidas e às vezes fazem grande parte do trabalho que seria repetitivo para os programadores.

Hoje em dia temos uma variedade deles no mercado, para a maioria das linguagens de programação largamente utilizadas, como PHP, Java e Python, e também para linguagens de script como Javascript. Alguns deles são muito ligados com a linguagem para a qual foi criada como Rails, tanto que muitas pessoas ouvem falar da linguagem Ruby como Ruby on Rails, e a maioria dos que começam a trabalhar com Ruby já aprendem com o framework.

Quando projetamos um sistema utilizando framework, temos projetos melhores, isso porque economizamos tempo na programação básica e trivial, já que os frameworks fazem o ’serviço sujo’ de programação, ou seja, as coisas básicas que se repetem não precisam ser feitas mais pelo programador e sim automaticamente pelo framework. Com esse tempo a mais, podemos pensar na criação de módulos complexos, e com isso aumentar o nível do projeto para além do esperado no planejamento do prazo.

O uso de frameworks não é totalmente difundido, por vários motivos… Alguns deles que podemos citar são:

  • Muitas empresas têm políticas internas para sua não utilização.
  • As pessoas tendem a se acomodar com métodos de programação comuns ou com a forma em que aprenderam.
  • A adoção de frameworks é difícil no início, pois é praticamente uma outra linguagem ou técnicas a ser aprendida.

Essas características são contornáveis, mas antes disso precisamos compreender muito bem os prós e passar a filosofia inteira para todos os envolvidos no projetos. O tempo de aprendizado do framework é compensado pelos benefícios de seu uso, assim como o aprendizado só é difícil no começo, pois na medida em que vamos usando, vai ficando cada vez mais rápida e automática a criação…

Quero passar a mensagem de que vale a pena pensar no uso dos frameworks, ainda mais hoje em dia com toda a variedade existente no mercado, dos mais básicos e complexos.Fechando aqui, vou deixar uma lista de frameworks que acho úteis para algumas linguagens:

PHP: Code Igniter, Cake, Zend Framework.

Java: Spring, Struts, VRaptor.

Python: DJango.

Ruby: Rails

Javascript: JQuery, Mootools, Prototype