Choisir entre CL et Python pour le développement Web

13

Je viens d'un milieu Java et après avoir lu ce petit essai de Paul Graham, j'ai commencé à me poser des questions sur le choix d'un nouveau langage à savoir Common Lisp pour accélérer mon travail (je suis développeur web).

J'écris actuellement des projets pour animaux de compagnie, mais j'ai des plans d'affaires pour l'avenir. Paul parle de LISP dans son essai comme d'une "arme secrète". Je ne sais pas si cette affirmation est vraie après 10 ans, mais j'ai plongé mes orteils dans un joli didacticiel CL et il semble que LISP puisse être supérieur pour le développement Web.

Paul mentionne également Python comme un bon choix que je connais réellement. Ma question est: laquelle dois-je choisir pour mes futurs projets web?

Ce à quoi je pensais:

  • Je ne vais pas développer d'applications bureautiques, je peux donc choisir la langue que je préfère.
  • python semble avoir une très grande communauté, donc une multitude de bibliothèques / frameworks par rapport à lisp
  • J'ai découvert que lisp a certaines fonctionnalités (comme les macros) qui ne peuvent être trouvées nulle part ailleurs
  • Je travaille principalement seul ou avec 1-2 autres programmeurs mais trouver quelqu'un avec des connaissances pointues peut être difficile

Alors, qu'est-ce que tu penses?

Adam Arold
la source
Quelle est la taille de la communauté Python par rapport à PHP? Je suppose que trouver un développeur Python peut également être difficile, par rapport à trouver un développeur PHP, donc j'ai tendance à choisir entre ces options uniquement si le projet est expérimental.
Alex
Je n'aime pas vraiment PHP donc ce n'est pas une option pour moi. Puisque je suis mon seul patron, personne ne m'oblige à utiliser quelque chose que je n'aime pas. :)
Adam Arold
2
La communauté de développement de @Vash Python n'est peut-être pas aussi énorme que PHP, mais elle est toujours très importante. De plus, je trouve que la documentation en ligne de Python est largement supérieure à celle de PHP.
quanticle
C'est vrai, je pense.
Adam Arold
2
Je ne crois pas que personne ne mentionne encore Clojure!
Chiron

Réponses:

7

Vous venez de l'arrière-plan Java, alors pourquoi ne pas vérifier le langage de programmation Clojure?
Il s'agit d'un dialecte Lisp moderne qui vit sur la JVM, vous avez donc accès à des tonnes de fichiers JAR.

Bien que vous n'allez pas trouver des frameworks Web polis et prêts à la production comme Django et Rails dans l'univers Clojure (au moins en ce moment), mais les programmeurs utilisent des frameworks Web Noir et Compojure.
Vous pouvez également déployer vos applications Web Clojure sur la plate-forme Heroku.

Clojure est très gratifiant mais la courbe d'apprentissage est vraiment abrupte. Êtes-vous prêt à apprendre la programmation fonctionnelle (en supposant que vous n'êtes pas familier)? vivre hors du monde OOP?

Python est le côté sûr: il est mature, des tonnes de livres, de nombreux frameworks web, un énorme pool de connaissances et facile à apprendre.

La décision vous appartient donc.

Chiron
la source
1
J'ai vérifié Clojure récemment et je pense que c'est celui qui correspond le mieux à mes besoins! Merci pour le conseil!
Adam Arold
7

Le lisp est la langue que vous entendez lorsque vous vous tenez près de vous et écoutez les voix provenant des tours d'ivoire. D'autres langages, comme PHP, ne sont peut-être pas aussi élégants ou puissants, mais ils sont comme une langue commune, facile et indulgente.

Bien que Lisp ait influencé de nombreuses langues, il n'est jamais parvenu à se généraliser. Pourquoi? Parce que de nombreux développeurs ne comprenaient pas les concepts du langage, cela leur semblait plutôt obscur. Lisp est difficile à comprendre pour les vastes masses de développeurs. Avez-vous déjà vu une description de poste nécessitant Lisp comme langage de programmation? Non. "Pourquoi demandes-tu? Parce que c'est difficile à maintenir et à lire pour beaucoup de gens. En Lisp, vous pouvez beaucoup plus souvent ne pas dire immédiatement ce que fait une expression en la regardant simplement. Il manque un certain type de simplicité, c'est pourquoi il n'est jamais devenu une langue commune.

Néanmoins, Lisp a eu un impact sur de nombreuses langues. Je recommande de l'apprendre à des fins académiques. Cela élargit vos frontières mentales et vous pouvez souvent penser aux problèmes d'un point de vue différent. Cependant, je ne recommanderais pas de l'utiliser pour des applications Web, sauf si vous effectuez une étude de faisabilité pour une université. Il manque de support dans les outils et les bibliothèques par rapport aux autres options. Si vous voulez acquérir des compétences pratiques qui rapporteront éventuellement de l'argent et pourront être présentées sur votre CV, choisissez par tous les moyens Python. Vous bénéficierez également de Lisp, mais il est moins pratique et de nature plus académique, bien que votre style de programmation global puisse en bénéficier.

De plus, il y a une renaissance des langages fonctionnels de nos jours. Vous pouvez également consulter F # pour .NET ou Scala sur la machine virtuelle Java si vous souhaitez reprendre certains concepts fonctionnels.

Alors faites votre choix. Si les deux étaient de vraies langues, lesquelles de celles-ci préférez-vous apprendre: latin / grec ancien ou français / allemand / italien / espagnol / chinois / arabe?

Faucon
la source
J'ai vu une annonce d'emploi dans la région de Chicago - non seulement cela, ils vous embaucheraient sans expérience et vous formeraient. Je voulais tellement ce concert, mais le trajet m'aurait tué. Je dois admettre, cependant, je pense que c'est presque la seule annonce que j'ai vue depuis de nombreuses années.
Bryan Oakley
Ok ce que je vais faire: j'apprendrai aussi LISP et Python, mais j'utiliserai Python, car les raisons que vous et les autres avez mentionnées ci-dessus. Merci pour la clarification.
Adam Arold
3

Étant donné le choix entre le lisp commun et le python, le meilleur conseil pragmatique que je puisse donner est d' apprendre le python . Alors que le technologue en moi pense que tout le monde qui programme devrait apprendre le lisp, je ne pense pas que son apprentissage vous aidera à "accélérer [votre] travail".

Si vous apprenez le lisp, je pense que cela fera de vous un meilleur programmeur à long terme. Cependant, apprendre le lisp pour les raisons que vous énoncez ne vous rapprochera pas de vos objectifs immédiats OMI. Si vous voulez une solution pratique et pragmatique, apprenez Python. Il n'y a tout simplement pas assez d'outils ou d'opportunités pour utiliser lisp pour vous aider dans vos tâches quotidiennes, à moins que vos tâches quotidiennes n'impliquent la personnalisation d'emacs.

D'un autre côté, si vous avez le temps d'étudier et d'apprendre et que vous êtes prêt à supporter les ramifications de votre choix (manque d'outils, plus difficile de trouver des collègues qui obtiennent du lisp, etc.), optez pour le lisp. C'est vraiment un langage formidable.

Bryan Oakley
la source
3

Je recommanderais d'utiliser Lisp si vous êtes une personne auto-motivée qui est prête à travailler sur vos propres bibliothèques de code sur de longues périodes, aime repousser les limites de votre langage et ne vous souciez pas des problèmes occasionnels de configuration. Si vous êtes un travailleur indépendant, il est susceptible d'être un booster de productivité à long terme en raison de ses fonctionnalités macro.

Python n'est pas aussi flexible, aussi rapide ou aussi puissant. C'est presque trivial à apprendre par rapport à de nombreuses autres langues. C'est très Blubby, en fait. Il a un large support, c'est la langue à la mode du jour , et a une tonne de bibliothèques. C'est probablement un peu mieux si vous devez travailler avec des gens qui se plaignent d'apprendre de nouvelles langues.

Si je passais en revue pour embaucher quelqu'un qui était bon en Lisp par rapport à quelqu'un qui était bon en Python, je présumerais immédiatement que la personne Lisp était un meilleur programmeur et informaticien que la personne Python (toutes autres choses étant égales par ailleurs).

Je suis atrocement partiale, j'en suis sûr.

Paul Nathan
la source
1
Biais ou non, je vois votre point!
Adam Arold
2

Si vous voulez souligner ce dont parlait Paul Graham, je plaiderais en faveur de Lisp. La différence d'approche et de mentalité adoptée par la famille de langues Lisp a beaucoup plus de chances d'avoir un impact sur vous en tant que programmeur dans son ensemble, en raison de l'encouragement à penser différemment. Et même si je ne l'ai pas fait moi-même, il semble que le développement Web en Lisp soit assez bien pris en charge: voir cette question sur SO.

Python est un excellent langage, et je ne vais pas du tout le frapper. Il existe de nombreux bons frameworks et outils Web pour Python, et il sera plus facile de trouver des personnes qui le connaissent déjà, quand vous en avez besoin.

En fin de compte, en raison de l'environnement actuel, choisir Lisp semble toujours se résumer à une question: "Voulez-vous utiliser ce que vous voulez, ou voulez-vous utiliser ce que l'industrie utilise déjà?" Quelle est votre réponse à cette question?

jachères
la source
2

Si vous n'avez pas de contrainte de temps, utilisez Lisp. Apprendre Lisp changera votre façon de voir Python (et toutes les autres langues que vous connaissez), mais apprendre Python ne changera pas votre façon de voir Lisp (si vous le saviez). Lisp est plus qu'un nouvel outil dans la boîte à outils. C'est une nouvelle façon de penser.

Pendant que vous y êtes, jetez un œil à Factor ou à un autre langage concaténatif . Les langues concaténatives sont incroyables pour vous apprendre à penser dans les combinateurs . L'apprentissage d'une langue concaténative changera votre façon de voir toutes les autres langues.

Enfin, exercez votre cerveau droit. Le formalisme des langages de programmation nous oblige à sur-utiliser notre cerveau gauche pour résoudre les problèmes. Activez votre cerveau droit pour accéder à un autre changement de paradigme révolutionnaire.

Scant Roger
la source
0

Lisp n'est qu'un outil, comme toutes les autres langues. At-il des fonctionnalités utiles, bien sûr. En même temps, il est possible d'avoir la même sortie avec à peu près n'importe quelle autre langue, cela peut prendre plus de temps et de code. Le principal problème avec Lisp est que vous DEVEZ obtenir, au moins, l'hébergement VPS, car il n'y a pas d'hôte partagé (que je sache) qui prend en charge une variété de Lisp sur leur plate-forme.

Une chose que je suggérerais, c'est que puisque vous êtes un programmeur Java, jetez un œil à Groovy (ou même Scala). Ils vous permettront d'utiliser vos bibliothèques et API Java et vous permettront d'augmenter votre productivité.

Jetti
la source
VPS n'est pas un problème car mes idées ne fonctionneront pas non plus avec l'hébergement mutualisé.
Adam Arold
0

Je ne connais pas grand-chose de Lisp à part ses origines. Ce que je sais de Python, c'est ceci:

5 minutes après l'atterrissage de la première soucoupe volante, la communauté Python aura mis en place quelque chose pour s'interfacer avec ses systèmes d'E / S.

De plus, venant principalement de JavaScript, j'ai trouvé Python un ajustement très naturel. Peut-être que l'inverse est vrai.

De plus, Django est à peu près le cadre à imiter de nos jours.

Erik Reppen
la source