altamente consistente • Incrível oferta de bibliotecas robustas para todo tipo de aplicação – exceto mobile :-( • Suporte a abstrações úteis – funções e classes de 1a classe, closures, namespaces, geradores, comprensões, decoradores, sobrecarga de operadores, descritores de atributos...
intencionalmente limitada para reduzir surpresas e excessos de abstração – Sem herança • Interfaces dinâmicas checadas pelo compilador • Implementa o modelo de concorrência CSP (Communicating Sequential Processes – Hoare) – Comunicação entre go-rotinas através de canais (channels) que são objetos de 1a classe • Gera binários executáveis
• Implementa STM (Software Transactional Memory) • Modelo de concorrência baseado em agentes • Incorporou CSP assim que começou o hype sobre Go • Macros sintáticas: novas “formas especiais” • Server-side (JVM) e client-side (ClojureScript)
BEAM • Linguagem funcional • Modelo de concorrência baseado em processos leves trocando mensagens • Aproveita todo o eco-sistema de Erlang, incluindo o framework OTP para sistemas distribuídos de alta confiabilidade • Sintaxe inspirada principalmente por Ruby e Erlang • Macros sintáticas!
porque: – Sou fluente nela ;-) – Ultra versátil: largamente utilizada em muitos campos (CGI, DevOps, comp. científica...) – Ainda estou no começo de explorá-la em um vasto campo extremamente promissor: análise e visualização de dados (analytics)
para loop de eventos de I/O – async/await: nova sintaxe para co-rotinas – uvloop: loop de eventos baseado em libuv • a biblioteca central do Node.js, escrita em C
a plataforma Erlang (BEAM+OTP) • Go: uma linguagem de baixo nível moderna implementando CSP • Clojure: um LISP moderno sobre a plataforma Java (com suporte a JS também)