Depois de programar em PHP por mais de três anos (desde 2009), cheguei a um momento onde a linguagem não mais satisfaz minhas necessidades (e até me dá raiva hehe ;).
O PHP não é uma linguagem ruim porque com ela é possível fazer as coisas fácil e rapidamente, mas também não é uma boa linguagem. Ele possui vários aspectos ruins, como a falta de design e planejamento da linguagem (o PHP nasceu em hacks e ainda baseia-se em muitos hacks), nenhum tipo de padrão de estilo de código universal (há dezenas de padrões diferentes, em n* projetos), uma pletora de frameworks que competem entre si e baixa concisão nas bibliotecas padrão (ok, as mais recentes estão muito melhores). Dadas estas razões, eu precisava aprender uma nova (e melhor) linguagem de programação.
Os critérios para a escolha de uma nova linguagem são: ter código aberto; ser desenvolvida ativamente; ter padrões de código bem difundidos; ter boa aceitação e presença de mercado; ser fácil de aprender; ter frameworks estáveis e uma sintaxe agradável.
Dentre as muitas linguagens pesquisadas, Perl, Python e Ruby atenderam bem a estes critérios. Busquei livros texto sobre as linguagens, aprendi o básico e vou compará-las. Como já programava em PHP, também irei compará-lo às outras linguagens.
PHP
O PHP é uma linguagem que nasceu para a web, e é tanto procedural como orientada a objeto. Não é uma linguagem muito planejada, e tem muitas gambis e inconsistências. É praticamente uma filha do Perl com o C, então é ao mesmo tempo fácil de aprender e de produzir spaghetti code.
É muito fácil e barato lançar um site em PHP, dada a quantidade (onshore e offshore) de desenvolvedores e o baixo custo de hospedagem para PHP - incluso em quase todas as hospedagens populares. Aprender PHP também é muito fácil, dada a disponibilidade de tutoriais (não lá muito bons) na web.
No entanto, a coisa fica feia quando queremos algo a mais. Há muitos frameworks para PHP, e estes parecem competir entre si; há pouca coesão nas bibliotecas padrão e nos estilos de código; há problemas com escalabilidade, e sempre aparecem novas vulnerabilidades de segurança que são corrigidas, muitas vezes, com gambiarra (veja o código-fonte das correções de segurança e entenderá ;).
PHP é a linguagem ideal para fazer uma aplicação pequena/média com baixo custo, mas nada mais que isto. É bom conhecê-la, mas sempre que possível utilizar uma linguagem mais sólida (e.g.: Java, Python, Ruby).
Perl
Eu comprei um livre de Perl há um tempo atrás, mas nunca o li (sim, comprei por impulso ;). A princípio a linguagem parecia interessante - uma linguagem com mais de 20 anos e muito utilizada para a administração do Linux não poderia ser ruim (ledo engano). Logo que avancei um pouco no livro, a sintaxe e a verbosidade do Perl começou a encher o saco. Se o PHP já é meio ilegível, o Perl é muito pior. Acabei por desistir, pois parecia que eu estava aprendendo uma variante de Brainfuck. Além do mais, fiquei com medo da lenda que diz que um programa escrito por uma pessoa não pode ser lido por outra (lol). Comparado ao PHP, mudar para Perl seria uma regressão.
Perl ainda é útil para um sysadmin, mas está caindo em desuso, então quero é ficar longe.
Python
O Python é incrível e era a melhor escolha até eu começar a tentar usar algumas de suas bibliotecas. Eu tive vários problemas por causa da disponibilidade das bibliotecas para a versão 3.x do Python, e o 2to3 quase nunca ajudava. Isso encheu muito o saco.
O Python é, no geral, bem desenhado/planejado, então arrisco dizer que é bem intuitivo programar nesta linguagem - geralmente só há uma forma (geralmente óbvia) de fazer as coisas. Além disto, entre as minhas escolhas, é a que produz o código mais legível. Quanto aos frameworks para a web, há o Django, estado da arte dos full stack frameworks para Python, e vários microframeworks interessantes.
Uma vantagem legal é a possibilidade de usar a linguagem para administração de sistemas. No entanto, os problemas com as bibliotecas e a relutância dos desenvolvedores experientes em migrarem para o Python 3 (sim, encontrei muitas referências a usuários que simplesmente não querem migrar) minaram meu interesse. Decidi por aprender apenas o básico da linguagem e largá-la até a versão 3.x que se torne mais “usável”.
Ruby
O Ruby está em alta, principalmente por causa do hype do Rails. Na verdade, o Rails está mais em alta do que o Ruby, vide o número de pessoas querendo aprender “apenas” Rails (o mesmo acontece com o jQuery/JavaScript). Apesar do Ruby ser aparentado do Perl, sua sintaxe é muito menos enigmática e muito mais legível.
Ao contrário do Python, no Ruby há n* formas de fazer as coisas, e isso pode levar a um pouco de confusão. Por outro lado, mantém-se aquela sensação de intuitividade, pois se você imagina que um método com nome “X” exista e faça tal coisa, é provável que você esteja certo.
No campo dos frameworks, o Rails domina de longe a categoria dos full stack, enquanto o Sinatra domina a categoria dos microframeworks. Isto é ótimo, pois há menor fragmentação na comunidade, maior cooperação e os frameworks acabam sendo muito estáveis e completos.
Um ponto interessante: é muito fácil escrever DSL’s (domain-specific languages) com Ruby, o que acaba por tornar os programas quase textos normais em inglês.
Conclusão
Se você não conhece nenhuma linguagem de programação, Ruby é a escolha certa para aprender. Será mais difícil aprendê-la do que Python, mas sabendo Ruby, você praticamente sabe Python. Há menos ofertas de trabalho para Ruby (especialmente para Rails) do que para PHP, porém o salário é sempre maior, então isto depende de sua “necessidade”.
Eu não abandonarei o PHP de vez porque ainda quebra um galho, mas vou investir no Ruby e utilizá-lo sempre que possível.