2009-02-21 24 views
6

He heredado un amplio portfolio web mal diseñado en mi trabajo. La mayoría de las páginas están escritas en Perl ya que la mayoría de los datos que se ingieren, procesan y muestran en el sitio vienen en forma de archivos planos que luego deben ser minuciosamente regexados y basados ​​en datos en nuestras bases de datos MySQL y Oracle.Entornos web de lenguaje mixto

Como el primer gerente capacitado en TI de este entorno, me estoy ocupando de eliminar los sitios web y establecer alguna estructura para el proceso de desarrollo. Una de las opciones que me han dado es elegir si continuar o no en Perl. Existe un gran talento interno para Java y PHP es bastante fácil de aprender. He considerado quitarles las riendas a los desarrolladores y dejarles elegir el idioma que quieran usar para sus páginas, pero parece que podría ser un problema si el chico que eligió PHP es golpeado por un autobús y nadie más puede arreglarlo.

Con el paso de los años, los programadores de Perl se vuelven cada vez más difíciles y la complejidad de mantener el código Perl heredado de los desarrolladores anteriores cuyo foco principal puede haber sido simplemente abrir una página es consumir muchos recursos. Otro administrador anterior (no informático) se centró más en la respuesta rápida y la gratificación inmediata de las páginas en lugar de asegurarse de que se realizara correctamente la primera vez (desde entonces ha sido promovido fuera de nuestra sucursal).

El servidor de producción es solaris. MySQL tiene la mayoría de nuestros datos, pero los nuevos proyectos han comenzado a usar Oracle cada vez más (para datos GIS). Los servidores web son universalmente Apache. Vivimos en una intranet desconectada de internet regular. Nuestro desarrollo se lleva a cabo de forma ágil e iterativa.

Cualquiera que sea el idioma elegido para avanzar, existen recursos para volver a capacitar al personal de desarrollo existente. No importa qué, los datos que entren en nuestro entorno tendrán que ser eliminados hasta la muerte, por lo que Perl no desaparecerá en el corto plazo. Mi pregunta a la comunidad es, ¿cuáles son los pros y los contras de los siguientes lenguajes para el entorno de desarrollo web definido anteriormente: Perl, PHP, Java, Python, e --introduzca su idioma favorito aquí--. Si tuviera que hacer todo de nuevo, ¿qué configuración de idioma habría elegido?

Ediciones y aclaraciones: Permítanme aclarar un poco sobre mi publicación original. No estoy tirando todo. Se me ha dado la oportunidad de ajustar el rumbo del barco a lo que creo que es un rumbo mejor. Incluso si elijo un nuevo idioma, el código Perl estará disponible por algún tiempo.

Hipotéticamente hablando, si elijo Assembly como mi nuevo idioma (jaja) tendré que acelerar los viejos desarrolladores, probablemente enviándolos a algunas clases básicas de ensamblaje. Las nuevas páginas/proyectos estarían en el nuevo idioma y las páginas/proyectos antiguos tendrían que jugar bien con las nuevas páginas/proyectos. Algunos podrían ser reescritos algún día en el nuevo idioma, algunos nunca podrán ser cambiados.

Lo que probablemente siempre será en Perl serán las secuencias de comandos de análisis que escribimos hace años para examinar y la información de la base de datos de los archivos planos. Pero está bien porque no interactúan con las páginas web, sino que se interconectan con la base de datos.

Gracias a todos por su contribución, hasta ahora ha sido muy útil.

Respuesta

13

Parece que su problema es más código heredado y metodología de desarrollo informal que el lenguaje per se. Entonces, si ya cuenta con desarrolladores de Perl en el personal, ¿por qué no comenzar a modernizar sus métodos y su base de códigos, en lugar de cambiar a un nuevo idioma y crear una base de código heterogénea?

Modern Perl ofrece mucho en términos de buenas prácticas y herramientas poderosas: la prueba se hace hincapié, con los Test::* módulos y WWW::Mechanize, la interacción de base de datos puede hacerse a través de llanura DBI, sino también utilizando módulos ORM como la excelente DBIx::Class, OO con Moose está ahora a la par con los idiomas más modernos, mod_perl le da acceso a una gran cantidad de poder dentro de Apache. También hay bastantes MVC frameworks para Perl. Uno que está recibiendo mucha atención es Catalyst.

Invierta en unas pocas copias de Perl Best Practices, traiga un entrenador adecuado para unas pocas clases sobre métodos modernos de desarrollo, y comience a cambiar la cultura de su grupo.

Y si tiene problemas para encontrar desarrolladores que ya sean competentes en Perl, siempre puede contratar buenas personas PHP y entrenarlas, eso no debería ser demasiado difícil. Al menos, su disposición a aprender un nuevo idioma sería una buena señal de su flexibilidad y voluntad de mejorar.

Siempre es tentador culpar el estado de su código en el idioma en que está escrito, pero en su caso no estoy seguro de que sea el caso. Lots of big companies parece que no tienen problemas para administrar grandes bases de código en Perl, la lista es larga, pero las principales compañías web están allí, junto con una serie de instituciones financieras.

+1

Catalyst también es ideal para trabajos web que necesitan unir bits heredados. Cosas como Catalyst :: Controller :: WrapCGI y Catalyst :: View :: PHP están diseñadas específicamente para proporcionar este tipo de pegamento. – singingfish

0

Creo que elegir un solo idioma es la clave y si su base de datos es principalmente MySQL, entonces PHP parece ser la opción obvia. Naturalmente funciona con su base de datos, es de código abierto y hay mucha documentación, código fuente, no requiere compilación, etc.

Las personas entran y salen de las posiciones y cualquier sitio web evolucionará con el tiempo.Si tiene la capacidad de establecer algunas pautas y reglas, elegiría algo que sea indulgente, común y fácil (er) de aprender.

También sugeriría escribirlo para que la gente en el futuro no reinvente la rueda.

+1

Cualquier lenguaje moderno funciona con mysql, por lo que elegir PHP para el soporte de mysql es una razón tonta. No digo que no debas elegir PHP, solo que esta no es una buena razón para hacerlo. – mpeters

+1

mpeters tiene razón, MySQL solo no es una buena razón. Se podría argumentar que pasar a una pila LAMP más estándar facilitaría la búsqueda de desarrolladores, pero los programadores JAVA también son fáciles de encontrar. Encontrar buenos desarrolladores para cualquier idioma seguirá siendo un problema. – acrosman

1

Si regex es importante, elegiría un idioma con buen soporte.

Si utiliza Java, no podrá copiar simplemente pegue su código de expresiones regulares del código perl porque las barras deben escaparse. Entonces votaría en contra de Java.

No estoy lo suficientemente familiarizado con php como para conocer sus características regex, pero teniendo en cuenta tus opciones iría por python. Puede crear un código más limpio en Python.

¿Ruby también sería una opción? También tiene un buen perl como el soporte de expresiones regulares y los rieles son compatibles con el desarrollo ágil de la web al instante.

1

primero déjenme señalar que MySQL's spatial extensions work with GIS.

En segundo lugar, si tiene un grupo de programadores de Perl que necesitarán ork en los nuevos sitios, la mejor opción es elegir algo que no les resulte demasiado difícil entender. El "algo" obvio allí es PHP. Cuando aprendí PHP, hice Perl hace algunos años y recogí PHP en muy poco tiempo.

Cambiar a algo como Java o .Net (o incluso Ruby on Rails) sería un cambio mucho más dramático en el diseño.

Además, con los servidores Apache ya tiene configurado su entorno y es probable que pueda organizar cualquier desarrollo como una mezcla de Perl y PHP con bastante facilidad.

En cuanto a la última parte de su pregunta: ¿en qué lo haría si pudiera volver a hacerlo? Para mí, esa es una pregunta separada y básicamente irrelevante. El hecho es que no estás retrocediendo y volviendo a empezar, solo estás ... comenzando de nuevo. Por lo tanto, el soporte, la transición, el desarrollo de habilidades y todos esos otros problemas son mucho más importantes que cualquier pregunta hipotética sobre qué elegirías en un mundo perfecto si todas las demás cosas fueran iguales.

Me encanta o lo odio, PHP es popular y no va a ninguna parte en el corto plazo. No es muy difícil encontrar personas con talento para hacerlo (bueno, la dificultad es filtrarlas de los guionistas de autodidactas cowboy que creen que pueden codificar pero no pueden) y no está muy lejos de Perl basado en la web.

5

Me gustaría traer a alguien que es muy bueno en Perl, al menos para mirar el diseño actual. Podrían decirle cuán malo es realmente el código Perl, y lo que debe hacerse para ponerlo en buen estado.

En ese momento empezaría a considerar mis opciones. Si el código Perl es rescatable, más que excelente, contrata a alguien competente en Perl. También capacite a parte de su personal existente para ayudar con la base de códigos existente. Si no tiene a alguien competente en Perl a cargo del código Perl, su código base puede empeorar aún más de lo que ya es.

Solo si estaba en una forma terrible, ¿consideraría abandonarlo para otro idioma? Lo que es ese lenguaje, eso es algo sobre lo que tendrás que pensar tú mismo.

p.s. Soy un poco parcial, prefiero Perl

1

Si tus desarrolladores son buenos, podrán manejar cualquier cosa que se les arroje. Decidir qué idioma usar es una posición estratégica bastante complicada, pero te recomiendo que pienses detenidamente antes de presentar MÁS (es decir, no).

A menos que, por supuesto, hay algo que no puede hacer (o no puede hacer) con lo que tiene.