Back-End

17 jan, 2017

Nova linguagem funcional para JVM é baseada em Haskell, Clojure e ML

Publicidade

Lux, uma nova linguagem funcional do tipo Lisp que roda em Java Virtual Machine, teve sua versão 0.5 beta lançada recentemente. A nova linguagem implementa recursos comuns ao Lisp, como macros, mas acredita que eles são mais flexíveis e poderosos em Lux.

Os criadores do Lux desenharam a linguagem a partir de três fontes principais – Haskell, Clojure e ML -, mas o Lux também difere de cada um deles.

Clojure, a outra grande linguagem do tipo Lisp para JVM, foi uma importante fonte de inspiração. Mas, enquanto o Clojure é dinamicamente tipado, como muitas das linguagens do tipo Lisp, o Lux é estaticamente tipado para reduzir bugs e melhorar o desempenho.

O Lux também permite que os programadores criem novos tipos de programação, o que fornece parte da flexibilidade encontrada em linguagens tipadas dinamicamente. A linguagem funcional Haskell tem o tipo classes, mas o Lux pretende ser menos restritivo.

[awprm urls=https://imasters.com.br/noticia/github-lista-as-9-linguagens-de-programacao-mais-populares/,https://imasters.com.br/linguagens/linguagens-funcionais-vieram-para-ficar/]

As linguagens baseadas em Lisp tornam possível para o desenvolvedor fazer “metaprogramming” (metaprogramação, em tradução livre) para alterar o comportamento da própria linguagem ou escrever código que escreve outro código. O Lux faz isso através de macros do tipo Lisp, mas também expõe seu compilador como um objeto dentro da linguagem. Dessa forma, o Lux pode oferecer, por exemplo, sistemas de correspondência de padrões personalizados que podem ser substituídos ou reescritos pelo usuário.

No entanto, o Lux não se limita a tirar recursos do mundo Lisp. As linguagens modernas como Go e JavaScript (e agora Python) têm primitives para lidar com a concorrência. O Lux também tem isso na forma de promises e futures, como visto em JavaScript, mas também software transactional memory (STM), que permite que vários processos acessem a memória de uma forma semelhante às bases de dados que controlam o acesso aos seus dados. Recursos como STM vão apelar para desenvolvedores que gravitam em direção a linguagens funcionais, mas, segundo o site InfoWorld, não está claro qual tipo de desempenho que o STM impõe aos aplicativos Lux.

Como o Clojure, o Lux tem vários benefícios por rodar na JVM. Como a JVM é tão amplamente utilizada, a linguagem é executada automaticamente em qualquer lugar onde uma JVM pode ser encontrada. Além disso, qualquer código que roda na JVM, incluindo tudo escrito no próprio Java, pode ser acessado pelo Lux através de suas funções de interoperação JVM.

Embora o Lux esteja em seus estágios iniciais, seus criadores já forneceram um tour pela linguagem, com muitos exemplos de como usar recursos específicos. A versão mais recente inclui, entre outros itens, suporte experimental para Android e adiciona muitos recursos à biblioteca padrão, incluindo suporte para JSON e expressões regulares, que tornam a linguagem mais útil para o desenvolvimento de software do mundo real.