Estoy desarrollando alguna aplicación con clojure (lisp) solo en mi equipo. Comienza como una pequeña aplicación. No hay problema. Pero como tiene características y extiende el área, se está convirtiendo en un programa importante.
Me preocupaba el mantenimiento o algo así. Nadie en mi equipo sabe clojure o lisp ni está interesado en idiomas como ellos.
Entonces, ¿no está mal hacer programación en lenguajes impopulares? (¿para mi propia diversión?) ¿Debería usar idiomas más populares? (al menos como python)
Estoy seguro de que si dejo el equipo, no digo que me vaya. :) - nadie lo mantendría. Este programa será destruido y algunos se desarrollarán con otro lenguaje.
Sin embargo, estoy disfrutando mucho desarrollando con clojure, me di cuenta de que podría no ser para mi equipo.
¿Qué piensas sobre esto? Creo que muchos programadores que aman los lenguajes impopulares se han preocupado por problemas similares.
fuente
Respuestas:
Siento tu dolor, me encantaría hacer más codificación en programación funcional (¡Haskell se ve tan divertido!). Siento que acabo de arañar la superficie porque todavía tengo que usarlo en un contexto comercial.
Sin embargo, recomendaría encarecidamente no hacerlo . Si programa en un idioma que solo usted conoce, solo podrá apoyarlo. A menos que desee tener que lidiar con todos los problemas de soporte (incluso cuando tenga otros plazos / prioridades), codifique en un idioma que su equipo conozca y pueda brindar soporte. ¿Qué sucede cuando algo se rompe mientras estás de vacaciones? ¿Qué pasa si quieres ser promovido?
Le recomendaría que tenga al menos otro miembro del equipo a bordo con usted. Muéstrales algunas características geniales del lenguaje. Con dos personas a bordo se vuelve viable y no se le cargará con todo el soporte.
fuente
Posiblemente falso.
Si el programa tiene valor y la gerencia lo ve, le encargarán a alguien aprender Clojure y mantenerlo.
Pasa todo el tiempo.
Siempre cierto. Entonces, ¿por qué preocuparse por eso?
Todos los programas deben eventualmente ser reemplazados.
fuente
Estoy exactamente en el lugar en el que imagina que está su sucesor. Me encargaron agregar funciones a un programa heredado que usaba Clojure y Erlang para realizar búsquedas asincrónicas y convertirlas en un programa que realiza búsquedas asincrónicas distribuidas. Cuando llegué a este trabajo, todo lo que sabía era Python y Java.
Mi consejo para ti: usa la mejor herramienta para el trabajo . Si esa herramienta es Clojure, que así sea. Los lenguajes de programación no son tan difíciles de aprender. El código bien escrito en un idioma apropiado para la tarea en cuestión siempre es más fácil de leer que el código que intenta hacer algo para lo que el lenguaje no fue diseñado. Será más fácil para su sucesor leer Clojure limpio que Java destrozado.
fuente
Adoptar nuevos idiomas o lenguaje " independiente " por alguna tarea es un alto riesgo en un proyecto.
Si esa parte del sistema tiene un problema o esa parte debe ser descartada, debe encontrar un programador que debe aprender las habilidades sobre ese idioma. En ambos casos perdiste mucho tiempo.
En algunos casos, este problema se puede utilizar para mejorar y diversificar las habilidades de un equipo por tareas futuras.
fuente
Clojure podría tener una pequeña base instalada en la actualidad (apareció en 2007) pero no es impopular, de hecho es posiblemente el nuevo lenguaje "más popular". Me sorprendería si no pudieras encontrar a otras personas interesadas en aprenderlo.
De todos modos, si adoptar un nuevo lenguaje siempre debe ser una decisión basada en el valor para el negocio . Puede hablar con su gerente en las siguientes líneas:
Ventajas de adoptar Clojure:
Desventajas de adoptar Clojure
Si yo fuera un gerente que evaluara esta decisión, probablemente me gustaría la idea de una mayor productividad de Clojure lo suficiente como para permitir algunos experimentos limitados, y diferir la decisión hasta que quede claro qué tan bien el equipo lo estaba tomando. En ese caso, probablemente necesite ser un defensor, actuar como un buen maestro y ayudar a atraer a los demás.
fuente
No te preocupes, se feliz.
Claramente, el programa tiene valor, o no lo extenderías. Felicitaciones por un proyecto exitoso. Presumiblemente, eligió Clojure porque hacerlo le ahorró tiempo y, por lo tanto, le ahorró dinero a su empleador. Si lo hubiera escrito en Java, el programa sería, por lo tanto, aún más difícil de mantener. Incluso si sus colegas pudieran entender más fácilmente el programa línea por línea, ¿podrían mantenerlo y extenderlo?
fuente
¡Te diría más poder! Lisp es el abuelo de los lenguajes informáticos y sigue siendo relevante hoy en día; El hecho de que no sea tan popular, creo que se debe al hecho de que no tiene los IDE cálidos y esponjosos de C # y Java, y la implementación del compilador principal en Windows solo se ejecuta bajo Cygwin (¡yuk!). El desarrollo parece tener lugar en Emacs y supongo que funciona mejor con Linux o Mac.
Esta competencia de codificación fue ganada por un programa Lisp en 2010: http://planetwars.aichallenge.org/
En el pasado, podían depurarlo en vivo desde aproximadamente 100 millones de millas: http://www.flownet.com/gat/jpl-lisp.html
Definitivamente está renunciando a una bandera roja de mantenimiento, pero piense que es una oportunidad de aprendizaje para otra persona. Si estaba usando un lenguaje de pesadilla (como MUMPS) o un lenguaje tedioso (como TCL), entonces creo que deberían hacerse preguntas. Pero creo que debería ser considerado como un tipo que intenta mantener la mejor de las viejas tradiciones :)
fuente
Hay muchas buenas respuestas, pero me gustaría agregar un punto.
He estado en una situación similar pero con un idioma diferente. Tuve que aprender todo de la manera difícil, es decir, a través del método de prueba y error debido a la falta de orientación. Lo que aprendí de mi experiencia al señalar el mantenimiento / extensibilidad se convertiría en un problema, ya que uno podría no conocer enfoques efectivos debido a la falta de orientación.
Le sugiero que hable con su gerente para obtener la ayuda adecuada para que pueda evitar cualquier problema en el futuro.
¡Buena suerte!
fuente
En algunos casos, un lenguaje como Lisp puede acelerar o facilitar la implementación de la funcionalidad que sería muy difícil en un idioma diferente. También influye en la forma en que ves los problemas, dándote una perspectiva que otros miembros de tu equipo pueden no tener. Tener una gama más amplia de capacidades y una visión más amplia de lo que es posible puede ser muy valioso para una empresa que puede comprenderlas y utilizarlas. Sin embargo, el precio de esas capacidades es una falta de estandarización.
Muchas empresas intentan estandarizar en uno o dos idiomas porque les da más flexibilidad organizativa: pueden mover a los desarrolladores de un proyecto a otro sin tener que volver a capacitarlos, tienen una reserva incorporada de conocimiento sobre los idiomas que utilizan, y los gerentes no tienen que considerar las fortalezas y debilidades de usar un idioma u otro para un proyecto determinado. Cuando todo lo que tienes es un martillo, todo parece un clavo.
Como he señalado, ambos enfoques tienen ciertos beneficios y desventajas. Como suele ser el caso, no hay un enfoque correcto o incorrecto. Solo está intercambiando un conjunto de beneficios y desventajas por otro. Una empresa tampoco tiene que ir completamente en una dirección u otra. Es perfectamente razonable hacer la mayoría del trabajo en C ++ o Java, pero sumerge un dedo en Lisp o Python de vez en cuando para probarlos y ver qué funciona. Parece que eso podría ser lo que está haciendo su empresa.
Así que adelante (pero no Forth), aprenda todo lo que pueda y conviértase en el experto de Clojure en el que su gerente puede confiar para obtener información que sus colegas podrían no tener. Y no se sienta mal por eso ... preocuparse por las cosas organizativas es el trabajo de sus gerentes.
fuente
Recomendaría comenzar a reescribir su programa en un idioma diferente (más conveniente) cuando empiece a sentir que el mantenimiento tiene grandes posibilidades de ser un problema dominante.
Si lograste escribirlo en forma cerrada (lo cual no sabías cuando comenzaste a crear tu aplicación, tal como lo entendí), entonces no será problema reescribirlo usando un lenguaje más familiar / conveniente. El cierre utiliza conceptos completamente diferentes y, por lo tanto, la implementación puede ser difícil de transferir a otro idioma. Pero la cuestión es que si te diviertes escribiendo una nueva aplicación para cerrar, entonces puede que te resulte interesante transferir conceptos e ideas que usaste a otro lenguaje conveniente. Puede ser divertido comparar diferentes idiomas y sus capacidades. Creo que su caso es perfecto para tales experimentos.
fuente
Ciertamente no está mal hacer programación en lenguajes "impopulares". ¿Por qué realmente te importa si son populares o no? Estoy totalmente de acuerdo con @quanticle en esto. Si Clojure u otro lenguaje no convencional es la mejor herramienta para el problema que está resolviendo, debe elegirlo.
No veo por qué el mantenimiento será un problema. Si aplica Unit, Integration, etc. Prueba y documenta su código, cualquier programador con interés en programación funcional podrá mantener su programa. En mi humilde opinión, el hecho de que sus colegas no se preocupen por Clojure no es un buen argumento para no usarlo, excepto si es una política de la empresa que debe respetar.
fuente
El hecho de que el programa continúe o no después de su partida no le preocupa en mi opinión. Puedes usar el lenguaje de programación para hacer algo que le guste a tu jefe, me parece bastante bueno. Preocuparse por la continuación es algo que su jefe debería hacer.
fuente
Organiza un tutorial o una sesión de entrenamiento. Si los miembros de su equipo no quieren actuar como profesionales y aumentar su conocimiento, especialmente si el programa se está volviendo más importante, está fuera de su alcance. En el peor de los casos, puede hablar con la gerencia y ellos tal vez puedan exigir este tipo de sesión de capacitación. Puede parecer un imbécil, pero al menos no será el único que debe mantener el programa. La otra opción es sugerir que se agregue al equipo un segundo programador que conozca clojure.
fuente