Elegir entre CL y Python para desarrollo web

13

Vengo de un entorno Java y después de leer este pequeño ensayo de Paul Graham , comencé a preguntarme acerca de elegir un nuevo lenguaje, Common Lisp, para acelerar mi trabajo (soy desarrollador web).

Actualmente estoy escribiendo proyectos para mascotas, pero tengo algunos planes de negocios para el futuro. Paul habla de LISP en su ensayo como un "arma secreta". No sé si esta afirmación es cierta después de 10 años, pero sumergí los dedos de los pies en un buen tutorial de CL y parece que LISP puede ser superior para el desarrollo web.

Paul también menciona Python como una buena opción con la que realmente estoy familiarizado. Mi pregunta es: ¿cuál debo elegir para mis futuros proyectos web?

Lo que estaba pensando:

  • No voy a desarrollar aplicaciones de escritorio para poder elegir el idioma que prefiera.
  • Python parece tener una comunidad muy grande, por lo tanto, es mucho más bibliotecas / marcos en comparación con lisp
  • Descubrí que lisp tiene alguna funcionalidad (como macros) que no se puede encontrar en ningún otro lado
  • Principalmente trabajo solo o con otros 1-2 programadores, pero encontrar a alguien con conocimientos de lisp puede ser difícil

¿Entonces, qué piensas?

Adam Arold
fuente
¿Qué tan grande es la comunidad de Python en comparación con PHP? Supongo que encontrar un desarrollador de Python también puede ser difícil, en comparación con encontrar un desarrollador de PHP, por lo que tiendo a elegir solo entre estas opciones si el proyecto es experimental.
Alex
Realmente no me gusta PHP, así que esta no es una opción para mí. Como soy mi único jefe, nadie me obliga a usar algo que no me gusta. :)
Adam Arold
2
La comunidad de desarrollo de @Vash Python puede no ser tan grande como la de PHP, pero sigue siendo muy grande. Además, creo que la documentación en línea de Python es muy superior a la de PHP.
Quanticle
Eso es cierto, creo.
Adam Arold
2
¡No creo que nadie esté mencionando Clojure todavía!
Quirón

Respuestas:

7

Usted viene de Java, entonces, ¿por qué no verifica el lenguaje de programación Clojure?
Es un dialecto moderno de Lisp que vive en la JVM, por lo que tiene acceso a toneladas de JAR.

Si bien no va a encontrar marcos web pulidos y listos para producción como Django y Rails en el universo Clojure (al menos en este momento), los programadores están usando los marcos web Noir y Compojure.
También puede implementar sus aplicaciones web Clojure en la plataforma Heroku.

Clojure es muy gratificante, pero la curva de aprendizaje es realmente empinada. ¿Estás listo para aprender programación funcional (suponiendo que no estés familiarizado)? vivir fuera del mundo OOP?

Python es el lado seguro: es maduro, toneladas de libros, muchos marcos web, un gran conjunto de conocimientos y fácil de aprender.

Entonces la decisión es realmente tuya.

Quirón
fuente
1
¡He revisado Clojure últimamente y creo que es el que más se adapta a mis necesidades! ¡Gracias por el consejo!
Adam Arold
7

Lisp es el idioma que escuchas cuando estás cerca y escuchas las voces que salen de las torres de marfil. Otros lenguajes, como PHP, pueden no ser tan elegantes o potentes, pero son como una lengua común, fácil y tolerante.

Si bien Lisp ha influido en muchos idiomas, nunca llegó a la corriente principal. ¿Por qué? Debido a que muchos desarrolladores no entendían los conceptos del lenguaje, les parecía bastante oscuro. Lisp es difícil de entender para las grandes masas de desarrolladores. ¿Alguna vez has visto una descripción del trabajo que requiera Lisp como lenguaje de programación? No tengo "¿Porque preguntas? Porque es difícil de mantener y leer para muchas personas. En Lisp, con mucha más frecuencia no se puede decir de inmediato qué hace una expresión con solo mirarla. Carece de un cierto tipo de simplicidad, por eso nunca se convirtió en una lengua común.

Sin embargo, Lisp ha tenido un impacto en muchos idiomas. Recomiendo aprenderlo con fines académicos. Amplía tus límites mentales para que a menudo puedas pensar en problemas desde un punto de vista diferente. Sin embargo, no recomendaría usarlo para aplicaciones web, a menos que esté realizando un estudio de factibilidad para una universidad. Carece de soporte en herramientas y bibliotecas en comparación con las otras opciones. Si desea adquirir habilidades prácticas que eventualmente producirán algo de dinero y se pueden presentar en su currículum, entonces, por supuesto, elija Python.También se beneficiará de Lisp, pero es menos práctico y de naturaleza más académica, aunque su estilo de programación general podría beneficiarse de él.

Además, hay un renacimiento de los lenguajes funcionales en estos días. También puede buscar F # para .NET o Scala en la JVM si desea obtener algunos conceptos funcionales.

Así que haz tu elección. Si ambos fueran idiomas reales, ¿cuál de estos preferirías aprender: latín / griego antiguo o francés / alemán / italiano / español / chino / árabe?

Halcón
fuente
He visto un anuncio publicitario de empleo en el área de Chicago; no solo eso, sino que lo contratarían sin experiencia y lo capacitarían. Quería tanto ese concierto, pero el viaje me habría matado. Sin embargo, admito que creo que es casi el único anuncio que he visto en muchos años.
Bryan Oakley
Ok, lo que haré: aprenderé LISP y Python también, pero usaré Python, por las razones que usted y otros mencionaron anteriormente. Gracias por la aclaración.
Adam Arold
3

Dada la opción entre lisp común y python, el mejor consejo pragmático que puedo dar es aprender python . Si bien el tecnólogo en mí piensa que todos los que programan deben aprender lisp, no creo que aprenderlo lo ayude a "acelerar [su] trabajo".

Si aprendes lisp, creo que te convertirá en un mejor programador a largo plazo. Sin embargo, aprender el ceceo por las razones que declaras no te acercará más a tus objetivos inmediatos de la OMI. Si desea una solución práctica y pragmática, aprenda Python. Simplemente no hay suficientes herramientas u oportunidades para usar lisp para ayudarlo en sus tareas diarias a menos que sus tareas diarias impliquen personalizar emacs.

Por otro lado, si tienes tiempo para estudiar y aprender, y estás dispuesto a soportar las ramificaciones que elijas (falta de herramientas, es más difícil encontrar compañeros de trabajo que reciban lisp, etc.), ve con lisp. Realmente es un lenguaje excelente.

Bryan Oakley
fuente
3

Recomendaría usar Lisp si es una persona motivada que es capaz de trabajar con sus propias bibliotecas de código durante largos períodos de tiempo, le gusta superar los límites de su idioma y no le molesta el enganche ocasional en la configuración. Si trabaja por cuenta propia, es probable que aumente la productividad a largo plazo debido a sus características macro.

Python no es tan flexible, tan rápido o tan poderoso. Es casi trivial aprender en comparación con muchos otros idiomas. Es muy Blubby, de hecho. Tiene un amplio soporte, es el lenguaje de moda del día y tiene un montón de bibliotecas. Probablemente sea un poco mejor si tiene que trabajar con personas que se quejan de aprender nuevos idiomas.

Si estaba revisando para contratar a alguien que fuera bueno en un Lisp en comparación con alguien que fuera bueno en Python, inmediatamente presumiría que la persona de Lisp era un mejor programador y científico informático que la persona de Python (todas las demás cosas son iguales).

Estoy atrozmente parcial, estoy seguro.

Paul Nathan
fuente
1
Parcial o no, entiendo tu punto!
Adam Arold
2

Si desea enfatizar de qué estaba hablando Paul Graham, yo abogaría a favor de Lisp. La diferencia en el enfoque y la mentalidad adoptada por la familia de idiomas Lisp tiene mucho más potencial para tener un impacto en usted como programador en general, debido al estímulo para pensar de manera diferente. Y aunque no lo he hecho yo mismo, parece que el desarrollo web en Lisp está bastante bien soportado: vea esta pregunta en SO.

Python es un gran lenguaje, y no voy a golpearlo. Hay un montón de buenos marcos web y herramientas para Python, y será más fácil encontrar personas que ya estén familiarizadas con él, cuando sea necesario.

En última instancia, debido al entorno actual, la elección de Lisp parece siempre reducirse a una pregunta de "¿Quieres usar lo que quieres o quieres usar lo que la industria ya usa?" ¿Cuál es tu respuesta a esa pregunta?

asfallows
fuente
2

Si no tiene presión de tiempo, use Lisp. Aprender Lisp cambiará la forma en que ves Python (y cualquier otro idioma que conozcas), pero aprender Python no cambiará la forma en que ves Lisp (si lo supieras). Lisp es más que una nueva herramienta en la caja de herramientas. Es una nueva forma de pensar.

Mientras lo hace, eche un vistazo a Factor u otro lenguaje concatenante . Los lenguajes concatenativos son increíbles para enseñarle a pensar en combinadores . Aprender un idioma concatenativo cambiará la forma en que ve todos los demás idiomas.

Finalmente, ejercita tu cerebro derecho. El formalismo de los lenguajes de programación nos obliga a usar en exceso nuestro cerebro izquierdo para resolver problemas. Active su cerebro derecho para acceder a otro cambio de paradigma que cambia el juego.

Roger escaso
fuente
0

Lisp es solo una herramienta, como cualquier otro idioma. ¿Tiene características útiles, seguro. Al mismo tiempo, es posible tener la misma salida con casi cualquier otro idioma, solo puede tomar más tiempo y código. El principal problema con Lisp es que DEBE tener, al menos, alojamiento VPS, ya que no hay un host compartido (que yo sepa) que sea compatible con cualquier variedad de Lisp en su plataforma.

Una cosa que sugeriría es que, dado que usted es un programador de Java, eche un vistazo a Groovy (o incluso Scala). Le permitirán utilizar sus bibliotecas y API de Java y le proporcionarán un aumento en la productividad.

Jetti
fuente
VPS no es un problema porque mis ideas tampoco funcionarán con hosting compartido.
Adam Arold
0

No sé mucho sobre Lisp aparte de sus orígenes. Lo que sé sobre Python es esto:

5 minutos después de que aterrice el primer platillo volador, la comunidad de Python habrá reunido algo para interactuar con sus sistemas de E / S.

Además, viniendo principalmente de JavaScript, encontré que Python es un ajuste muy natural. Quizás lo contrario podría ser cierto.

Además, Django es prácticamente el marco para imitar hoy en día.

Erik Reppen
fuente