Como é a ‘cara’ de uma nova linguagem de programação?

Fonte: https://www.flickr.com/photos/jesper/252307864

Fonte: https://www.flickr.com/photos/jesper/252307864

É comum uma linguagem de programação evoluir e apresentar diversas mudanças significativas. Também não é raro encontrar novas linguagens de programação que desafiam as pessoas a aprenderem coisas novas. Neste post vou discutir um pouco sobre este processo de aprendizado de uma nova linguagem de programação.

Quem trabalha na área de programação deve estar acostumado a aprender novos conceitos, sintaxes, elementos e, em termos gerais, novas maneiras de resolver problemas com as linguagens de programação. Talvez isso não seja verdade para todos, pois sempre vamos ter o aquele tradicional cenário padrão COBOL onde as coisas não evoluem muito ou quando evoluem o fazem de maneira muito lenta.

Figura2_Cobol

Recentemente fiquei pensando um pouco sobre este processo de aprender algo novo em relação a uma linguagem de programação, especialmente no que diz respeito à sintaxe. O que me motivou para pensar sobre isso foi a atualização que muitos desenvolvedores vem enfrentando para gradualmente migrar do Objective-C para o Swift e também o estudo que fiz para criar a nova caneca com sintaxe para datas do DatabaseCast . Contudo, pelo que descobri este tipo de atualização é relativamente frequente em diversos cenários. Quer dizer, olha só o novo tipo de sugestão de estilo de programação desenvolvimento com o Java 8! Praticamente não se recomenda mais utilizar loops ou variáveis e sim depender muito de técnicas como métodos anônimos, lambdas e outros.

Figura3_why-lambda2-730x320

Quais são os recursos, técnicas ou recomendações para este tipo de atualização profissional?  Pensando em um contexto mais geral, qual é o tipo de ajuda fornecer para quem está aprendendo uma nova linguagem de programação? Sei que existem muitos recursos técnicos tradicionais como livros, cursos e outros para quem quer aprender algo do zero e se atualizar, mas será que não existem novas abordagens específicas para este tipo de atualização?

Por exemplo, uma forma muito comum de descrever a sintaxe de elementos de uma linguagem é através de diagramas de sintaxe também chamados de “diagramas de ferrovia” (RailRoad diagramas). As figuras abaixo mostram exemplos deste tipo de diagrama para a sintaxe de um comando condicional tipo IF e também um  diagrama para a sintaxe de um comando CREATE da linguagem PL/SQL.

Figura4_ebnfFigura5_FiagramaCREATEEste tipo de representação visual é interessante para quem desenvolve compiladores, parses e analisadores de linguagem. Contudo, muitos desenvolvedores preferem uma notação mais textual quando procuram a documentação como, por exemplo, a definição de uma gramática na notação BNF (Backus–Naur Form)

Figura6_FormaBNFDe qualquer maneira, estes recursos para apresentação de sintaxe são pouco amigáveis para quem quer identificar mudanças e novos elementos. Seria interessante se eles tivessem recursos como animações, cores diferentes e destaques que facilitassem a visualização do que efetivamente mudou, foi inserido ou é novo. Desta forma fica mais simples, rápido e fácil descobrir a nova ‘cara’ da linguagem ou o seu ‘jeitão’.

Outra abordagem interessante é a utilização de técnicas de visualização de dados para evidenciar mudanças. Por exemplo, que tal usar um TreeMap ou as famosas nuvem de palavras (tag cloud) para ver os elementos mais comuns em um código Object-C e Swift? A imagem abaixo mostra um exemplo disso. Figura7_TagCloud

Existem muitas outras formas que podem ser exploradas para facilitar a atualização de um profissional que deseja aprender o que foi modificado em uma linguagem ou se atualizar rapidamente. Mesmo sem um esforço adicional de quem fornece a linguagem de programação, acredito que investir neste tipo de recursos pode facilitar novos desenvolvedores a utilizar o que é novo e também incentivar a adoção que propostas diferentes para resolver problemas antigos ou novos. Isso vale tanto para sintaxe, novas linguagens e paradigmas (estou me referindo a você programação funcional!), versões de API e até recursos adicionais que envolvam novos conceitos fundamentais.



Esta entrada foi publicada em Programação, SQL e marcada com a tag , , , , , , , , , , , , . Adicione o link permanente aos seus favoritos.

2 respostas a Como é a ‘cara’ de uma nova linguagem de programação?

  1. Nunca enfrentei uma migração de linguagem como o caso do Objetive-C para Swift, porém já aprendi uma nova linguagem quando estava acostumado com outra. O principal problema que tive não em relação a sintaxe em si que posso olhar uma anotação para saber como definir uma função, por exemplo. Foi na forma de utilização da linguagem, que não posso olhar a anotação para saber como a organização do código seria feita de forma mais purista, sem tentar simular o que fazia na outra linguagem.

    Outro ponto que dificulta também é o que está em volta da linguagem, como gerenciadores de bibliotecas, utilitários para validação de código, quanto mais recursos mais tempo é necessário para conhecê-los e explorar melhor essas funções que são oferecidas. Esse é o principal ponto para não ter aprendido Ruby ainda.

    Gostei do texto para pensar tudo que eu teria que aprender ou acostumar se fosse fazer a troca da linguagem que utilizo hoje.

  2. Gostei do texto, não sabia que o Java 8 irá suportar lambdas. Esse recurso existe em Python e JavaScript (funções anônimas) e é comum programadores de Code Golf usar lambdas que geram lambdas para reduzir bytes em código.

    Embora seja um recurso valioso, pode deixar o código ilegível quando mal usado.

    Abraço

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *