Hirafuji

Elmtusiasta

O que é Elm?

Elm é uma linguagem funcional, com tipagem estática que compila para JavaScript. Foi lançada em meados de 2012 como resultado da tese de mestrado do seu criador, Evan Czaplicki.

Alguns dizem que está revolucionando a forma como programamos no front-end, influenciando e sendo influenciado pelas melhores práticas do mercado e deixando o pessoal do back-end com inveja. Já existem jogos (simulador de iatismo, Asteroids, Tetris, etc…) e projetos comerciais feitos em Elm.

O que Elm oferece?

É possível ter quase todas as vantagens do Elm em JavaScript nativo, porém são necessárias várias bibliotecas e muito estudo/disciplina para utilizá-las corretamente. Já existe até uma tese de mestrado a respeito de todas as bibliotecas necessárias para conseguir-se as funcionalidades do Elm em JavaScript:

Fonte: Move fast and don’t break things. Running a startup on Elm

Algumas vantagens não são possíveis de se obter, como a obrigação de versionamento semântico do repósitorio de pacotes do Elm (atualização de pacotes sem correr o risco de quebrar alguma API!) e o prazer de se programar em Elm :)

Compilador

Uma das metas do Elm é mudar nosso relacionamento com compiladores. Compiladores devem ser assistentes, não adversários. Um compilador não deve apenas detectar bugs, deve também ajudar a entender o porquê de existir um bug. [..] Ultimamente, um compilador deve fazer o ato de programar mais rápido e divertido!
— Evan Czaplicki em Compilers as Assistants

E é exatamente o que o compilador do Elm oferece. John Carmack concorda:

Screenshot de tweet de John Carmack
That should be an inspiration for every error message
Screenshot de tweet sobre o compilador do Elm
Thanks @elmlang for the most useful error message I've ever seen

Desempenho

Com todas essas vantagens, você pode se perguntar qual o impacto na performance que terá que pagar para usar Elm. Absolutamente nada. Elm é rápido e de fácil otimização.

Gráfico de benchmarking
Benchmarking

Pontos fracos

Por ser uma linguagem relativamente nova, a comunidade ainda é pequena e a quantidade de pacotes disponíveis são poucos se você está acostumado com o npm. O legal é que temos mais oportunidades de colaborar com o crescimento da linguagem.

Outro ponto fraco é que o Elm atualmente está na versão 0.17.1, podendo sofrer grandes mudanças na API em lançamentos futuros.