Las virtudes del scripting

martes, 14 de agosto de 2007

En principio, pensaba titular este artículo "Lo que un programador de Java no sabe y uno de PHP si", pero era demasiado largo...

Antecedentes: Poco antes de empezar a programar web, lo hacía con Delphi en arquitectura cliente/servidor contra Oracle. Antes había programado en C, Pascal, Clipper y Cobol para DOS. Por entonces pensaba que programar en web era poco más o menos diseñar paginas web y programar algún script (algo sencillito para hacer un efectito). Después de siete años programando web con PHP mi opinión sobre los lenguajes de scripting ha cambiado radicalmente.

Antes de empezar, es imporante señalar la conveniencia de conocer varios lenguajes. Como ya cité anteriormente, según The Pragmatic Programmer,

Aprende al menos un nuevo lenguaje [de programación] cada año. Cada lenguaje resuelve el mismo problema de una manera distinta. Aprendiendo diferentes soluciones, consigues abrir tus ideas y te ayuda a desbloquearte.

¿Que ventajas ofrece un lenguaje de scripting como PHP sobre uno que no lo es como Java? Muchas, sobre todo en desarrollos complejos con muchas modificaciones.

  • El hecho de poseer un ciclo de desarrollo sin compilación, como todos los lenguajes interpretados, se aprovecha a la hora de desarrollar prototipos o depurar. Con sólo un editor de texto, cualquiera puede hacer un cambio sobre-la-marcha y el usuario da su visto bueno al instante. Pero aún podemos pedir más, e incluir el editor en la propia aplicación (los usuarios de Wordpress pueden dar fe de ello).
  • El código fuente siempre está disponible. Si a estas alturas alguien piensa que esto es una desventaja, debería plantearse repasar las tendencias que han dominado el mundo de la informática en los últimos 10 años
  • Los programas pueden reescribir partes de su código según determinadas condiciones. Esta posibilidad es mucho más complicada en lenguajes compilados.
  • Por regla general la mayoría de los lenguajes de scripting son más fáciles de entender (hecha la excepción de PERL) que los lenguajes compilados.
  • La flexibilidad otorgada por el tipado débil y el alto nivel de las funciones permiten a los programas desarrollados en lenguajes de script ocupar casi siempre menos lineas que los correspondientes en lenguajes compilados. Esto facilita aplicar la máxima KISS (Mantenlo Simple Estupido) al desarrollo.
  • Uso de scripting desde lenguajes compilados: En una de mis aplicaciones en Delphi, después de la cuarta o quinta modificación sobre el orden de una consulta o la inclusión de uno u otro campo en un informe, saqué todas las consultas SQL y las guardé en una carpeta. La siguiente vez que me pidieron una modificación les mandé por correo el archivo .SQL y lo instaló el cliente. Como solución mas profesional, existen extensiones que permiten utilizar lenguajes interpretados (como LISP) desde dentro de los lenguajes compilados, ganando así todas las ventajas de las que estamos hablando. Otro ejemplo de esta integración es el módulo de PHP para Apache (mas sencillo imposible).
  • Uso de lenguajes compilados desde scripting: desde PHP existe la posibilidad de desarrollar extensiones en C o C++, así como de utilizar clases de Java.
  • Rendimiento: Desde siempre se ha acusado a los lenguajes interpretados de lentos. El caso de Java (tambien COBOL) es curioso porque de alguna manera la máquina virtual "interpreta" un codigo optimizado, así que se situa a medio camino. La falta de rendimiento puede valer para el BASIC de los 80, pero desde hace tiempo los interpretes utilizan técnicas de mejora del proceso de interpretación, de manera que se genere un codigo optimizado intermedio cuando es necesario y no sea necesario interpretar el código cada vez. Si a esto le sumamos las tecnologias de caché de compilación, las diferencias se reducen considerablemente.

Para aligerar en trabajo en lenguajes compilados se hace necesario un entorno de desarrollo potente, que incluya herramientas para la depuración. En un programa web en PHP, el entorno es el servidor web.