jordisan.net blog: sobre lo humano, lo divino... y lo técnico: desarrollo
Programar y escribir para la web: no tan diferentes
Mayo 29th, 2008 - [Enlace local]
Leo un artículo en el blog de Ricardo Galli titulado Tratar al código fuente como un ensayo que me ha vuelto a crear una conexión entre dos temas que en principio parecen poco relacionados pero de los que se puede extraer alguna enseñanza común; en este caso, la programación y la redacción de textos para la web.
Ricardo habla de un libro (Beautiful Code) y, más concretamente, de un capítulo titulado como su artículo: Treating Code As an Essay. En él se señala la similitud entre el código fuente de un programa y un ensayo, en el sentido de que, si bien en ambos casos su propósito es lo fundamental ("¿de qué se trata?"; "¿qué hace?"), no debe descuidarse el estilo en que están escritos, ya que no sirven de nada si no pueden ser interpretados por seres humanos.
A continuación rescata algunas reglas generales para escribir código de calidad:
- Brevedad: La brevedad es una virtud, definitivamente hay un coste de lectura para el ojo humano, el código debe eliminar la información redundante
- Familiaridad: Las personas son más conservadoras de lo que pensamos. Las curvas de apredizaje elevadas creean estrés y reducen productividad. Un lenguaje no debe obligar a los progamadores a trabajar con conceptos nuevos y complejos. No ser demasiado innovador es también una ayuda para el “código bello”.
- Simplicidad: Si un programa es complicado de entender no puede tener belleza.
- Separar bloques: Separar los bloques lógicos en cada función, así se facilita la lectura más rápida y en “diagonal”.
- etc.
Inmediatamente me han venido a la memoria las reglas que da Jakob Nielsen para escribir para la web; de hecho, algunos de los puntos son prácticamente idénticos: simplicidad, brevedad, lenguaje familiar, etc. Y es que, pensándolo un poco, las situaciones no son tan diferentes:
- Leer sobre un monitor (más cansado que sobre un papel).
- No se lee completamente el contenido, sino que se "escanea", ya sea buscando alguna información concreta, ya sea haciéndose una impresión general.
- El contenido puede estar disperso en diferentes ficheros/páginas.
Por supuesto, hay diferencias: un programa debe ser, al mismo tiempo, interpretado correctamente por una máquina, y ser inteligible para los programadores. Por otro lado, una página web, en principio, sólo tiene como público objetivo a los usuarios del portal; aunque, indirectamente, también puede ser interpretada por máquinas, i.e., los bots de indexación de buscadores. Es más: algunas páginas son bastante menos inteligibles que muchos códigos fuente.
En cualquier caso, la idea está clara: no debemos perder de vista que es fundamental, en ambos casos, que los programas/textos que creamos deben poder ser interpretados con claridad y sencillez por humanos.
¿Podemos llevar más allá la analogía? Algunas ideas que se me ocurren:
- Igual que hay estudios sobre rendimiento de lectura en páginas web, ¿existirán estudios sobre rendimiento de lectura de código? ¿Por qué no aplicar un eye-tracker a un programador estudiando el fuente de un programa? Podríamos comparar rendimientos entre diferentes estilos de programación, lenguajes, coloreado de sintaxis, etc.
- ¿Cómo podemos usar el estilo de pirámide invertida en un programa? ¿Tiene sentido hacerlo?
- ¿Podríamos aplicar alguna de las técnicas incluidas en los editores de código fuente y en los IDE a los editores de texto a la escritura para la web? Por ejemplo, ¿nos serviría una función que resaltara todas las repeticiones de una misma palabra en el texto para detectar qué hemos dicho anteriormente, o si la estamos utilizando demasiado? ¿Y si pudiéramos incluir fácilmente comentarios en el texto, visibles para nosotros como autores, pero no para los lectores en general?
» Leer más, comentarios, etc...
Bloggingg
Ruby, Python, Groovy y compañía nunca reemplazarán a Java
Mayo 29th, 2008 - [Enlace local]
Últimamente, día sí y día también no cesan en la web artículos donde pronostican la muerte de Java para ser reemplazado por cualquiera de los nuevos lenguajes de moda. Y por fin encuentro un artículo (en inglés) 13 reasons why Ruby, Python and the gang will push Java to die… of old age donde puedes encontrar 13 razones contundentes donde afirman todo lo contrario. El autor se documenta a partir de varios índices de popularidad: TIOBE Index y langpop.com. Coincido en la mayoría de puntos con el autor, pero aquí voy a describir por encima sólo las que me parecen más importantes.
Para empezar vayamos analizando la siguiente gráfica que mide la popularidad de los lenguajes (mayo 2008):
Lo que más llama la atención, además de que Java sea el primero, es que los lenguajes con una sintaxis parecida a Java: C, C++, Java y C# forman el 49,915% de popularidad, casi la mitad que todo el resto de lenguajes. De aquí podemos obtener la primera razón:
1) Los programadores que quieran cambiar de lenguaje, tendrán que hacer más esfuerzo al aprender un lenguaje con una sintaxis muy diferente a la de Java, porque, además de la sintaxis, tienen conceptos también bastantes diferentes.
Si echamos un vistazo al grupo de los candidatos: Python + Ruby + Lisp/Scheme + Lua + SmallTalk + Haskell + Groovy + Erlang + Caml + Scala = 8,985 %. Podemos concluir la segunda razón:
2)Es una cifra insignificante comparada con la primera, además, estos 10 lenguajes hacen mucho ruido, son muchos y los programadores no tenemos tiempo para evaluarlos todos y seguir de cerca su evolución. Si quisiésemos reemplazar a Java por uno de estos diez, ¿cuál elegirías?
Sigamos analizando otra gráfica: la tendencia de popularidad de los últimos 7 años:

En un vistazo rápido podemos ver una tendencia al alta de la popularidad general de todos los lenguajes, hay algunas variaciones temporales, pero a la larga, nada cambia significativamente.
Razón número 3: No hay presión sobre los programadores para que cambien de lenguaje, el mercado ya es estable, los lenguajes que ya existen funcionan aceptablemente bien para lo que fueron diseñados, así que los jefes de proyecto no tienen porqué obligar a los programadores a aprender nuevos lenguajes. Para mí es la razón la más importante de todas.
Otra gráfica interesante es la evolución en las tendencias de trabajo:

Razón número 4: No hay un gran incentivo para cambiar de trabajo, aprender un nuevo lenguaje no tiene porqué traducirse en un aumento de sueldo, al menos, a corto plazo.
Otro hecho importante que hay que tener en cuenta es que los lenguajes populares deben de tener un éxito relativamente rápido, si los programadores ven una evolución muy lenta sobre un lenguaje con varios años de vida, entonces la conclusión es que no merece la pena aprender ese lenguaje, si no ha tenido éxito, por algo será.
Como curiosidad, aquí muestro una lista de los lenguajes pretendientes y sus años de nacimiento:
Ruby (mid 1990s), Python (1991), Lisp (1958), Scheme (1970s), Lua (1993), Smalltalk (1969-1980), Haskell (1990), Erlang (1987), Caml (1985), OCaml (1996), Groovy (2003), Scala (2003)
y aquí la lista con los lenguajes más populares y sus años de nacimiento: C (1972), C++ (1983), Java (1995), C# (2001), BASIC (1964), Pascal (1970), FORTRAN (1957), Ada (1983), COBOL (1959).
La conclusión que saco de aquí es que estos lenguajes han perdido ya el tren, si de verdad desbancarían a Java, ya lo tendrían que haber hecho.
Para terminar, mi conclusión final es que Java será remplazado por un lenguaje que herede todo lo que tenga Java pero que corrija los fallos que tiene Java. Por ejemplo, Java nació a partir de los problemas que los programadores sufrían con C y C++ (complejidad y gestión de memoria). Al evitarle al programador tener que gestionar la memoria, los programadores se evitaron un montón de rompederos de cabeza corrigiendo bugs generados por los memory leaks.
Que quede claro que no desaconsejo nunca aprender o usar alguno de estos lenguajes, de hecho intento seguir la evolución y aprender alguno de ellos (en concreto Ruby y Python), me parecen muy interesantes algunas características y peculiaridades de las que Java podría incorporar.
» Leer más, comentarios, etc...
Blog de Sergio Álvarez Fernández
Wordpress 5 años
Mayo 28th, 2008 - [Enlace local]
Leo en elpaís, que el popular sistema de blogs WordPress ha cumplido ya, ni más ni menos, que 5 años. Todo un lustro desde que sacaron su primera versión en el 27 de mayo del 2003.

Como todo buen cumpleaños que se precie, para celebrarlo han organizado una fiesta.
Saludos!
» Leer más, comentarios, etc...
PHPBSD.net » webmaster
Primera edición de la Barcelona PHP Workshop
Mayo 26th, 2008 - [Enlace local]
Con los del grupo de programadores PHP de Barcelona ya la hemos vuelto a liar con la realización de nuestro próximo evento, la primera edición de la Barcelona PHP Workshop que se celebrará el siguiente 7 de Junio. A diferencia de la pasada Barcelona PHP Conference que organizamos este es un nuevo tipo de evento totalmente enfocado a talleres prácticos de programación en PHP.
A pesar del éxito de la pasada conference mucha gente se quedó con las ganas de practicar más y escuchar menos, pues bien, si fuiste uno de estos esta es tu oportunidad :^)
Serán un total de 6 talleres de programación en PHP ocupando todo el sábado donde tanto las temáticas como los ejercicios serán de lo más variado:
- Construir una pequeña red social con Symfony.
- Trabajar con motores de workflow.
- Internacionalizar proyectos PHP.
- Usar AJAX para modernizar tus páginas.
- Proteger tu sites contra XSS unido a un pequeño concurso de seguridad.
- Como usar VIM como una potente IDE para el desarrollo en PHP.
Como añadido gracias a nuestros patrocinadores podremos disfrutar de desayuno, comida, bebida, algunos regalos, etc.
Puedes visitar la página del evento para revisar la agenda completa e inscribirte por tan sólo 5 euros:
http://phpbarcelona.org/eventos/primera-barcelona-php-workshop
Tenemos un total de 200 plazas disponibles y en el momento de escribir este post vamos por los 154 asistentes!
Entradas relacionadas:
- PHP Barcelona Conference 2010
- Conferencia internacional de PHP en Barcelona
- Grupo de programadores PHP de Barcelona
» Leer más, comentarios, etc...
Blog de Sergio Álvarez Fernández
HippoHX
Mayo 11th, 2008 - [Enlace local]
Llega de la mano de Zarate un nuevo proyecto para hacer aplicaciones de escritorio en Flash. Cómo el mismo dice “Técnicamente: APIs + herramientas encima de SWHX“.

Podéis estar atentos a la web del proyecto, o al propio blog de Zarate donde de momento, además de descargarlo, podeís ojear las FAQs y los tutoriales.
Un proyecto a tener en cuenta, viniendo de quien viene.
Saludos!
» Leer más, comentarios, etc...
knocte :: MonoTema
A new community devolopment model?
Mayo 10th, 2008 - [Enlace local]
Long story (Go to the short story if you're too lazy to read a lot.)Some time ago I wrote about the usual confusion between the terms "commercial" and "propietary". FLOSS is commercial software because it's not only driven by the generosity of some developers with their spare time. A FLOSS developer can be paid by a
» Leer más, comentarios, etc...
knocte :: MonoTema
Now Gnash & SWFdec are to Flash what Mono is to .NET
Mayo 6th, 2008 - [Enlace local]
And we have to thank the cool Adobe's Open Screen Project for this. Why is this positive (extracted originally from here)?1) Projects that seek to implement this standard (like Gnash), won't have to do reverse engineering anymore (unless the spec is not enough for some things, or the official Adobe software contradicts the specs because of bugs/typos).2) These projects will provide