jueves, 26 de marzo de 2009

Lenguajes fuertemente tipados vs. lenguajes no tipados

En el mundo existen dos tipos de programadores: los que les gustan los lenguajes fuertemente tipados (strongly-typed) y los que les gustan los lenguajes no tipados (weakly-typed). Y no se hablan...

Yo soy del primer grupo, creo que por una cuestión de cuales son los lenguajes que he usado: desde Pascal en la facultad, pasando por C, C++, Java, C#, hasta GeneXus. Definir de qué tipo de datos es una variable me resulta de lo más natural.

No quiero ponerme en la postura de discutir cual opción es mejor, porque claramente se puede lograr lo mismo con cualquier tipo de lenguaje, pero hay cosas en los lenguajes no tipados que no me convencen.

El otro día tuve que revisar un programa escrito en PHP en busca de un posible bug, y la verdad que no saber de que tipo es una variable es algo que me choca.

Por ejemplo, si tengo una invocación (puede estar mal la sintaxis) de la forma:
$var->methodName($arg1, $arg2, $arg3);
si no se de que tipo es la variable $var, ¿donde busco la definición del método methodName?

A mi por lo menos me gusta saber con que tipos de datos estoy trabajando...

Tambiénme choca que se puedan hacer cosas como (puede estar mal la sintaxis):
$a = 1;
...
$a = 'Hola' + $a;
...
$a = new HttpClient('www.example.com');
...
$a = $a + 1;
pero bueno, se supone que esa es la ventaja de no tener chequeos estrictos en el tipo de datos, ¿no? Me parece que permitir saltearse el chequeo de tipos es algo que puede provocar más bugs.

jueves, 19 de marzo de 2009

Chrome Experiments

Google acaba de lanzar un sitio llamado Chrome Experiments, para mostrar las cosas que se pueden hacer con JavaScript y en particular lo bien que funcionan en Chrome.

Realmente es impresionante las cosas que lograron hacer, en particular me gustaron Browser Ball, DOMTRIS y Monster...

Les dejo el video de demostración de Browser Ball, que como aplicación no tiene mucha utilidad (por no decir ninguna utilidad), pero que realmente me sorprendió lo que lograron hacer.



Si bien los ejemplos están pensados para correrlos en Google Chrome, yo los probé con Firefox 3.0 y funcionan muy bien.

lunes, 2 de marzo de 2009

Identificación de objetos en GeneXus X

Hasta la versión 9 de GeneXus, los objetos se identificaban por su tipo y nombre. A partir de GeneXus X, todos los objetos tienen un identificador único, un GUID.

En realidad todos los componentes, como por ejemplo las ToolWindows o las extensiones también tienen un GUID, pero esa es otra historia...

En el taller de extensions de la reunión del GUG de noviembre 2008, me acuerdo que surgió la pregunta de que tan único es cada GUID, y cual es la probabilidad de que se repitan.

Ahora por otro tema, llegué al artículo en la Wikipedia que habla sobre Universally Unique Identifier (UUID), que hace un cálculo respecto a la probabilidad de que se repitan.

Según el artículo, si se generan 246 (unos 7×1013 o 70 billones) de UUIDs, la probabilidad de que haya uno repetido es de 4×10-10. No parece ser algo demasiado preocupante...

Nota: El GUID (Globally Unique Identifier) es la implementación de Microsoft de UUID.