Author: H3RALD
10 linguagens de programação que merecem ser avaliadas
Uma comparação rápida de 10 linguagens de programação não-convencionais
Se você programa para diversão ou lucro, é provável que você conheça C, C ++, Java, PHP, Perl, Python ou Ruby. Essas linguas de programação são amplamente conhecidas e, em um grau diferente, usadas em aplicações comerciais. Pelo menos alguns deles podem ser considerados com segurança convencional, mesmo que essa palavra tenha se tornado tão usada e abusada que quase perdeu seu significado original, se alguma vez tivesse uma.
Se você está ganhando a vida através da codificação, muitas vezes é uma dessas línguas que paga as contas. No entanto, os hackers verdadeiros freqüentemente serpenteiam em outras direções, explorando e descobrindo diferentes paradigmas e metodologias, às vezes até o máximo esotérico extremos.
"As características de personalidade comum mais óbvias dos hackers são inteligência elevada, consumo de curiosidade e facilidade com abstrações intelectuais. Além disso, a maioria dos hackers são "neófilos", estimulados e apreciativos pela novidade (especialmente a novidade intelectual). A maioria também é relativamente individualista e anti-conformista.”
– Eric S. Raymond, O Arquivo de Jargão
Mesmo que você seja particularmente dedicado a uma das línguas mencionadas acima, é normal ter curiosidade sobre o que mais existe. À medida que o final do ano se aproxima, eu acho que estou pensando em aprender - ou pelo menos se familiarizar - algumas linguagens de programação menos conhecidas e mais experimentais.
Inicialmente, estava planejando aprender outra linguagem de programação como uma Resolução de Ano Novo, que é bastante comum entre os programadores. A tarefa mais difícil acabou por ser escolhido um idioma particular: há tantos lá fora, o que dificulta a decisão.
Este artigo aborda dez candidatos possíveis e está longe de ser uma lista exaustiva. As linguas de programação descritas a seguir são muito diferentes umas das outras, mas todas elas têm uma coisa em comum: todos estimulam minha curiosidade em suas próprias maneiras, muito diferentes.
Haskell
Tentei aprender Haskell no passado. Silenciosamente, comecei a mergulhar na multidão de artigos, tutoriais, visões gerais e até livros sobre essa fascinante linguagem acadêmica que afirma obter pureza funcional, embora seja extremamente útil, prática e eficiente. Infelizmente, ainda não consigo compreender completamente alguns dos seus conceitos mais cruciais, como mônadas, mas isso ainda não me afasta desejando aprender a língua.
Se você nunca contou Haskell antes, acho A evolução de um programador Haskell Uma leitura divertida e informativa. Embora visando ser humorístico de certa forma, ele serve um propósito didascalico muito importante: é uma das coleções mais completas dos diferentes paradigmas e abordagens de programação que Haskell permite.
Além da sua sintaxe muito elegante, pragmática e quase mágica, o que realmente me intriga sobre esta linguagem é o que ela oferece, em termos de características:
- 9 diferentes implementações (vários compiladores e intérpretes)
- Inúmeros bibliotecas padrão pacotes que pode ser usado para resolver qualquer desafio de programação
- Abundante material de aprendizagem
- Rapidez Que rivaliza com C e C++
- Compatibilidade multiplataforma muito madura
A pegada? É provável que seja muito diferente de qualquer outro idioma que você tenha encontrado antes, e essa é provavelmente a razão pela qual algumas pessoas acham difícil aprender e dominar. Dito isto, se você estiver procurando por uma resolução de ano novo desafiadora (mas muito gratificante, eu acredito), você definitivamente deveria ir para isso.
Para você começar ...
- Official Haskell Wiki
- Haskell Wikibook
- Mundo Real Haskell
- 37 razões para amar Haskell
- Haskell para o Ruby Guy
- A-Z de Idiomas de Programação: Haskell
- Aprenda-lhe um Haskell para um ótimo be!
- Haskell Hacking
Erlang
Erlang e uma linguagem de programação simultânea originalmente desenvolvida pela Ericsson para suas aplicações em tempo real. É evidente que com essas premissas, Erlang parece ser a resposta mais natural para todos os problemas de concorrência que você pode encontrar em sua vida como programador.
Desenvolver com a concorrência em mente se sente natural e fácil em Erlang, e o desempenho dos sistemas alimentados com Erlang pode ser incomparável.
Foram desenvolvidas algumas aplicações interessantes neste idioma, tais como:
- CouchDB, um popular banco de dados distribuído e documentado
- Yaws, um servidor web de alto desempenho
- até Chat no Facebook
O preço que os adeptos de Erlang tem que pagar, como Damien Katz (criador de CouchDB e entusiasta de Erlang) salienta, isso:
- Sintaxe incômoda, inspirada no Prolog
- Estranho se expressões
- Operações de cordas difíceis
- Nenhuma classe ou namespaces
... esta lista poderia continuar. O artigo de Damien é uma leitura interessante, suficiente para que alguém aprenda o idioma se leu superficialmente. Por outro lado, fornece um recurso inestimável para os recém-chegados que desejam estar preparados antes de enfrentar o desafio de aprender o Erlang para construir seu próximo aplicativo escalável, concorrente e à prova de indústria.
Para você começar ...
- Site oficial do Erlang
- Introdução a Erlang
- Concorrência de Estilo Erlang
- PlanetErlang
- Projetos de Erlang
Io
Io e uma linguagem de programação relativamente nova, de Steve Dekorte, que recentemente surgiu do esquecimento do Google (se você tentou googling há alguns meses atrás, você não poderia encontrar a sua página inicial) graças a um curto estimulo estimulante artigo por _que. Não tem o melhor nome para uma linguagem de programação, com certeza, mas definitivamente é um sopro de ar fresco em termos de funcionamento.
Sua sintaxe incomum, minimalista e ainda elegante e poderosa lembra a Smalltalk, mas a linguagem vai muito além disso. Io é uma linguagem de programação orientada a objetos, baseada em protótipo, baseada em mensagem e totalmente refletida. Isso significa que você usa mensagens como no Smalltalk, você cria objetos como em Javascript e cada bit do seu código pode ser inspecionado e transmitido ao seu alcance.
Se você acha que Ruby permite truques extravagantes (e potencialmente sujos) como metaprogramação e mapeamento de macacos, Io leva isso para um nível completamente diferente, impondo praticamente nenhuma limitação ao programador. O que é realmente surpreendente é que a gramática e a sintaxe são tão mínimas que você pode aprendê-las literalmente em 10 minutos. Depois disso, você pode começar a experimentar, primeiro com seu núcleo extremamente pequeno e depois com suas bibliotecas de extensão e ligações.
Io tem realmente muito potencial. Concedido, ainda é jovem e em desenvolvimento, mas também já é bastante eficiente e adequado para tarefas do mundo real exigindo alta velocidade e simultaneidade. É implementado em C, mas Ola Bini começou a desenhar uma linguagem similar chamada Ioke para a máquina virtual Java.
Para você começar ...
- Site oficial do Io
- Io Repository on Github
- Grupo de usuários Io
- Io tem um espelho muito limpo
- Io Notes
- Notas de idioma Io
- Culpe-o no Io! Uma introdução lenta ao idioma Io
- Io Wikibook
PLT Scheme
Eu me deparei com o PLT Scheme web site Enquanto procura por diferentes sabores Lisp cerca de um ano atrás. Na época, eu estava determinado a aprender os rudimentos de Lisp e comecei a ler alguns artigos e livros sobre essa antiga e ainda popular língua.
Embora eu tenha sido originalmente adiado por certa literatura Common Lisp, que descartou Scheme como uma tentativa quase herética de revitalizar uma linguagem venerável, logo descobri que Scheme - e PLT Scheme em particular - é definitivamente digno de atenção e interesse.
Sendo um escritor técnico, imediatamente me apaixonou pelo PLT Guia Scheme, um dos exemplos mais claros e bem organizados de documentação disponível para uma linguagem de programação que já encontrei.
O manual é desenhado exquisitamente como um Manual de Introdução e um Livro de Referência ao mesmo tempo, embora seja agradável para ler sequencialmente: uma característica rara na documentação técnica. O melhor de tudo, é grátis: você simplesmente não tem desculpa real para não lê-lo.
Além da excelente documentação, PLT Scheme parece uma nova e moderna implementação de um dos dois dialetos mais importantes da Lisp. É de plataforma cruzada, tem uma extensa coleção de pacotes e uma comunidade muito ativa por trás disso.
Após a minha primeira tentativa de aprender Haskell, senti-me compelido a experimentar PLT Scheme e imediatamente se sentiu muito mais fácil e mais fácil de usar para aprender, em parte por causa de DrScheme um dedicado IDE/ferramenta de aprendizado otimizada para que você comece e se sinta confortável com a linguagem.
Ressalvas? Nenhum, a menos que você tenha aversão a parênteses, isto é.
Para você começar ...
- Oficial PLT Scheme Web Site
- PLT Guia Scheme
- PLaneT
- Rápido: uma introdução para PLT Scheme com Fotos
- Mais: Programação de sistemas com PLT Scheme
Clojure
Clojure e a tentativa mais recente e notável de trazer a Lisp de volta à vida e pronta para enfrentar os desafios colocados aos sistemas de TI pelo novo século: simultaneidade e escalabilidade. Como ele é executado na Máquina Virtual Java, você também obtém a interoperabilidade Java de graça, em um sabor mais Lispy. Embora eu esteja um pouco relutante em lidar com qualquer coisa relacionada ao Java hoje em dia, a abordagem de Clojure torna mais atraente.
Ao contrário de outros Lisps (e Schemes) você pode ter encontrado antes, Clojure vem com algumas adições interessantes:
- Multimetodos
- Ação assíncrona de agentes
- Algumas interessantes formas especiais
- Muitos pré-construídos estruturas de dados, como vetores, mapas, conjuntos, coleções, …
Apesar de tudo isso, Rich Hickey tornou-se cada vez mais popular tanto no mundo Lisp quanto no Java para criar uma linguagem tão interessante e bem projetada. Ao contrário de muitas novas (e antigas) linguagens de programação, ainda tenho encontrado uma única postagem de blog ou artigo que está criticamente criticando Clojure de qualquer maneira.
Para você começar ...
- Site oficial do Clojure
- Clojure User Group
- Apresentação de Clojure na InfoQ
- Tentando Clojure
- Meu primeiro olhar sobre Clojure
- Enclôr
Squeak
Squeak tornou-se uma das implementações de Smalltalk mais populares disponíveis. Foi usado em alguns projetos muito interessantes:
- EToys, um ambiente de desenvolvimento orientado a crianças, mas poderoso, construído em Squeak, foi incluído como parte do conjunto de softwares educativos do OLPC.
- Seaside e uma estrutura web moderna e muito produtiva em execução Squeak.
- Croquet e uma solução de desenvolvimento para construir mundos virtuais complexos e multiusuários.
Se você perguntar Randal Schwartz, ele irá explicar você porque Squeak e Smalltalk pelo menos, merecem uma olhada. Pessoalmente, enquanto me atraem Smalltalk’s abordagem única para a programação e sua sintaxe amigável, ainda estou um tanto surpreso pela forma como funciona.
Squeak, e Smalltalk em geral, corre dentro (literalmente) de uma máquina virtual escrita em Squeak em si. This means that:
- Você escreve seu código dentro Squeak
- Você depura, inspeciona e interage seu código dentro squeak
- Você corre seu código dentro Squeak
- Você pode instalar Squeak em praticamente qualquer plataforma, incluindo telefones celulares, com bastante facilidade.
Tudo vive dentro Squeak. e muito estranho imaginar isso sem realmente tentar, então eu sugiro que você baixe e dar uma chance: definitivamente será uma experiência incomum, mas intrigante.
Smalltalk leva a programação para um nível completamente diferente, o que é simplesmente inimaginável para outros idiomas. Em troca, ele pede que você abrace completamente a maneira de fazer Smalltalk, de acordo com o qual editores de texto externos, sistemas de controle de versão externa e outras ferramentas comuns familiares aos programadores tradicionais simplesmente perdem sua finalidade.
Para você começar ...
- Oficial Squeak Web Site
- Squeak por Exemplo
- SqueakLand
- Ruby’s Roots: Smalltalk Comeback e Randal Schwartz em Smalltalk
- FLOSS 29 semanal: Dan Ingalls
OCaml
Assim como Smalltalk, OCaml tem recebido mais atenção recentemente do que no passado. Claro, nem todos estão planejando aprender são esses dias, mas depois de ler este artigo Eu admito que estava ansioso para dar uma boa tentativa.
Apesar de ser estaticamente digitado, OCaml oferece alguns dos recursos que são comuns em linguagens dinamicamente digitadas, como Ruby, como a tipagem de pato, a possibilidade de criar idiomas específicos do domínio e até mesmo estender a sintaxe do idioma com operadores personalizados e construções.
Além disso, o OCaml Pilhas incluídas o projeto foi criado como uma tentativa de agrupar um conjunto padrão de biblioteca comumente usada junto com o núcleo do idioma. Mesmo que esse projeto ainda esteja em fase alfa, definitivamente parece promissor.
Para você começar ...
- Oficial Caml Web Site
- TutorialObjetivo Caml
- Uma Introdução Concisa ao Objectivo Caml
- A Rede da OCaml Alliance
- Notícias do OCaml
- Baterias OCaml incluídas
Fator
Fator e Forth what Clojure É Common Lisp: uma reencarnação de uma língua antiga de uma forma mais moderna e prática. No caso específico, embora também empreste de Lisp e Self, o Factor mantém as principais características de seu antepassado: é baseado em pilha, concatenativo e tem notação de postfix.
embora isso seja suficiente para afastar algumas pessoas, se você digger mais fundo, descobrirá que o Factor oferece todos os recursos mais importantes disponíveis nas linguagens de programação contemporâneas: coleta de lixo, digitação dinâmica, um sistema de objetos, ... eles são apenas apresentados em um Maneira muito diferente:
"O Fator de Aprendizagem é difícil. Uma razão para isso é que o fator é muito diferente de outras linguagens de programação. Os programadores hoje são usados para linguagens de programação imperativas onde os dados são armazenados e transmitidos em variáveis nomeadas (ou chamadas de função, que nomeiam suas variáveis). O fator é o contrário disso. Muitos códigos tendem a ser escritos em um estilo funcional e, ainda mais, de forma irregular, as variáveis são raras, apenas referenciadas em uma pequena fração de palavras. Ninguém pretende mudar nada disso; É uma característica, não um bug!”
– Daniel Ehrenberg, Factor de Aprendizagem
Como Haskell, o Factor exige uma abordagem de programação completamente diferente para o que você pode estar acostumado, mas uma vez que você supera isso, pode ser tão útil quanto qualquer outro idioma, se não mais. o Forno estrutura web, que alimenta a Concatenativa wiki, é inteiramente construído em Factor e é executado no topo de um servidor Web Factor.
Para você começar ...
- Site oficial Factor
- Fator no Wiki Concatenativo
- Documentação do fator
- Fator de Aprendizado
- Planet Factor
Lua
Lua ("Lua" em português), é uma linguagem de script leve e rápida que pode ser facilmente incorporada em outros sistemas. Em comparação com as outras línguas mencionadas neste artigo, é definitivamente menos estranho do lote: se você conhece um minúsculo C ou Java, você poderá entender (e possivelmente escrever) 80% do código Lua sem leitura Uma única linha de documentação.
Apesar da sua simplicidade, Lua é considerada uma linguagem multi-paradigma que suporta abordagens orientadas a objetos imperativas, funcionais e mesmo orientadas a objetos. Mais especificamente, Lua's tabelas forneça uma maneira simples, mas poderosa, de criar arrays, hashes e até mesmo classes (ou melhor, protótipos). A herança simples (e múltipla) é conseguida através de metatables, que permite que chamadas para funções indefinidas sejam transferido para mesas pai.
Os programas Lua não são interpretados da maneira tradicional: eles são compilados para bytecode e depois executados na Lua Virtual Machine. Como resultado, o código Lua tende a ser executado muito mais rápido do que outras linguas interpretadas, tão rápido que "tão rápido como Lua" se tornou uma expressão proverbial.
A Lua encontrou seu nicho em aplicativos embutidos e desenvolvimento de jogos, basicamente em todos os lugares há a necessidade de fornecer uma linguagem de script rápida, que também é muito fácil de aprender e se estender com C ou outras línguas.
Para você começar ...
Scala
Você pode não estar feliz em ver Scala nesta lista em vez de outras linguagens muito válidas e igualmente poderosas para a Máquina Virtual Java, como Groovy. Embora não houvesse dúvidas sobre se Clojure deveria ter sido incluído ou não, eu estava um pouco hesitante em incluir Scala. No final, eu escolhi fazê-lo simplesmente porque Scala se encaixa melhor nessa lista do que outras linguas: como você deveria ter percebido agora, estou de alguma forma mais inclinado a aprender linguagens funcionais em oposição às suas contrapartes orientadas a objetos.
O Scala é orientado a objetos e funcional. Oferece o melhor de ambos os mundos: aulas, traços e mixins que podem ser familiares para OOP amantes, mas também funções anônimas, curlinging e correspondência de padrões que podem agradar os entusiastas de Haskell. Além disso, também é compatível com o Java: então, se você usa o Java para trabalhar, experimentar o Scala para o prazer é definitivamente o próximo passo mais lógico, especialmente se você deseja experimentar com a programação funcional, enquanto isso.
Comparado com o aprendizado de uma linguagem totalmente funcional (sem trocadilhos) como Haskell, Clojure ou PLT Scheme, aprender Scala é definitivamente mais fácil e se sentirá menos alienado.
Para você começar ...
- Site oficial Scala
- O caso para Scala
- Scala Wiki
- Aprendendo Scala com o Projeto Euler
- Roundup: Scala para Java Refugiados
Epilogue
Há tantas linguas de programação interessantes por aí que é muito difícil acompanhar todas elas. Espero que esta lista possa ajudá-lo na direção certa, seja qual for.
Algumas pessoas podem debater sobre a própria essência deste artigo: por que escolher uma linguagem de programação? Por que gastar tempo e energia em uma tarefa que pode levar a muita confusão em sua mente e levá-lo a lugar algum? Qual o propósito de aprender algo que pode parecer totalmente estranho para você?
Uma linguagem de programação é apenas uma ferramenta para fazer seu trabalho. Se você tiver que escrever um usuário final, desktop GUI aplicativo que sempre será executado no Windows e que precisa interagir com as tecnologias da Microsoft, você escolherá C # sobre Haskell, não há dúvida sobre isso. Especialmente se 500 desenvolvedores em sua empresa já se desenvolvem em C # e você não, de fato, tem um dito sobre o assunto.
Mas e se você pudesse escolher? E se você quisesse desenvolver seu próprio aplicativo de linha de comando geeky para automatizar uma tarefa específica para você, e não porque outra pessoa lhe diga que o faça? Vocês estarão dispostos a experimentar com algo totalmente diferente e potencialmente difícil apenas por aprender coisas novas?
Se a resposta for sim, então você deve dar uma olhada nesta lista novamente. Não agora, talvez não este mês ou este ano, mas quando você sente a hora certa e dê uma chance a essa linguagem. Pode não acabar bem (até agora tentei aprender Haskell duas vezes, sem sorte), mas prometo que valerá a pena, a longo prazo.
Se você já dominou algumas dessas linguagens já, ou mesmo todas elas, tenha certeza de que elas estão muito preparadas para serem descobertas e abrir sua mente ainda mais. Ou, se preferir, há muita mente lá fora, que pode precisar de orientação em aprendizagem e descoberta. Ajude-os. Escreva artigos, tutoriais, livros, educa e evangelize: em última instância, essa será a sua maior recompensa.