Primer día

05dic09

Hay un primer día para todo lo que empieza…

Para participar con el PureJS en el IV Concurso Universitario de Software Libre es necesario cumplir con dos trámites: alta en la forja RedIris y alta de un blog en WordPress. Para darme de alta en la forja, era necesario que utilizase una cuenta de correo de alguna entidad adscrita a RedIris, la UNED en mi caso (así que tenía correo de la UNED…) Ahora sólo queda esperar las 48h esas que dicen que tardan en dar de alta el proyecto.

Mientras esperamos, te puedo ir contando la historia del PureJS ;-)

PureJS no es un proyecto nuevo. Todo empezó un día en el que uno de mis varios jefes me comentó que, en un par de meses, íbamos a necesitar un grid editable, tipo Excel, que funcionase desde el navegador, y que no fuera un ActiveX. Mi encargo era sencillamente investigar el tema, “darle una vuelta”.

Componentes “tipo Excel” de cliente, hay muchos por ahí, algunos muy buenos. La investigación estaba siendo sencilla, pero me distraje… pensé ¿y si lo hago yo?

Programar en Javascript es algo que mucha gente odia (a mí me encanta). Es un lenguaje casi sin reglas y, por ello, extraordinariamente flexible. Lo malo es que, al igual que pasaba (¿aún pasa?) con Visual Basic, lo más fácil es programar mal. Por más que uno se aplique, el código queda generalmente farragoso, difícil de mantener.

Conclusión: la primera versión del componente eran unas trescientas líneas que en aquel momento entendía, pero ¿sería capaz de recordar cómo funciona eso después de un mes? No, ni de broma.

Una de las navajas suízas de la programación es el “divide y vencerás”. En Javascript esto se consigue refactorizando funciones grandes en funciones más pequeñas, haciéndo el código más fácil de entender. Era una opción.

La solución en C++, C# o Java pasa por crear jerarquías de clases. Cada componente encapsula unas funcionalidades que son extendidas por un componente superior. En lugar de aplicar el “divide y vencerás” al código, se aplica a los conceptos.

Desafortunadamente, Javascript no es un lenguaje orientado a objetos, sino basado en objetos. No implementa el paradigma OOP. Existen algunas alternativas para “simular” la OOP en Javascript [Nota: No me refiero a los frameworks de desarrollo, sino a los remedios caseros que aparecen en los manuales] , utilizando las funciones objeto, prototipos y extensión de prototipos. Pero tienen varios problemas:

  • El código no se clarifica, más bien se complica.
  • La herencia por prototipos es ineficiente en memoria, ya que copia el objeto heredado, en lugar de reusarlo.
  • Sobrecarga de métodos muy limitada, y bastante impredecible.

Pero me daba la impresión de que estos problemas eran solucionables. Desarrollé una pequeña librería y pasé un par de semanas puliéndola, y resolví ponerla a prueba haciendo una jerarquía de clases para mi grid editable, cosa que hice en apenas dos tardes.

Al acabar el experimento, el código era sorprendentemente pequeño y claro. Me pregunté, “¿podrás entenderlo dentro de un més?” ¡Qué dices! ¡Por supuesto que sí!

Me gustó tanto el resultado que le puse nombre: “PureJS”, y decidi seguir desarrollándolo hasta convertirlo en un framework completo. Y ahí finaliza el principio.

Ya han pasado unos meses, y hay muchas cosas nuevas respecto a aquella primera versión… ¡pero lo mejor está por venir!



4 respuestas a “Primer día”

  1. 1 Miguel A. Guillen

    Me encanta el proyecto, el uso de este framework creo que va ser brutal ya que su estilo es muy limpio, elegante y habitual.

    Congratulations!

  2. 3 John Doe

    Tú conoces Prototype, MooTools, y todos estos frameworks… ¿no?
    Vamos, lo digo porque he utilizado mucho MooTools, y programado OOP sin problema alguno, y si MooTools no es eficiente… apaga y vámosnos. Así que no veo yo el problema con la OOP…
    Supongo que ya me enteraré cuando lo detalles más :) ¡Suerte!

    • El problema con la OOP es, precisamente, que necesitas un framework.

      Javascript no la implementa de serie, y hay que recurrir a “truquillos” de código. Es a esto a lo que me refiero cuando digo “existen algunas alternativas para simular la OOP en Javascript”, no me refiero a los frameworks (voy ahora mismo a editar la entrada para corregir eso). Las librerías existentes son realmente buenas en sus ámbitos de dominio.

      Nota para mí mismo: escribir una entrada que se titule “¿por qué otro framework más?”


Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s


Seguir

Get every new post delivered to your Inbox.