Eu sei que eles são dialetos da mesma família de línguas chamada lisp, mas quais são exatamente as diferenças? Você poderia dar uma visão geral, se possível, cobrindo tópicos como sintaxe, características, recursos e recursos.
Eu sei que eles são dialetos da mesma família de línguas chamada lisp, mas quais são exatamente as diferenças? Você poderia dar uma visão geral, se possível, cobrindo tópicos como sintaxe, características, recursos e recursos.
Respostas:
Todos eles têm muito em comum:
(function-name arg1 arg2)
Características distintivas comuns do Lisp:
Características distintivas do Clojure:
[]
e mapas {}
usados como padrão, além das listas padrão ()
- além da utilidade geral de vetores e mapas, alguns acreditam que esta é uma inovação que torna geralmente mais legívelCaracterísticas distintivas do esquema:
As pessoas acima perderam algumas coisas
O Lisp comum também tem vetores e tabelas de hash. A diferença é que Common Lisp usa # () para vetores e nenhuma sintaxe para tabelas hash. Esquema tem vetores, eu acredito
Common Lisp tem macros de leitura, que permitem que você use novos colchetes (como faz Racket, um descendente de Scheme).
Scheme e Clojure têm macros higiênicas, ao contrário das não higiênicas do Common Lisp
Todos os idiomas são modernos ou têm extensos projetos de renovação. Common Lisp obteve extensas bibliotecas nos últimos cinco anos (graças principalmente ao Quicklisp), Scheme tem algumas implementações modernas (Racket, Chicken, Chez Scheme, etc.) e Clojure foi criado há relativamente pouco tempo
Common Lisp tem um sistema OO embutido, embora seja bastante diferente de outros sistemas OO que você possa ter usado. Notavelmente, não é obrigatório - você não precisa escrever código OO.
As linguagens têm filosofias de design um pouco diferentes. Scheme foi projetado como um dialeto mínimo para a compreensão do Modelo do Ator; mais tarde foi usado para pedagogia. O Lisp comum foi projetado para unificar a miríade de dialetos Lisp que surgiram. Clojure foi projetado para simultaneidade. Como resultado, Scheme tem uma reputação de ser minimalista e elegante, Common Lisp de ser poderoso e agnóstico de paradigma (funcional, OO, qualquer que seja) e Clojure de favorecer a programação funcional.
Gimp é escrito em Scheme :)
Na verdade, parte do software que algumas pessoas pensam que pode ser escrito em C ++ foi provavelmente feito sob o guarda-chuva do Lisp, é difícil escolher as maçãs douradas do grupo. O fato é que o C ++ nem sempre foi popular, ele só parece ser popular hoje por causa de um histórico de atualizações. Na metade inferior do século, o C ++ nem mesmo utilizava multithreading, era onde o Python é hoje uma fossa de código-cola com erros não testado e inútil. Avance um pouco mais rápido e agora estamos vendo um aumento na programação funcional, é mais como se adaptar ou morrer. Acho que Java está certo no que diz respeito à parte de adaptação.
Scheme foi projetado para simplificar a linguagem Lisp, essa era sua única intenção, exceto que nunca realmente pegou. Eu acho que Clojure faz algo semelhante, seu objetivo é simplificar o Scheme para a JVM e nada mais. É como qualquer outra linguagem JVM, ali apenas para aumentar a experiência do usuário, apenas para simplificar a escrita de boilerplate na terra do Java.