Eu sou proveniente de Java e, depois de ler este pequeno ensaio de Paul Graham , comecei a pensar em escolher uma nova linguagem, chamada Common Lisp, para acelerar meu trabalho (sou desenvolvedor web).
Atualmente, estou escrevendo projetos para animais de estimação, mas tenho alguns planos de negócios para o futuro. Paul fala sobre o LISP em seu ensaio como uma "arma secreta". Não sei se essa afirmação é verdadeira após 10 anos, mas mergulhei os dedos dos pés em um bom tutorial de CL e parece que o LISP pode ser superior ao desenvolvimento da Web.
Paul também menciona o Python como uma boa escolha com a qual eu realmente estou familiarizado. Minha pergunta é: qual devo escolher para meus futuros projetos na web?
O que eu estava pensando:
- Não vou desenvolver aplicativos de área de trabalho para poder escolher o idioma que preferir.
- python parece ter uma comunidade muito grande, portanto, mutch mais bibliotecas / frameworks em comparação com lisp
- Eu descobri que o lisp tem alguma funcionalidade (como macros) que não pode ser encontrada em nenhum outro lugar
- Eu principalmente trabalho sozinho ou com 1-2 outros programadores, mas encontrar alguém com conhecimento de língua falsa pode ser difícil
Então, o que você acha?
fonte
Respostas:
Você é proveniente de Java, então por que não verificar a linguagem de programação Clojure?
É um dialeto moderno do Lisp que vive na JVM, para que você tenha acesso a toneladas de JARs por aí.
Embora você não encontre estruturas da Web polidas e prontas para produção, como Django e Rails no universo Clojure (pelo menos agora), mas os programadores estão usando as estruturas da Web Noir e Compojure.
Você também pode implantar seus aplicativos da web Clojure na plataforma Heroku.
Clojure é altamente gratificante, mas a curva de aprendizado é realmente íngreme. Você está pronto para aprender programação funcional (supondo que você não esteja familiarizado)? viver fora do mundo OOP?
O Python é o lado seguro: é maduro, toneladas de livros, muitos frameworks da Web, enorme pool de conhecimentos e fácil de aprender.
Portanto, a decisão é realmente sua.
fonte
Lisp é o idioma que você ouve quando se aproxima e ouve as vozes vindas das torres de marfim. Outras linguagens, como PHP, podem não ser tão elegantes ou poderosas, mas são como uma língua comum, fácil e perdoadora.
Embora o Lisp tenha influenciado muitos idiomas, ele nunca chegou ao mainstream. Por quê? Como muitos desenvolvedores não entendiam os conceitos da linguagem, para eles parecia bastante obscuro. É difícil entender o Lisp para as vastas massas de desenvolvedores. Você já viu uma descrição do trabalho que requer o Lisp como linguagem de programação? Eu não tenho. "Porque você pergunta? Porque é difícil de manter e ler para muitas pessoas. No Lisp, muitas vezes você não pode dizer imediatamente o que uma expressão está fazendo simplesmente olhando para ela. Falta um certo tipo de simplicidade, é por isso que nunca se tornou uma língua comum.
No entanto, o Lisp teve um impacto em muitos idiomas. Eu recomendo aprendê-lo para fins acadêmicos. Ele amplia suas fronteiras mentais para que você possa pensar sobre problemas de um ponto de vista diferente. No entanto, eu não recomendaria usá-lo para aplicativos da Web, a menos que você esteja realizando um estudo de viabilidade para uma universidade. Falta suporte em ferramentas e bibliotecas em comparação com as outras opções. Se você deseja adquirir habilidades práticas que eventualmente renderão algum dinheiro e possam ser apresentadas em seu currículo, escolha o Python. Você também se beneficiará do Lisp, mas é menos prático e mais acadêmico por natureza, embora seu estilo de programação geral possa se beneficiar disso.
Além disso, há um renascimento das linguagens funcionais atualmente. Você também pode procurar no F # for .NET ou Scala na JVM se quiser pegar alguns conceitos funcionais.
Então faça sua escolha. Se os dois eram idiomas reais, qual deles você prefere aprender: latim / grego antigo ou francês / alemão / italiano / espanhol / chinês / árabe?
fonte
Dada a escolha entre lisp comum e python, o melhor conselho pragmático que posso dar é aprender python . Enquanto o tecnólogo em mim pensa que todos os programas que aprendem o cocô, não acho que o aprendizado o ajude a "acelerar o seu trabalho".
Se você aprender lisp, acredito que o tornará um programador melhor a longo prazo. No entanto, aprender cocô pelas razões que você declara não o aproximará de seus objetivos imediatos IMO. Se você deseja uma solução prática e pragmática, aprenda Python. Simplesmente não há ferramentas ou oportunidades suficientes para usar o lisp para ajudá-lo nas tarefas diárias, a menos que as tarefas diárias envolvam a personalização do emacs.
Por outro lado, se você tiver tempo para estudar e aprender e estiver disposto a suportar as implicações de sua escolha (uma escassez de ferramentas, mais difícil de encontrar colegas de trabalho que recebam cisco, etc.), vá com citado. É realmente uma linguagem fantástica.
fonte
Eu recomendaria o uso do Lisp se você é uma pessoa motivada que é capaz de trabalhar com suas próprias bibliotecas de código por longos períodos de tempo, gosta de empurrar os limites do seu idioma e não se importa com os problemas ocasionais na configuração. Se você trabalha por conta própria, é provável que aumente a produtividade a longo prazo devido aos seus recursos de macro.
Python não é tão flexível, rápido ou poderoso. É quase trivial aprender em comparação com muitos outros idiomas. É muito Blubby, de fato. Ele possui amplo suporte, é a linguagem da moda do dia e possui inúmeras bibliotecas. Provavelmente é um pouco melhor se você tiver que trabalhar com pessoas que se queixam de aprender novos idiomas.
Se eu estivesse revendo para contratar alguém que era bom em um Lisp em comparação com alguém que era bom em Python, presumiria imediatamente que a pessoa Lisp era um melhor programador e cientista da computação do que a pessoa Python (todas as outras coisas são iguais).
Sou atrozmente tendenciosa, tenho certeza.
fonte
Se você quiser enfatizar o que Paul Graham estava falando, eu advogaria a favor de Lisp. A diferença de abordagem e mentalidade adotada pela família de idiomas Lisp tem muito mais potencial para ter um impacto sobre você como programador em geral, devido ao incentivo para pensar de maneira diferente. E embora eu não tenha feito isso sozinho, parece que o desenvolvimento da Web no Lisp é muito bem suportado: veja esta pergunta no SO.
O Python é uma ótima linguagem, e eu não vou nem saber. Existem muitas boas estruturas e ferramentas da Web para o Python, e será mais fácil encontrar pessoas que já estejam familiarizadas com ele, quando você precisar.
Por fim, devido ao ambiente atual, a escolha do Lisp sempre se resume à pergunta "Você deseja usar o que deseja ou deseja usar o que a indústria já usa?" Qual a sua resposta para essa pergunta?
fonte
Se você não tem pressão de tempo, use Lisp. Aprender Lisp mudará a maneira como você vê o Python (e todas as outras línguas que você conhece), mas aprender Python não muda a maneira como você vê o Lisp (se você o conhecesse). Lisp é mais do que uma nova ferramenta na caixa de ferramentas. É uma nova maneira de pensar.
Enquanto você está nisso, dê uma olhada no Factor ou em outra linguagem concatenativa . Linguagens concatenativas são incríveis para ensinar você a pensar em combinadores . Aprender um idioma concatenativo mudará a maneira como você visualiza todos os outros idiomas.
Finalmente, exercite seu cérebro direito. O formalismo das linguagens de programação nos obriga a usar em excesso o cérebro esquerdo para a solução de problemas. Ative seu cérebro direito para acessar outra mudança de paradigma que muda o jogo.
fonte
O Lisp é apenas uma ferramenta, como qualquer outro idioma. Ele possui recursos úteis, com certeza. Ao mesmo tempo, é possível ter a mesma saída com praticamente qualquer outro idioma, isso pode levar mais tempo e código. O principal problema do Lisp é que você precisará obter pelo menos hospedagem VPS, pois não há um host compartilhado (que eu saiba) que suporte qualquer variedade de Lisp em sua plataforma.
Uma coisa que eu sugiro é que, como você é um programador Java, dê uma olhada no Groovy (ou mesmo no Scala). Eles permitirão que você use suas bibliotecas e APIs Java e fornecerão um aumento na produtividade.
fonte
Eu não sei muito sobre o Lisp além de suas origens. O que eu sei sobre Python é isso:
5 minutos após o primeiro disco voador pousar, a comunidade Python reuniu algo para interagir com seus sistemas de E / S.
Além disso, vindo principalmente do JavaScript, achei o Python um ajuste muito natural. Talvez o inverso possa ser verdadeiro.
Além disso, o Django é praticamente o framework para imitar hoje em dia.
fonte