Escolhendo entre CL e Python para desenvolvimento web

13

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?

Adam Arold
fonte
Qual é o tamanho da comunidade Python em comparação com o PHP? Eu suponho que encontrar um desenvolvedor Python também pode ser difícil, comparado a encontrar um desenvolvedor PHP, então eu só escolho entre essas opções se o projeto for experimental.
Alex
Eu realmente não gosto de PHP, então isso não é uma opção para mim. Como sou meu único chefe, ninguém me obriga a usar algo que não gosto. :)
Adam Arold
2
A comunidade de desenvolvimento do @Vash Python pode não ser tão grande quanto a do PHP, mas ainda é muito grande. Além disso, acho a documentação on-line do Python muito superior à do PHP.
Quanticle 11/08/11
Isso é verdade, eu acho.
Adam Arold
2
Não acredito que ninguém esteja mencionando Clojure ainda!
Quíron

Respostas:

7

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.

Quíron
fonte
1
Eu verifiquei o Clojure recentemente e acho que é o que melhor se adapta às minhas necessidades! Obrigado pelo conselho!
Adam Arold 11/07
7

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?

Falcão
fonte
Vi um trabalho de publicidade cigana na área de Chicago - não apenas isso, eles o contratariam sem experiência e o treinariam. Eu queria tanto aquele show, mas o trajeto teria me matado. Admito, no entanto, acho que esse é quase o único anúncio que vi ao longo de muitos anos.
Bryan Oakley
Ok, o que farei: vou aprender LISP e Python também, mas vou usar o Python, pelas razões que você e outras pessoas mencionaram acima. Obrigado pelo esclarecimento.
Adam Arold
3

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.

Bryan Oakley
fonte
3

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.

Paul Nathan
fonte
1
Viés ou não, entendo o seu ponto!
Adam Arold
2

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?

asfallows
fonte
2

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.

Roger escasso
fonte
0

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.

Jetti
fonte
O VPS não é um problema, porque minhas idéias também não funcionarão com hospedagem compartilhada.
Adam Arold
0

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.

Erik Reppen
fonte