Linguagens… (3) Boo!

Então, depois do meu último post sobre linguagens de programação, o Vitor apareceu sugerindo a linguagem Boo. Resolvi dar uma olhada sobre o que ele tinha escrito sobre a linguagem, e também no site oficial dela.

Eu já tinha ouvido falar, mas não tinha dado a devida atenção, nem sabia que ela é feita por um brasileiro :-) ! Provavelmente me distraí por causa da avalanche de linguagens pra .NET e Java VM, ela acabou se misturando com as outras na minha cabeça. Nem sabia qual era a diferença entre Boo e Groovy, por exemplo.

Encontrei no Boo algumas coisas bem legais. Primeiro, inspirada em Python. Boas idéias têm mesmo é que ser aproveitadas. Segundo, das modificações feitas na linguagem, a maioria eu gostei. Tipagem estática sem perder a possibilidade de duck typing (dinâmica) também. Macros! Dizem que quem programa em Lisp fica viciado nisso. Se em C e C++ eu já gosto de usar macros (menos poderosas que as do Lisp) pra evitar Ctrl+C, Ctrl+V, é bom ver aumentar o número de linguagems com esse recurso. Cada uma com macros ao seu jeito, mas OK. Boo tem também funções anônimas, especificadores public/private/etc., uso mais fácil de “super” do que em Python (esses 2 últimos itens devem facilitar bastante a orientação a objetos em Python, que era boa mas tinhas essas peculiaridades que incomodavam e se espalhavam pelo código) e outras coisas. Perdeu parâmetros nomeados que eu gosto, mas no meio de outras melhorias nem é tanto.

A impressão geral que dá é: “Finalmente uma linguagem pensada nos problemas enfrentados na prática pelos programadores”. Aliás, todas as linguagens que eu gosto têm em maior ou menor grau essa característica: recursos bem pensados, bem fundamentados, mas também objetivando usos práticos que ocorrem no dia-a-dia. Nisso eu incluo C++, D, Python, Lua e agora Boo. Não incluo C, mas o C eu desculpo por causa da idade da linguagem. Notáveis linguagens com filosofia oposta são: Java e Pascal/Delphi. Essas linguagens (isto, é tanto os criadores e quanto a comunidade) têm o costume de dizer: “Pra que você precisaria desse recurso? Ele é desnecessário”. Ainda bem que a concorrência (por exemplo, C# e Java) faz as linguagens evoluírem…

E com base nessa lógica furada, Java [não tinha* | não tem**] sobrecarga de operadores**; enums*; for-each*; switch em strings**; facilidades léxicas pra incluir strings grandes** no código; nenhum tipo de duck typing** (até C++ tem um isso com templates); ponteiros pra função**; geradores de getters e setters**; passagem de parâmetros por referência** e por aí vai. Pelo menos eu gerava os meus getters e setters em C++ com macros. Já o Pascal tem vários dialetos, mas de uma maneira geral os problemas que mais me incomodavam eram: precedência visivelmente errada de “and” e “or”; ponto-e-vírgula proibido antes do else (a dança dos ponto-e-vírgulas); impossibilidade de declarar variáveis perto do uso (provavelmente sob alegação de deixar o código mais “organizado”) e impossibilidade de inicializar variáveis na declaração; poucas ou nenhuma estrutura que crescesse dinamicamente; extensões incoerentes feitas na linguagem (muita coisa pra explicar aqui); ausência de literais de array (mas presença de literais de sets ¬¬’) e várias outras coisas…

Estou me perdendo nos assuntos, já acabei indo parar em Java e Pascal. É que essa tirania de certas linguagens me incomoda mesmo, hehehe, por ex.: “Você não precisa desse recurso, ele incentiva maus hábitos de programação!”; “Quanto mais verbosa a linguagem, mais clara ela é” ¬¬’

Falando nisso, encontrei isto no manifesto do Boo:
“””The guys who came up with “public static void main” were probably kidding, the problem is that most people didn’t get it was a joke.”””

Bah, muito boa frase! Expressou o que eu sempre pensei de um jeito muito engraçado! :-)

O que falta dizer, pra concluir o texto, é que Boo é uma linguagem que eu consideraria fortemente usar no futuro, é uma pena que ela esteja ligada a esses ambientes gerenciados (.NET e Java VM – o lado bom é a quantidade de bibliotecas). Mas se eu for usar um ambiente desses, Boo parece ser uma opção muito boa.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s