quinta-feira, 4 de junho de 2009

Extreme Programming ou XP o que é ?

Atualmente o foco de desenvolvimento parece ter mudado para a criação de grandes bibliotecas que cercam, muitas vezes de maneira inferior, as limitações de algumas linguagens.
Outro foco é a criação de metodologias que empregam melhor as linguagens já existentes, como exemplo dessa tendência pode-se citar: Extreme Programming e UML (Unified Modeling Language) que são técnicas que se encaixam em praticamente qualquer tipo de linguagem de programação, mas não alteram fundamentalmente as mesmas.

UML é uma linguagem de modelagem não proprietária de terceira geração, não é uma metodologia de desenvolvimento, o que significa que ela não diz para você o que fazer primeiro e em seguida ou como projetar seu sistema, mas ela lhe auxilia a visualizar seu desenho e a comunicação entre objetos. Basicamente, a UML permite que desenvolvedores visualizem os produtos de seu trabalho em diagramas padronizados. Junto com uma notação gráfica, a UML também especifica significados, isto é, semântica. É uma notação independente de processos, embora o RUP (Rational Unified Process) tenha sido especificamente desenvolvido utilizando a UML.
Programação extrema (do inglês eXtreme Programming), ou simplesmente XP, é uma metodologia ágil para equipes pequenas e médias e que irão desenvolver software com requisitos vagos e em constante mudança. Para isso, adota a estratégia de constante acompanhamento e realização de vários pequenos ajustes durante o desenvolvimento de software.
Os quatro valores fundamentais da metodologia XP são: comunicação, simplicidade, feedback e coragem. A partir desses valores, possui como princípios básicos: feedback rápido, presumir simplicidade, mudanças incrementais, abraçar mudanças e trabalho de qualidade.

Dentre as variáveis de controle em projetos (custo, tempo, qualidade e escopo), há um foco explícito em escopo. Para isso, recomenda-se a priorização de funcionalidades que representem maior valor possível para o negócio. Desta forma, caso seja necessário a diminuição de escopo, as funcionalidades menos valiosas serão adiadas ou canceladas.

A XP incentiva o controle da qualidade como variável do projeto, pois o pequeno ganho de curto prazo na produtividade, ao diminuir qualidade, não é compensado por perdas (ou até impedimentos) a médio e longo prazo.

Todd Proebsting, um pesquisador da Microsoft, argumenta que o problema mais importante na criação de uma linguagem de programação moderna é como melhorar a produtividade do programador já que o hardware hoje é suficientemente poderoso e não requer que compiladores otimizem massivamente o código e os dados de um programa para obter uma boa performance.

Proebsting diz que algoritmos e modelagem apropriada são suficientes para o desenvolvimento de programas eficientes em compiladores modernos e que criadores de linguagens deveriam se preocupar com meios de ajudar programadores a desenvolverem bons programas rapidamente, corretamente e facilmente. Segundo ele, linguagens de programação são o local certo para resolver o problema já que elas estão na raiz do processo, em oposição à engenharia de software e análise.

Nesta mesma linha de pensamento, Paul Graham, em um artigo baseado em uma palestra que ele deu na PyCon, tenta imaginar como as linguagens de programação serão daqui a cem anos. Ele argumenta que as linguagens do futuro provavelmente serão baseadas em um núcleo limpo e conciso contendo todos os axiomas a partir dos quais as outras características da linguagem poderão ser derivadas. Ele escreve:

“No mínimo, um exercício que pode ser útil é analisar cuidadosamente o núcleo de uma linguagem para verificar se há axiomas que podem ser eliminados. Em minha longa carreira como um chato eu descobri que lixo sempre gera mais lixo, e eu já vi isso acontecer tanto em software como embaixo de camas e em cantos de quartos. Ocorre-me que os galhos principais da árvore evolutiva (da programação) passam por linguagens que tem menores e mais limpos núcleos. Quanto mais da linguagem você pode escrever nela mesma, melhor.”

A pergunta é: quais serão as novas e grandes mudanças das linguagens de programação?

LINKS RELACIONADOS:
http://logbr.reflectivesurface.com/2003/03/26/evolucao-das-linguagens-de-programacao/
http://logbr.reflectivesurface.com/2003/05/14/mais-sobre-a-evolucao-de-linguagens-de-programacao/
http://pt.wikipedia.org/wiki/UML
http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_extrema
http://pt.wikibooks.org/wiki/Introdu%C3%A7%C3%A3o_%C3%A0_programa%C3%A7%C3%A3o/Linguagens_de_programa%C3%A7%C3%A3o

segunda-feira, 1 de junho de 2009

Linguagens de programação e sua evolução

Nos últimos 10 anos, pode-se observar que há pouquíssima evolução em termos de estruturas e conceitos na criação de linguagens, pois, apesar da abundância de linguagens, a sobreposição dos conceitos é muito grande.

Muitas das mudanças ocorrem em função da necessidade, percebe-se também que muitas linguagens não passam de pequenas ligeiras variações de uma linguagem base, como por exemplo, em Perl, Python, PHP, Java, C, C++, C# e Delphi que apresentam diferenças mínimas entre si e mudam a maneira de escrever determinadas construções, porém, sem alterar a semântica das mesmas.

Java e C#, linguagens em ascensão no fim dos anos 90 e começo do ano 2000, são linguagens de alto poder de abstração e com boas capacidades de virtualização, o que lhes conferem boas possibilidades de independência de plataforma, embora estas características ainda estão sendo melhoradas. Tem como vantagens, uma maior facilidade na criação dos programas, porém são programas mais lentos do que em C/C++ e vínculos de patentes com as empresas que as desenvolveram.

A vasta maioria das outras linguagens permanece estacionada em locais próximos às suas origens. Um exemplo é o Delphi, uma variante do Object Pascal, usada na ferramenta homônima da Borland. Depois de tornar-se uma linguagem orientada a objetos (o que aconteceu por volta de 1989), pouca coisa nova foi acrescentada à mesma.

O problema mais importante, hoje, na área de Linguagens de Programação, é o desenvolvimento de linguagens que aumentem a produtividade do programador. Linguagens que permitam escrever programas corretamente, facilmente e rapidamente. Esta é a razão do rápido crescimento de linguagens como Java, C# e Ruby.

Muitas das linguagens atuais (PHP, Python, Perl) optaram por tipos dinâmicos para ganhar flexibilidade e produtividade. PHP por exemplo, que é uma das linguagens mais usadas no mundo e como outras, saíram de sua infância procedural há relativamente pouco tempo. Outras, embora já tendo nascido orientadas a objetos, não acrescentaram nenhuma novidade ao conceito. Neste caso, Python e Java seriam exemplos típicos. Isso quer dizer que muitas linguagens estão repetindo um ciclo evolutivo que já é antigo.

Ciclos de processamento e tempo de computador são cada vez mais baratos; tempo de programador e criatividade são cada vez mais caros. Por isso, a tendência atual no mercado é favorecer linguagens de alto nível, menos otimizadas para a máquina, e mais otimizadas para o programador: linguagens como Perl, Python e Ruby, consideradas linguagens de programação de alto nível, com um nível de abstração relativamente elevado, longe do código de máquina e mais próximo à linguagem humana tem como vantagens maior facilidade de implementação e execução em relação ao Java e ao C#, uma desvatagem porém, é que são programas mais lentos do que em C/C++ .
Links Relacionados: