¿Dónde está la media de oro entre el monocultivo lingüístico y el policultivo? [cerrado]

7

Mi empresa ha estado utilizando Java (como lenguaje y plataforma) durante muchos años. Tenemos muchos productos que varían mucho en tamaño, propósito y complejidad. Sean cuales sean los requisitos, la respuesta es siempre la misma: Java. Esta postura obviamente tiene ventajas y desventajas. Además, no hay cambio de contexto entre las asignaciones de trabajo en diferentes proyectos, cada desarrollador en la empresa puede ser relativamente productivo en muchos proyectos; en el lado negativo, una pequeña herramienta podría terminar siendo "aplastada" por Hibernate. Por un lado, los entornos de empaquetado, despliegue y ejecución podrían estandarizarse; por otro lado, podemos perder la agilidad de la mente y perdernos las soluciones óptimas siempre "pensando en Java". Podría seguir y seguir y seguir.

La programación de Polyglot se ha vuelto bastante común en el pasado reciente, tanto como puedo observar. Los refranes como "herramienta adecuada para el trabajo" también suenan ruidosamente en mis oídos también. El deseo de abrirnos y exponernos a más "herramientas correctas" es bastante fuerte, pero ¿dónde está la trampa? Mejor aún, ¿dónde está la media de oro? Siempre es peligroso ir de un extremo a otro. Temo un día de despertarme en un incomprensible lío de una pila gigante de Java, Groovy, Python, Ruby, PHP, Scala, etc. con todas sus herramientas, marcos, servidores y filosofías correspondientes.

¿Tiene experiencia práctica trabajando en el policultivo de idiomas y plataformas durante al menos dos años? ¿Cuáles son tus principales observaciones? ¿De qué sigues entusiasmado y qué temes?

    
pregunta Yuriy Zubarev 25.03.2011 - 17:43

5 respuestas

3

Estábamos en una situación similar y agregamos otro idioma a la mezcla cuando lo que queríamos lograr no podía hacerse de manera práctica con el lenguaje existente.

Sin embargo, nos llevó años alcanzar ese punto.

Para extender la herramienta correcta para la metáfora del trabajo, podría ser mejor martillar un clavo con el mango de un destornillador en lugar de conducir a través de la ciudad a la tienda para comprar un martillo. Pero cuando necesitas cortar un árbol, es hora de ir a la tienda.

    
respondido por el DKnight 25.03.2011 - 18:23
2

Estuve en una empresa durante aproximadamente cuatro años, haciendo cosas pesadas en C ++. Después de aproximadamente un año, me asignaron a ejecutar la infraestructura de software (CVS y Gnats, principalmente), y terminé usando Perl extensivamente, además de lo que consideraba mi trabajo "real". También teníamos algunas bibliotecas escritas en C, pero eso tiene al menos alguna superposición con C ++.

No tuve ningún problema con ello. Sabía qué iba a ser C ++ y qué iba a ser Perl, y todos los demás también. La mayoría de nosotros sabíamos que Perl sabía que reemplazarme no iba a ser un problema.

Sugeriría que se usen diferentes idiomas para diferentes propósitos, por lo que generalmente no debería haber una pregunta sobre si usar C ++ o Perl. Para eso, es útil tener lenguajes claramente diferentes que son generalmente buenos para diferentes cosas.

    
respondido por el David Thornley 25.03.2011 - 18:14
1

Trabajamos con un conjunto estándar de herramientas:

  • Java - lenguaje general. Todas nuestras aplicaciones de soporte principales son aplicaciones web Java o servicios web.
  • RPG en el AS400 hace gran parte del acceso a la base de datos.
  • Visual Basic inicia nuestras compilaciones automáticas. No estoy muy familiarizado con cómo ha funcionado.
  • Los scripts de Ant hacen el trabajo de compilación.
  • Python (para el administrador de Websphere) realiza la implementación de scripts y la configuración del servidor.

Toda esta combinación se resolvió antes de comenzar a trabajar aquí, y por lo que sé, es óptimo para lo que hacemos. Funciona y todos lo entienden.

Sin embargo, diré que nuestros requisitos rara vez cambian, ya que se trata de aplicaciones internas de la empresa. Por lo tanto, no hay una necesidad real de buscar nuevas formas de hacer las cosas porque nuestras necesidades ya están cubiertas.

    
respondido por el Michael K 25.03.2011 - 18:11
1

¿Por qué no probar las aguas sin dar el salto?

Java, así como otros idiomas de VM (Virtual Machine) están evolucionando cada día más para desacoplar el idioma principal (Java) de su VM adjunta (JVM). En el caso de la JVM, hay muchos idiomas que ahora puede elegir que se pueden ejecutar junto con el código Java porque comparten una infraestructura subyacente común (la JVM).

Aquí hay una breve lista de unos pocos lenguajes JVM:

  • Jython (python)
  • Rhino (JavaScript)
  • Groovy (Scripting)
  • JRuby (Ruby)
  • Clojure (Functional Lisp)
  • Scala (orientado a objetos y funcional)
  • Kahlua (Lua)

etc ... Para ver una lista completa Lista de Wikipedia de JVM Languages .

El beneficio de tener un equipo de desarrolladores de Java es que la JVM se está extendiendo para ejecutar mucho más que el código Java. Así que puedes ejecutar Java, Python y JavaScript todos juntos.

Intente incorporar algunos Jython para los scripts de utilidades básicas. O algún Rhino para hacer JavaScript del lado del servidor. No hay mucho riesgo de inversión porque ya no necesariamente tiene que dirigirse a un idioma específico. Le dará a sus equipos espacio para practicar y ampliar su conjunto de habilidades sin romper sus aplicaciones.

Podría ser mejor omitir PHP y echar un vistazo a algunos de los frameworks de Python (pylons, django) si su compañía está pensando en ingresar al desarrollo web. El salto de desarrollo web será probablemente el más dramático. El desarrollo web es diferente ... Si bien algunos conceptos están mucho menos formalizados (aún se siente como el salvaje oeste), hay una restricción mucho más estricta en el estilo si está buscando una aplicación web eficiente. Además, las herramientas y los conceptos para optimizar sitios web son lot diferentes a los que usted esperaría en una aplicación de escritorio.

Microsoft tenía una gran ventaja en el mundo de las máquinas virtuales al lanzar inicialmente C #, VB y C ++ en la máquina virtual .NET, pero el mundo de Java se está recuperando muy rápidamente.

SideNote: Si tienes curiosidad, aquí hay una Lista de idiomas de .NET CLI .

    
respondido por el Evan Plaice 25.03.2011 - 20:13
0

En mi experiencia como consultor (> 5 años), encuentro que las organizaciones que se enfocan primero en habilidades y técnicas de desarrollo fundamentales, que no tienen en cuenta el idioma, tienen mucho éxito en sus proyectos de desarrollo. Los patrones de diseño, las técnicas de desarrollo, las metodologías ágiles, se aplican independientemente del lenguaje de implementación. Los patrones arquitectónicos como buses de mensajes, servicios web y patrones SOA son nuevamente aplicables en todos los proyectos. Integración continua, pruebas unitarias, comprobabilidad. Probablemente podría deambular por un tiempo más.

No se deben subestimar los beneficios de capacitar a los desarrolladores para que brinden las mejores herramientas cuando se entreguen soluciones. Los desarrolladores tienen la libertad de aplicar la mejor herramienta a un problema y aprovechar el pensamiento crítico cuando combinan tecnologías. Los desarrolladores felices suelen ser mejores productos y equipos más exitosos.

Dicho esto, también es necesario que se apliquen restricciones, especialmente para equipos menos maduros. He visto organizaciones con una mezcla de tecnologías inadecuadas, incomprendidas y dispares porque no había una guía de alto nivel ni restricciones para la libertad.

    
respondido por el Dave White 25.03.2011 - 19:15

Lea otras preguntas en las etiquetas