As grandes linguagens de programação são populares por um motivo:
oferecem uma enorme base de códigos abertos, bibliotecas e frameworks
que tornam o trabalho mais fácil. Esses princípios básicos fazem com que
sejam escolhidas e utilizadas em diversos projetos que ajudam a
solidificá-las no mercado.
Às vezes, os vastos recursos das ferramentas tradicionais e populares
não são suficientes para resolver algum problema específico. Outras
vezes, é preciso olhar para além do óbvio para encontrar a linguagem
correta, onde a estrutura certa faz toda a diferença e mais, oferecendo
recursos extras para ajudar o seu código a rodar mais rapidamente, sem a
necessidade de ajustes interminável e otimização.
O mundo é repleto com milhares de linguagens espertas que vão além do
C#, Java ou JavaScript. Algumas delas são apreciadas por poucos, mas
outras tantas têm comunidades ativas que compartilham certo amor comum
para a aplicação de recursos específicos para resolução de certos
problemas.
E o grande ponto é: às vezes vale a pena aprender a fazer coisas
diferentes utilizando ferramentas não usuais, mesmo que isso se
classifique como um experimento. Essas apostas, por que não, podem
render dividendos significativos em projetos futuros.
As nove linguagens listadas a seguir deveriam aparecer radar de todo
programador. Podem não ser “a melhor” para todo tipo de trabalho –
afinal, muitas são destinadas a tarefas especializadas. Mas todas elas
oferecem upsides que valem a pena investigar e investir. E mais, talvez
chegue um dia que essas ferramentas sejam o recurso que falte em um
projeto.
Erlang (programação funcional para sistemas em tempo real)
Essa ferramenta começou nas profundezas assustadoras de centrais telefônicas da Ericsson. Quando os programadores da telco sueca começaram a se vangloriar de seu desempenho de “nove 9s”, através da apresentação de 99,9999999% dos dados com Erlang, programadores externos passaram a observar a linguagem com mais atenção. O segredo de Erlang é um paradigma funcional. A maioria do código é forçado a operar em seu próprio pequeno mundo onde não pode corromper o resto do sistema através de efeitos colaterais. As funções fazem todo trabalho internamente, correndo em pequenos "processos" que atuam como caixas de areia (sandboxes) que se comunicam entre si digitalmente. O modelo como atua também torna acelera a execução das tarefas, determinando o que pode ser executado simultaneamente, o que reduz sobrecarga. Caso tenha de construir um sistema para aplicação em tempo real, considere o Erlang.
Essa ferramenta começou nas profundezas assustadoras de centrais telefônicas da Ericsson. Quando os programadores da telco sueca começaram a se vangloriar de seu desempenho de “nove 9s”, através da apresentação de 99,9999999% dos dados com Erlang, programadores externos passaram a observar a linguagem com mais atenção. O segredo de Erlang é um paradigma funcional. A maioria do código é forçado a operar em seu próprio pequeno mundo onde não pode corromper o resto do sistema através de efeitos colaterais. As funções fazem todo trabalho internamente, correndo em pequenos "processos" que atuam como caixas de areia (sandboxes) que se comunicam entre si digitalmente. O modelo como atua também torna acelera a execução das tarefas, determinando o que pode ser executado simultaneamente, o que reduz sobrecarga. Caso tenha de construir um sistema para aplicação em tempo real, considere o Erlang.
Go (simples e dinâmico)
O Google não foi a primeira organização a pesquisar uma coleção de linguagens apenas para encontrar a mais confusa, complexa e lenta. Em 2009, a empresa lançou uma solução parecida com C que incluía um background de inteligência que, no final do dia, salva programadores de ter que fazer especificações e malabarismos. O Go permite aos desenvolvedores a concisão e estrutura de compilação do C, juntamente com a facilidade de uso de uma linguagem script dinâmica. Enquanto Apple e Sun seguiram caminho semelhante na criação do Swift e Java, o Google optou por traçar rumos significativamente diferentes com o Go, perseguindo uma ferramenta “simples o suficiente para grudar na cabeça do programador”. A linguagem é bem estabelecida dentro do vasto império do Google e está ganhando aceitação em outros lugares. Caso você atue em um startup tentando chamar a atenção da gigante de buscas e tem necessidade de construir alguma lógica de negócio do lado do servidor, Go é um ótimo lugar para começar.
O Google não foi a primeira organização a pesquisar uma coleção de linguagens apenas para encontrar a mais confusa, complexa e lenta. Em 2009, a empresa lançou uma solução parecida com C que incluía um background de inteligência que, no final do dia, salva programadores de ter que fazer especificações e malabarismos. O Go permite aos desenvolvedores a concisão e estrutura de compilação do C, juntamente com a facilidade de uso de uma linguagem script dinâmica. Enquanto Apple e Sun seguiram caminho semelhante na criação do Swift e Java, o Google optou por traçar rumos significativamente diferentes com o Go, perseguindo uma ferramenta “simples o suficiente para grudar na cabeça do programador”. A linguagem é bem estabelecida dentro do vasto império do Google e está ganhando aceitação em outros lugares. Caso você atue em um startup tentando chamar a atenção da gigante de buscas e tem necessidade de construir alguma lógica de negócio do lado do servidor, Go é um ótimo lugar para começar.
Groovy (linguagem bondosa de extensão para Java)
O mundo Java é surpreendentemente flexível. Diga o que quiser sobre a sua abordagem “cintos e suspensórios”, como especificar tipos para cada variável, terminando cada linha com um ponto e vírgula, escrever métodos de acesso para as classes que simplesmente retornam o valor. Mas, a se olhar com atenção verá as dinâmicas da linguagem ganharem força O Groovy oferece aos programadores a capacidade de deixar de lado as convenções monótonas e permite escrever programas simples que podem aproveitar todo o código Java existente. Tudo roda na JVM. Não só isso, tudo se conecta firmemente em Java JARs para que você possa desfrutar o código existente. O código Groovy funciona como uma linguagem de script de tipagem dinâmica com pleno acesso aos dados em objetos Java de tipagem estática. Programadores acreditam ter o melhor dos dois mundos. Há todo o imenso poder da base de código Java com toda a diversão e simplicidade de usar o ponto de interrogação para indicar um “check” de ponteiros nulos. É muito mais simples do que escrever uma outra declaração if-then para testar nulidade. Naturalmente, toda essa flexibilidade tende a criar o máximo de lógica com uma pequena fração das teclas.
O mundo Java é surpreendentemente flexível. Diga o que quiser sobre a sua abordagem “cintos e suspensórios”, como especificar tipos para cada variável, terminando cada linha com um ponto e vírgula, escrever métodos de acesso para as classes que simplesmente retornam o valor. Mas, a se olhar com atenção verá as dinâmicas da linguagem ganharem força O Groovy oferece aos programadores a capacidade de deixar de lado as convenções monótonas e permite escrever programas simples que podem aproveitar todo o código Java existente. Tudo roda na JVM. Não só isso, tudo se conecta firmemente em Java JARs para que você possa desfrutar o código existente. O código Groovy funciona como uma linguagem de script de tipagem dinâmica com pleno acesso aos dados em objetos Java de tipagem estática. Programadores acreditam ter o melhor dos dois mundos. Há todo o imenso poder da base de código Java com toda a diversão e simplicidade de usar o ponto de interrogação para indicar um “check” de ponteiros nulos. É muito mais simples do que escrever uma outra declaração if-then para testar nulidade. Naturalmente, toda essa flexibilidade tende a criar o máximo de lógica com uma pequena fração das teclas.
Para finalizar, todos os programadores Java que invejavam a
simplicidade de linguagens dinâmicas podem participar da festa sem sair
do reino do Java.
OCaml (malabarista da hierarquia de dados complexos)
Alguns programadores não querem especificar os tipos de suas variáveis, e para eles que construíram as linguagens dinâmicas. Outros preferem desfrutar a certeza de especificar se uma variável contém um “integer”, “string” ou talvez um “object”. Para esses, muitas das linguagens compiladas oferecem o apoio desejado. Além deles, há aqueles que sonham com hierarquias elaboradas que até mesmo falam na criação de uma “álgebra” de tipos. Eles imaginam listas e tabelas de tipos heterogêneos que são reunidas para expressar complexidades e extravagâncias de dados em múltiplos níveis. Falam, também, de polimorfismo, correspondência de padrão e encapsulamento de dados. Enfim, este é apenas o começo do complexo e altamente estruturado mundo de tipos, metatipos e metametatipos que desejam. Eis que para esses existe o OCaml, um esforço sério da comunidade de programadores que se concentra em popularizar muitas das ideias citadas no parágrafo anterior. Há suporte de objeto, gerenciamento automático de memória e portabilidade dispositivo. Embora existam alguns aplicativos desenvolvidos na linguagem disponíveis na App Store, um projeto ideal para OCaml é a construção simbólica de um site de matemática para ensinar álgebra.
Alguns programadores não querem especificar os tipos de suas variáveis, e para eles que construíram as linguagens dinâmicas. Outros preferem desfrutar a certeza de especificar se uma variável contém um “integer”, “string” ou talvez um “object”. Para esses, muitas das linguagens compiladas oferecem o apoio desejado. Além deles, há aqueles que sonham com hierarquias elaboradas que até mesmo falam na criação de uma “álgebra” de tipos. Eles imaginam listas e tabelas de tipos heterogêneos que são reunidas para expressar complexidades e extravagâncias de dados em múltiplos níveis. Falam, também, de polimorfismo, correspondência de padrão e encapsulamento de dados. Enfim, este é apenas o começo do complexo e altamente estruturado mundo de tipos, metatipos e metametatipos que desejam. Eis que para esses existe o OCaml, um esforço sério da comunidade de programadores que se concentra em popularizar muitas das ideias citadas no parágrafo anterior. Há suporte de objeto, gerenciamento automático de memória e portabilidade dispositivo. Embora existam alguns aplicativos desenvolvidos na linguagem disponíveis na App Store, um projeto ideal para OCaml é a construção simbólica de um site de matemática para ensinar álgebra.
CoffeeScript (JavaScript limpo e simples)
Tecnicamente, CoffeeScript não é uma linguagem de programação de fato. Trata-se, no caso, de um pré-processador que converte o que você escreve em JavaScript. A ferramenta nasceu quando inimigos do ponto e vírgula foram obrigados a programar em JavaScript, porque isso era o que os navegadores falavam que era necessário fazer – e, mudar toda lógica da web teria sido uma tarefa intransponível. Resolveram, então, criar o próprio pré-processador. O resultado? Os programadores podem escrever códigos mais limpo e deixar que CoffeeScript ajuste-os na volta para o JavaScript. Ponto e vírgula em falta são apenas o começo. Com CoffeeScript , você pode criar uma variável sem digitar “var”. Pode definir uma função sem digitar “function” ou envolvê-lo em chaves. De fato, entre chaves são praticamente inexistentes em CoffeeScript. O código é mais conciso – um edifício modernista frente a uma catedral gótica. É por isso que muitos dos mais novos frameworks JavaScript são muitas vezes escritos em CoffeeScript e compilados.
Tecnicamente, CoffeeScript não é uma linguagem de programação de fato. Trata-se, no caso, de um pré-processador que converte o que você escreve em JavaScript. A ferramenta nasceu quando inimigos do ponto e vírgula foram obrigados a programar em JavaScript, porque isso era o que os navegadores falavam que era necessário fazer – e, mudar toda lógica da web teria sido uma tarefa intransponível. Resolveram, então, criar o próprio pré-processador. O resultado? Os programadores podem escrever códigos mais limpo e deixar que CoffeeScript ajuste-os na volta para o JavaScript. Ponto e vírgula em falta são apenas o começo. Com CoffeeScript , você pode criar uma variável sem digitar “var”. Pode definir uma função sem digitar “function” ou envolvê-lo em chaves. De fato, entre chaves são praticamente inexistentes em CoffeeScript. O código é mais conciso – um edifício modernista frente a uma catedral gótica. É por isso que muitos dos mais novos frameworks JavaScript são muitas vezes escritos em CoffeeScript e compilados.
Scala (programação funcional em JVM)
Se você precisa de simplicidade de código em hierarquias orientadas a objetos para o seu projeto, mas ama o paradigma funcional, tem várias opções na manga. Agora, se Java é sua praia, o Scala é a melhor escolha. A ferramenta roda no JVM, trazendo design limpo da programação funcional para o mundo Java, fornecendo o código que se encaixa com as especificações da classe Java e conectando com outros arquivos JAR. Se esses outros arquivos JAR tem efeitos colaterais e outras dores de cabeça horríveis imperativas, que assim seja. Seu código será limpo.
Se você precisa de simplicidade de código em hierarquias orientadas a objetos para o seu projeto, mas ama o paradigma funcional, tem várias opções na manga. Agora, se Java é sua praia, o Scala é a melhor escolha. A ferramenta roda no JVM, trazendo design limpo da programação funcional para o mundo Java, fornecendo o código que se encaixa com as especificações da classe Java e conectando com outros arquivos JAR. Se esses outros arquivos JAR tem efeitos colaterais e outras dores de cabeça horríveis imperativas, que assim seja. Seu código será limpo.
Dart (JavaScript sem o JavaScript)
Ser popular não é tudo. O JavaScript pode ser mais usado do que nunca, mas a familiaridade leva ao desprezo – e o desprezo leva as pessoas à procura de substitutos. Dart é uma nova linguagem de programação para navegadores da web do Google. A ferramenta funciona em segundo plano para animar DIVs e formar objetos. Os designers simplesmente queriam limpar as partes mais irritantes do JavaScript enquanto o tornavam mais simples. Não podiam, contudo, se afastar muito da arquitetura subjacente porque queriam compilar o Dart até o JavaScript a fim de ajudar a acelerar a adoção.Se você está construindo um aplicativo da web dinâmico e está cansado de JavaScript, Dart oferece uma sintaxe limpa.
Ser popular não é tudo. O JavaScript pode ser mais usado do que nunca, mas a familiaridade leva ao desprezo – e o desprezo leva as pessoas à procura de substitutos. Dart é uma nova linguagem de programação para navegadores da web do Google. A ferramenta funciona em segundo plano para animar DIVs e formar objetos. Os designers simplesmente queriam limpar as partes mais irritantes do JavaScript enquanto o tornavam mais simples. Não podiam, contudo, se afastar muito da arquitetura subjacente porque queriam compilar o Dart até o JavaScript a fim de ajudar a acelerar a adoção.Se você está construindo um aplicativo da web dinâmico e está cansado de JavaScript, Dart oferece uma sintaxe limpa.
Haskell (programação funcional, pura e simples)
Por mais de 20 anos, os acadêmicos que trabalham com programação funcional foram desenvolvendo ativamente o Haskell, uma linguagem projetada para encapsular ideias sobre os males de efeitos colaterais. É uma das expressões mais puras da programação funcional ideal, com um mecanismo para a manipulação cuidadosa de canais de I/O. O resto do código, no entanto, deve ser perfeitamente funcional. A comunidade é muito ativa, com mais de uma dezena de variantes de Haskell esperando por você. Alguns são autônomos, enquanto outros são integrados com ferramentas mais tradicionais como Java (Jaskell) ou Python (Scotch). A maioria dos nomes parecem ser referências à Escócia. Se você acredita que suas estruturas de dados serão complexas e cheias de tipos, o Haskell irá ajudá-lo a mantê-los em linha reta.
Por mais de 20 anos, os acadêmicos que trabalham com programação funcional foram desenvolvendo ativamente o Haskell, uma linguagem projetada para encapsular ideias sobre os males de efeitos colaterais. É uma das expressões mais puras da programação funcional ideal, com um mecanismo para a manipulação cuidadosa de canais de I/O. O resto do código, no entanto, deve ser perfeitamente funcional. A comunidade é muito ativa, com mais de uma dezena de variantes de Haskell esperando por você. Alguns são autônomos, enquanto outros são integrados com ferramentas mais tradicionais como Java (Jaskell) ou Python (Scotch). A maioria dos nomes parecem ser referências à Escócia. Se você acredita que suas estruturas de dados serão complexas e cheias de tipos, o Haskell irá ajudá-lo a mantê-los em linha reta.
Julia (trazendo velocidade a terra de Python)
O mundo da programação científica está cheia de amantes Python que apreciam a sintaxe simples e liberdade para evitar o pensamento de detalhes retorcidos como ponteiros e bytes. Para todas as suas forças, no entanto, Python é muitas vezes lento, o que pode ser um problema se você está mastigando grandes conjuntos de dados (como é comum no mundo da computação científica). Para acelerar as coisas, muitos cientistas se voltam para escrever as rotinas mais importantes no núcleo em C (mais rápido). Mas unir partes escritas em duas linguagens pode adicionar complexidade em revisão, correção e amplificação de sistemas. Julia é uma solução para essa questão. Seus criadores levaram a sintaxe limpa adorada por programadores de Python e permitiram que o código possa ser compilado em segundo plano. Dessa forma, você pode configurar um notebook ou uma sessão interativa como com Python, mas qualquer código que você criar serão compilados imediatamente. A melhor notícia, no entanto, versa sobre altas velocidades. Muitas referências básicas rodam 30 vezes mais rápido do que Python e, em alguns casos, mais velozes que C. Se você tiver muitos dados e quiser aproveitar a sintaxe do Python, Julia é o próximo idioma a aprender.
O mundo da programação científica está cheia de amantes Python que apreciam a sintaxe simples e liberdade para evitar o pensamento de detalhes retorcidos como ponteiros e bytes. Para todas as suas forças, no entanto, Python é muitas vezes lento, o que pode ser um problema se você está mastigando grandes conjuntos de dados (como é comum no mundo da computação científica). Para acelerar as coisas, muitos cientistas se voltam para escrever as rotinas mais importantes no núcleo em C (mais rápido). Mas unir partes escritas em duas linguagens pode adicionar complexidade em revisão, correção e amplificação de sistemas. Julia é uma solução para essa questão. Seus criadores levaram a sintaxe limpa adorada por programadores de Python e permitiram que o código possa ser compilado em segundo plano. Dessa forma, você pode configurar um notebook ou uma sessão interativa como com Python, mas qualquer código que você criar serão compilados imediatamente. A melhor notícia, no entanto, versa sobre altas velocidades. Muitas referências básicas rodam 30 vezes mais rápido do que Python e, em alguns casos, mais velozes que C. Se você tiver muitos dados e quiser aproveitar a sintaxe do Python, Julia é o próximo idioma a aprender.
Fonte: ComputerWorld