Manual do Hacker | 79
Perl 5 +++++
Perl foi a primeira linguagem de script web CGI e tem mais ou menos
acompanhado a evolução. Ela possui as bibliotecas e muitos exemplos a partir dos
quais é possível aprender, mas você terá que escolher com cuidado entre as
soluções disponíveis. Catalyst, Dancer e Mojolicious são bons frameworks de
aplicação web. É mais provável que você encontre tudo o que precisa no CPAN.
Você pode colar algumas das bibliotecas – muitas das quais já são coletadas
diretamente em sua distro – para lidar com um pipeline de tarefas, como recuperar
dados XML, convertê-los arquivos PDF e indexá-los em uma página da web.
A interface CGI tradicional do Perl ainda está disponível, e apesar das
alternativas de melhor desempenho captadas através do PSGI, que você pode
encontrar com use CGI; isso é tudo o que você precisa para ativar seu script web.
Lembre-se: há sempre mais de uma maneira de fazer isso.
Ruby +++++
Não pense que Rails seja uma solução milagrosa para a maioria dos problemas de
administração de sistemas. Não é. E, embora o software Sinatra torne mais fácil a
implantação de qualquer coisa em Ruby baseada na web, mesmo isso é um exage-
ro para a maioria dos propósitos. Dito isso, Rails faz um bom trabalho quanto a obter
o código rapidamente. Ruby é ideal para conseguir qualquer script habilitado para
web, graças aos gems (bibliotecas) que são escritos por pessoas inteligentes que
tomaram decisões sensatas. Colocar uma interface da web em nosso script de
backup foi divertido, mas nos distraímos com as várias gems, por exemplo, para
exportar relatórios de planilhas do Google. Há também ferramentas como nanoc,
que geram HTML estático a partir da HAML (HTML Abstraction Markup Language).
Algumas das gems de relatório complementam a expressividade da linguagem e
tornam fácil a adição de qualquer funcionalidade aos scripts.
Python +++++
O Web Server Gateway Interface (WSGI), do Python, originalmente especificada na
PEP 333, abstrai a interface do servidor web enquanto as bibliotecas WSGI lidam com
o gerenciamento de sessões, autenticação e praticamente qualquer outro tipo de
problema que você queira abordar pelo middleware. O Python também tem muitas
pilhas de frameworks web, como Django, TurboGears e Pylons. Como Rails, para
algumas finalidades talvez seja melhor codificar funcionalidade web em um script
existente. Mas os modelos de engines do Python irá poupá-lo de gerar confusão de
HTML e Python. O Python tem muitas outras vantagens, desde a nuvem do Google
App Engine, com seu próprio interpretador Python, que funciona com qualquer
framework de aplicativos web compatível com WSGI, até testar aplicativos escaláveis
para suportar um estilo limpo de metaprogramação.
A
ntes de chegar a 1.000 linhas
de código, os scripts Bash
tornam-se incontroláveis.
Apesar de sua natureza processual, há
tentativas de fazer um Bash orientado
a objeto. Nós não recomendamos isso,
pois pensamos que ele é melhor no
conceito de modularidade. A
“programação funcional” (functional
programming ou FP) no Bash (http://
bit.ly/BashFunsh) também é
impraticável.
Perl está preso ao conceito
orientado a objeto e não será para
todos os gostos, mas dá conta do
trabalho. Perl tem closures (função
declarada dentro do corpo de outra)
totalmente funcionais e, apesar de
problemas de sintaxe, pode ser
sustentado dentro de FP – só não
espere que isso seja agradável. Para
isso você deve esperar por Perl 6.
Python se sai bem também com
“programação imperativa”, orientada a
objeto e também gerencia FP. As fun-
ções são objetos de primeira classe,
mas outras características estão faltan-
do, ainda que suas listas sejam muito
boas. Mochi, a linguagem de programa-
ção funcional (http://bit.ly/FPMochi)
usa um interpretador escrito em
Python 3.
Ruby é projetado como uma
linguagem pura orientada a objetos, e
é talvez a melhor desde Smalltalk.
Também pode ser motivado a apoiar
um estilo funcional de programação.
Mas para obter o código FP fora do
Ruby, você terá que ir tão longe das
boas práticas que deverá usar outra
linguagem para tanto.
Isso nos traz perfeitamente para o
NewLISP, uma linguagem elegante e
poderosa com todas as funcionalida-
des ao seu alcance. NewLISP usa uma
implementação pseudo orientada a
objetos, isto é, na forma de programa-
ção orientada a objetos funcionais,
mas isso não significa, no entanto, que
ele possa ser suficiente para uma pro-
gramação real orientada a objeto.
Programabilidade
Gerenciar grandes scripts exige outros paradigmas de programação
Veredicto
Bash
+++++
NewLISP
+++++
Perl 5
+++++
Python
+++++
Ruby
++++
Python é uma
linguagem multi-
paradigma e a
mais fácil de
manter.
|