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?
web-development
python
lisp
Adam Arold
fuente
fuente
Respuestas:
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.
fuente
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?
fuente
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.
fuente
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.
fuente
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?
fuente
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.
fuente
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.
fuente
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.
fuente