miércoles, mayo 14, 2008

[Python-es] Preguntas de iniciado

Hay un hilo actual en python-es bastante interesante. Tengo que releerlo con calma, pero debido a un comentario de hoy, me veo en la necesidad de enlazarlo y copiar el comentario. Me ha paracido interesante.

"La preocupación por los supuestos peligros producto de la flexibilidad
de los lenguajes dinámicos es un mito sostenido las empresas de
software que pretenden convertir el arte de la programación en una
industria de producción en masa.

Pero tal y como señala Paul Graham
(http://www.paulgraham.com/knuth.html), programar es un arte. Y cuando
los programadores entienden esto, en contra de las ansias de
beneficios rápidos y sistemáticos de los accionistas de las empresas,
logran disfrutar su trabajo y hacerlo más rápido y con mayor calidad.

El problema es que los programadores artistas no tienen influencia en
los pensum de estudio de las universidades como si lo tienen las
grandes empresas como Sun y Microsoft, haciendo creer a la gente que
cuestiones ridículas como los getters y setter de Java son buenas
prácticas.

Es llamativo como profesores universitarios que no han desarrollado un
sistema completo enseñan como si fuese una religión los mecanismos de
encapsulación de un modo que entorpece terriblemente la productividad
de los programadores.

Python es un excelente lenguaje programación orientada a objetos, como
también lo es Ruby, y representan un verdadero salto evolutivo en
comparación con despropósitos como C++ y Java. Lo único que oculta esa
verdad es el enorme poder econñomico manifestado a travñes de
estrategia de lobby que siga permeando tanto al academia como a las
empresas."

La web enlazada paulgraham.com merece echarle una visita.

martes, mayo 06, 2008

Paper a leer

Estoy leyendo un 'paper' que todo Arquitecto Software debería leer: Architectural Styles and the Design of Network-based Software Architectures.

Se trata de la tesis doctoral de Roy Fielding.

miércoles, abril 23, 2008

Joomla

Hoy creo lo escuché por primera vez: Joomla [wiki] [otra][articulo].
Por lo visto es un CMS open source que están usando en yell.
En la wikipedia tienen un directorio de CMS open source, y una lista de CMS.

Desarrollados python tenemos:

jueves, abril 17, 2008

Java World


Que mundillo este de los Javeros... Tan lleno de siglas. Mundo en el que yo mas o menos me he mantenido al margen.

Tengo que reconocer que no me apasiona el lenguaje, ya que cuando surgió yo era muy de C++ y eso marca... Jeje.
Sin embargo el que ahora me apasiona es Python. Curioso... ¿Porque? Porque Python está mucho mas alejado de C++ que Java. Java es como que se queda a medio camino...
Mira si dejas ya un lenguaje como C++, lo dejas con todas las consecuencias. Eso si, está bien que apareciese Java y que exista. Tiene un nicho claro.

Hace tiempo estuve trasteando un poco con Java y CORBA, y realmente respecto a manejar CORBA con C++ es una gozada. Pero tras conocer python y volver a tocarlo, tengo mas fundamentos para ver que realmente se queda a medio camino. Hay que teclear mucho...

Un lenguaje como Python también tiene sus desventajas, pero para desarrolladores digamos 'avezados', que hagan buen uso de él, es una gozada.

Bueno... tras esta introducción a continuar con el típico post mio de recopilar enlaces que traten de un tema determinado...
Post que claramente tiene su origen en el curso que estoy haciendo... que me está sirviendo y mucho para refrescar estos temas.
Bueno al lio...

El curso que estoy haciendo es una introducción a J2EE. Bueno y ni siquiera eso, ya que que se quedan fuera los EJBs, u Enterprise Java Beans (que no confundir con los Java Beans). O los WebServices (esto ya si que es un cristo...), por mencionar un par de cosas. Vamos... que vemos solo parte realmente web, la que se ejecutarça en el servidor web.



Los EJBs son objetos distribuidos, mientras los Java Beans son objetos java reutilizables que deben implementar un determinado interfaz.

¿Entonces que es lo que vemos en el curso? Pues básicamente Servlets (que sería el equivalente a los Applets en un navegador, pero en el servidor) y JSPs . Bueno también las TagsLibs, y lo que de tiempo al final. Parece poco, pero es muy practico y ya se sabe... la practica lleva tiempo...

Sobre los JSPs... Los JSPs es una tecnología que te facilita la generación de Servlets (lo que se genera, dinámicamente, es un Servlet). Te facilita la integración de codigo Java (o no Java) con otro contenido (típicamente html). Vamos... es como si fuera una especie de template.

Como herramientas usamos.... adivina, adivinanza... Tomcat, Apache, y Eclipse.
Si usasemos EJBs ya no serviría Tomcat, ya que Tomcat sólo un contenedor de Servlets. Necesitaríamos un servidor de apliaciones, y seguramente habríamos usado JBoss, que es posiblemente el mas extendido.

Aunque los Servlets y las JSPs es la base del desarrollo web en Java, la tendencia es a usarlos poco directamente. La gente suele usar frameworks, siendo el mas oido struts (que es una implementación del patrón MVC).

Los frameworsks también tienen sus peros; siendo el principal el que mientras las cosas van bien, todos contentos, pero cuando van mal... a ver quien es el guapo que pilla que es lo que va mal.
Pero claro... como estos javeros lo que no quieren es tirar lineas de código... ;).

Contra esta tendencia a la complejidad y embarullar todo un poco han surgido cosillas como los POJO. También como reacción a lenguajes que vienen pisando fuerte: python y ruby.

Ya sobre como se da el curso en si...
Pues está bastante bien. Teoría la justa, la necesaria; y a practicar, que es como realmente se aprende.
Me preguntaba el cheriff si lo que estabamos viendo era la Pet Store... ¡Pues no! Estamos integrando una aplicacioncilla superchorra que se ha currado el profe. Y cuando digo integrando es realmente eso: nos dedicamos a montar la 'cola' entre el diseño web y la capa de negocio. Ambas cosas ya las tenemos hechas.

En Java BluePrints [wiki], aparte de la Pet Store, hay otra aplicación demo, la Java Adventure Builder Reference application; pero que no es tan popular. Los downloads.
Ummmmm, habrá que hacer una Python Pet Store ;)...

Y con esto y un bizcocho hasta mañana a las ocho (nunca mejor dicho).

miércoles, abril 16, 2008

Mas sobre PHP

Continuando un post anterior. Y tras este empape en tecnología web, no podia faltar leer algo mas sobre PHP.

No ya sobre como es el lenguaje, sino sobre su posición frente otras alternativas. Resumiendo:

  • PHP: es el lider en muchos sitios populares. Se podría decir que es el lider a desbancar. El que debería escoger alguien que quiera montare algo web, sin experiencia en desarrollo.
  • Java: gracias a la gran labor comercial que se ha hecho con él tiene un nicho enorme. Tiene ventajas sobre PHP, a cambio de complejidad. Este le gustaría mas a un Ingeniero Software, por el lenguaje y framework en si. Si ya estudiamos otros temas... puede que no. Los desarrollos son lentos y complejos. Un Ingeniero con PHP debería hacer las cosas tan correctamente como con Java, sólo necesitaría metodoloría.
  • RoR: Nueva alternativa. Le gusta a los Javeros.
  • Python: ¿tiene futuro? Si lo tiene será por el lenguaje en sí.
El nicho que debería ocupar python sería el que tiene Java ahora mismo, pero metiendose incluso en el nicho de PHP. ¿Será esto posible? Dificil lo tiene.
Por lo que he podido leer PHP está muy fuertemente afianzado. Bueno a los links... Vía barrapunto he leido unos artículos interesantes:

Parseando html

Hace tiempo estuvimos decidiendo que parser usar, para procesar el html en mi proyecto actual. En su momento fue una labor nada sencilla. Había dos requisitos básicos: tenía que ser rápido y se tenía que tragar html defectuoso. El ganador fue libxml2.

Hoy me he encontrado un blog muy interesante, el de Ian Bicking. En su blog tiene un artículo reciente sobre el parseo de html. En dicho artículo llega a la conclusión de que el mejor parser es lxml.

Llega a la misma conclusión que llegué yo, pero bajo unos requerimientos diferentes.

Sería interesante probar cuanto tiempo ganamos usando libxml2 y nuestras propias estructuras de datos frente a usar directamente lxml.

martes, abril 15, 2008

Documentando código

En el blog ya puse alguna mas entrada sobre documentación de código, al menos para python.
He visto en la wikipedia que tienen una comparativa de generadores de documentación.

BDs libres

El otro día comentaba sobre BDs para almacenar pares de datos.
Para completar ese post ahí va uno para reseñar algunas de las BDs que disponemos for free:

La diferencia entre SQLite y las otras dos, es que las otras con sistemas cliente-servidor y SQLite es una libreria.
Con todo lo reseñados ya tenemos un abanico lo suficientemente amplio para escoger la solución que mas nos convenga... ¿no?

viernes, abril 11, 2008

Web framewoks



Este post viene por mi inquietud al respecto por varios motivos:

  • Me gustaría hacer algo en la web
  • Voy a dar un curso sobre J2EE. Realmente no me interesa NADA todo lo que tenga que ver con Java, pero si lo considero educativo. Tengo que aprovechar que dadas las circunstacias del proyecto ahora puedo... Ademas en mi proyecto actual si tenemos un servicio web montado con tecnología J2EE.
  • Ayer JJ tras comentarle sobre lo de google, me volvió a hablar de RoR.


Si nunca has desarrollado para web (como yo) y tienes la libertad absoluta para hacerla, ¿con que lenguaje y framework hacerlo? La verdad... ambas cosas están relacionadas.
Empezando con el lenguaje, ¿que usar? php, ruby, java, perl, python, ...
Luego para cada lenguaje puedes disponer de varios frameworks, para liar mas la cosa...

Lo que si parece estar claro es que el dominante en los sitios populares es php.
Otra cosa curiosa es que los desarrolladores de Java tienen predilección por ruby y su RoR (Ruby on Rails). Como en este caso JJ.

Sobre python, entre los númerosos frameworks (a ver si encuentro un artículo bueno que los compare) que tiene el que parece está teniendo bastante tirón es django.
Sobre python no voy a profundizar, ya que será motivo para otro post.

Mi curiosidad se centra en RoR. A ver que hay detrás. Entonces que mejor que echar un vistazo a lo que hay por la red:


Notas finales:
  • Al buscar la imagen, encontré esta página, que compara también php, java y ruby.
  • Estas comparaciones hay que tomarlas con recelo ya que en muchos casos no son objetivas.
  • Visto lo visto, como que paso ni de mirar mas fondo RoR.