Entre tazas y pingüinos
Blog personal sobre mis experiencias en Java, Linux y algún otro desliz esporádico.
25 julio 2009
Google Waves ...
No pretendo repetir toda la información que ya anda dando vuelta por Internet, ni tampoco quiero parafrasear a todos las personas que ya han hablado sobre el tema. Mi intención es simplemente expresar mi humilde opinión sobre el tema.
Me tomé el tiempo de ver la presentación completa (link al final). Las sensaciones que me quedan son varias y paso a enumerarlas a continuación.
En primer lugar, si Waves hace todo lo que en la presentación mostraron y anunciaron, quedará demostrado el poder de GWT en aplicaciones web, tema que ha sido muy cuestionado. Por si no lo conocen, GWT es un framework de Google que permite desarrollar aplicaciones web en Java, centrándote en el desarrollo de la interfaz y no en la compatibilidad con los distintos navegadores.
Otro punto que me gustó, es que lo han desarrollado bajo una especificación completamente abierta y su implementación ha sido licenciada bajo Open Source (habría que ver cual de todas ellas). Google ha sido muy criticado ya que viene "monopolizando" muchas áreas de la web y muchos lo señalan como el nuevo Microsoft. Con la actitud de liberar tanto la especificación como la implementación de Waves, le han tapado la boca a muchas personas (y aplaudo fervientemente esta decisión).
Google ha demostrado una vez más, porqué está en la posición que está, al no restringir a los usuarios a su producto, haciendo su producto libre y apuntando a la integración casi taxativa entre todos los servicios que normalmente usa una persona en Internet (Twitter, Blogger, YouTube, etc) permitiendo además, que cualquiera que quiera integrarse lo pueda hacer sin ningún problema.
Analizando un poco mas en profundidad las funcionalidades y características de Waves, no logro encontrarle realmente una característica nueva y revolucionaria. Lo que si me parece interesante, es el tema de la integración entre todos los servicios. Pero fuera de eso, no hay algo que me haga decir wow. Tiene muchas cosas lindas e interesantes, pero me parece que lo han anunciado con demasiados bombos y platillos.
Por si alguien todavía no ha visto el video de presentación de Google Waves, aquí se los dejo:
Saludos y hasta la próxima.
Etiquetas:
google chrome,
google waves,
lanzamientos,
open source,
presentacion
21 marzo 2009
Probando Internet Explorer 8 con ACID3
Van a pensar que soy un loco del test ACID3 (puede que sea cierto!!!), pero pensé en probar el resultado del citado test en el recientemente lanzado Internet Explorer 8 (IE8 de aquí en adelante).
Previamente ya había testeado otros navegadores con el mismo test. También habíamos encontrado uno que los pasa en su totalidad. Me basaré en esos resultados anteriores para el análisis.
Sin más rodeos, les presento el resultado del test:
Para tomar un punto de referencia, recordemos cual fue el resultado con Internet Explorer 7 (IE7 de aquí en adelante):
Recordemos ahora cual debería ser el resultado para que pase el test:
Observando las imágenes, podemos observar que hay una gran mejora en el renderizado de las páginas, de hecho el resultado en este sentido es muy similar al de la mayoría de los navegadores. pero lamentablemente, la calificación es de 20/100. Esto nos indica que Microsoft sigue con la política de darle muy poca importancia a los estándares.
Se ha dicho mucho sobre el fallo de seguridad que se descubrió unas horas después del lanzamiento de IE8. En este aspecto, no debería preocupar tanto la rapidez. De hecho, si se hiciera el mismo esfuerzo en encontrar problemas de seguridad en Mozilla Firefox, Safari u Opera, probablemente los resultados no difieran mucho. Esto es así ya que los fallos de seguridad son inherentes a absolutamente todos los programas que existen. Ningún software está libre de ellos por más testeado que esté.
Lo importante sobre este punto, es ver que actitud toma Microsoft con respecto a este problema de seguridad y lamentablemente, la mayoría conoce la respuesta a esa cuestión.
Nuevamente, espero que les haya sido de utilidad. Nos vemos en la próxima.
Para tomar un punto de referencia, recordemos cual fue el resultado con Internet Explorer 7 (IE7 de aquí en adelante):
Recordemos ahora cual debería ser el resultado para que pase el test:
Observando las imágenes, podemos observar que hay una gran mejora en el renderizado de las páginas, de hecho el resultado en este sentido es muy similar al de la mayoría de los navegadores. pero lamentablemente, la calificación es de 20/100. Esto nos indica que Microsoft sigue con la política de darle muy poca importancia a los estándares.
Se ha dicho mucho sobre el fallo de seguridad que se descubrió unas horas después del lanzamiento de IE8. En este aspecto, no debería preocupar tanto la rapidez. De hecho, si se hiciera el mismo esfuerzo en encontrar problemas de seguridad en Mozilla Firefox, Safari u Opera, probablemente los resultados no difieran mucho. Esto es así ya que los fallos de seguridad son inherentes a absolutamente todos los programas que existen. Ningún software está libre de ellos por más testeado que esté.
Lo importante sobre este punto, es ver que actitud toma Microsoft con respecto a este problema de seguridad y lamentablemente, la mayoría conoce la respuesta a esa cuestión.
Nuevamente, espero que les haya sido de utilidad. Nos vemos en la próxima.
Etiquetas:
acid,
comparativa,
firefox,
ie7,
ie8,
internet explorer,
lanzamientos,
navegador,
opera,
safari
08 marzo 2009
Java vs Ruby
Utilizo mucho estos 2 lenguajes, principalmente Java. Por ello, voy a tratar de describir sus diferencias, similitudes, ventajas y desventajas. Hago esto para que los que quieran adentrarse en estos lenguajes, puedan tener una referencia.
En principio, me gustaría señalar que la principal ventaja que tiene Ruby frente a Java, es lo compacto y simple que es el lenguaje. Esta diseñado para que no tengamos que escribir largos bloques de código y además, para que la lectura del código se asemeje un poco mas al lenguaje humano que al computacional.
Para ejemplificar lo que les digo, vamos a programar un simple algoritmo que escribe 3 veces una cadena por la pantalla.
En Java:
for(int i=0;i<3;i++) {
System.out.print("cadena de texto");
}En Ruby:
3.times do print "cadena de texto" endComo pueden ver, el código en Ruby es más compacto y es más directa su lectura. Para los que son adeptos a la sintaxis más "computacional", Ruby nos permite escribir el algoritmo anterior, de la siguiente manera:
3.times {
print("cadena de texto");
}Podemos ver que la sintaxis anterior, es muy similar a la usada en Java. Puntualmente podemos ver las siguientes similitudes:- Las líneas de código con el "punto y coma" final
- Los bloques de código delimitados por los símbolos { y }
- Los parámetros pasados a un método, entre paréntesis.
0.step(2,1) do |i|
print "cadena de texto - Iteracion ${i}"
endEste método, ejecutará el bloque de código variando el índice i, desde el valor inicial 0, hasta el valor final 2, sumándole 1 en cada paso. Como ven, Ruby se adapta bastante a nuestros gustos.
Si bien esta flexibilidad tiene muchas ventajas, también puede traer problemas. El principal (según mi punto de vista) es que cuando en un proyecto participan muchos programadores, si no se establece una convención de sintaxis, podemos terminar con una gran mezcla de código de sintaxis muy variada, y esto puede traer mucha confusión en la lectura y manutención del mismo.
Otras de las grandes desventajas de Ruby, es que es un lenguaje totalmente interpretado, lo cual trae problemas de rendimiento y escalabilidad. Prueba de esto, es que Twitter está mudando su plataforma de Ruby on Rails, a Scala.
Otras de las fuertes debilidades que le veo a Ruby, es que es un lenguaje de tipos débiles. Esto quiere decir que las variables que usamos no tienen un tipo fijo, y que tampoco es necesario declararlas para uso.
En mis experiencias (laborales y académicas) utilizando lenguajes de tipos débiles, he llegado a la conclusión de que es algo útil en algoritmos y programas de poco tamaño. Pero cuando la cantidad de código comienza a crecer (proporcionalmente con la cantidad y complejidad de las capas y módulos de nuestra aplicación), esto se vuelve una gran desventaja.
Piensen en que si una variable no tiene tipo fijo, entonces tenemos que suponer que tipo tiene al momento de usarla y esto genera errores, que en algunos casos son casi imposibles de detectar, sobre todo en aplicaciones donde los datos se mueven a través de los distintos módulos de la aplicación, atravesando a su vez, las distintas capas de la misma.
Como señalé anteriormente, en Ruby tampoco es necesario declarar una variable para usarla. Esta es otra fuente de muchos problemas. Varias veces perdí muchas horas tratando de resolver un bug, para darme cuenta que el problema era que una variable estaba mal escrita (al no tener que declararla, el intérprete la toma como una nueva variable). Aunque tengo que reconocer que el uso de IDE's con autocompletado (como Netbeans o Eclipse) han minimizado mucho estos problemas.
Para finalizar, les dejo una lista de similitudes y diferencias que existen entre estos 2 lenguajes.
Similitudes:
- En ambos lenguajes contamos con manejo automático de memoria, a través de un recolector de basura.
- Los objetos son de tipos fuertes (Las variables son de tipos débiles en Ruby, pero los objetos no).
- Ambos soportan casi la totalidad del modelo orientado a objetos.
- Los 2 cuentan con herramientas de documentación embebidas. (Javadoc en Java y Rdoc en Ruby).
- Tanto Ruby como Java, son lenguajes totalmente libres (licencia GPL).
- Ruby es interpretado, Java es compilado y luego interpretado.
- En Ruby se pueden usar como separadores de bloques las palabras claves do y end, o los símbolos { y }. En Java sólo es posible usar { y }
- En Ruby, todos los atributos de una clase son privados, en Java pueden ser privados, públicos o protegidos.
- En Ruby, la lista de parámetros pasados a un método, puede o no estar delimitada por paréntesis. En Java, los paréntesis son obligatorios.
- En Ruby, absolutamente todo es un objeto. En Java existen tipos de datos que no son objetos.
- En Java existe el chequeo de tipos. En Ruby no, ya que es interpretado.
- En Java, las variables son de tipo fuerte. En Ruby las variables son de tipos débiles.
- En Ruby tenemos los mixin's, en contrapartida de las interfaces de Java.
Etiquetas:
comparativa,
desarrollo,
eclipse,
java,
javadoc,
mixins,
netbeans,
open source,
rdoc,
ruby,
ruby on rails,
scala,
sintaxis,
sistemas,
twitter
06 marzo 2009
Una realidad muy geek
Vi esto colgado por la red, y me causó mucha gracia. Espero que lo disfruten.
Saludos gente. Nos vemos pronto.
Saludos gente. Nos vemos pronto.
Suscribirse a:
Entradas (Atom)