viernes, 5 de diciembre de 2008

Ya tenemos Python 3

Ayer, 3 de diciembre de 2008 se publicó la versión 3.0 del lenguaje de programación Python.

Esta versión aporta muchísimas novedades y muchas incompatibilidades con Python 2.x
Para ayudar en la migración de código antiguo, han desarrollado una herramienta de conversión, 2to3

Las que a mí más me han gustado:

  • Ahora sólo hay un tipo de enteros, equivalentes al antiguo long. Se acabó lo de definir los enteros "largos" con una L.

  • Se acabaron los problemas de "encoding": el código se escribe en UTF-8 y el tipo string trabaja internamente con unicode.

  • Se ha reorganizado la librería estándar y muchos módulos obsoletos ya se han eliminado.


También hay inconvenientes: por ahora es más lento que las versiones 2.x. Nada que un buen repaso no pueda corregir.

Mi enhorabuena a toda la gente que trabaja desarrollando este lenguaje. Ha sido una decisión valiente y creo que acertada.

miércoles, 12 de noviembre de 2008

La próxima batalla de sistemas operativos

En los ordenadores personales podemos decir que hay un sistema operativo predominante (Windows) y algunos más con un porcentaje de usuarios sensiblemente más reducido (MacOSX, Linux, ...)

Según nuestras estadísticas más recientes, por poner un ejemplo, la web de Público la visitan (aproximadamente) un 91% de usuarios con Windows, un 4,8% de  usuarios con MacOSX, un 3,1% de usuarios con Linux y el resto, otros sistemas (algunos *BSD, iPhone, Symbian, Playstation, Wii, etc).

Son estos últimos sistemas los más interesantes: los sistemas operativos de dispositivos móviles. Parece que todos los analistas y gurús de la web están de acuerdo: los dispositivos móviles van a tener cada vez más importancia en la web.

En este segmento no está tan claro que haya un sistema operativo predominante. Tenemos Symbian (Nokia y Ericsson, principalmente), Windows Mobile, BlackBerry, iPhone, el recién llegado Android, ...

En este mercado no hay una predominancia tan clara de un sistema frente a otro. Los Symbian acaparan la mayor parte de ventas, pero la diferencia no es tan abismal como ocurre con los sistemas operativos de escritorio.










































































Company

2Q08
Sales

2Q08 Market Share (%)

2Q07
Sales

2Q07 Market Share (%)

2Q08- 2Q07 Growth (%)

Symbian

18,405,057

57.1

18,273,255

65.6

0.7

Research In Motion

5,594,159

17.4

2,471,200

8.9

126.4

Microsoft Windows Mobile

3,873,622

12.0

3,212,222

11.5

20.6

Linux

2,359,245

7.3

2,816,490

10.1

-16.2

Mac OS X

892,503

2.8

270,000

1.0

230.6

Palm OS

743,910

2.3

461,918

1.7

61.0

Others

352,679

1.1

349,501

1.3

0.9

Total

32,221,175

100.0

27,854,586

100.0

15.7

Fuente: Gartner

En esta tabla no tenemos datos de Android, pero es previsible que a lo largo de este año se comercialicen más terminales que lo incorporen como sistema operativo.

Queda un último contendiente que mencionar. Aunque no es un sistema operativo como tal, considero importante reseñarlo: Java para móviles (J2ME).

Java es un lenguaje de programación (desarrollado por Sun Microsystems) que funciona en muchos entornos diferentes utilizando unas especificaciones adecuadas para cada sistema (servidores, ordenadores personales, dispositivos móviles).
La característica más notable es que los programas Java se ejecutan en una "máquina virtual", con lo que el mismo programa puede correr en distintos dispositivos siempre que tengan instalada la máquina virtual apropiada.

En el caso de los teléfonos móviles, casi todos los modelos incorporan una máquina virtual o intérprete de Java, con lo que el desarrollo de programas para móviles usando este lenguaje se simplifica mucho al poder desarrollar un sólo programa que puede ejecutarse en muchos modelos de teléfono diferentes (en la práctica esta supuesta compatibilidad no lo es tanto).

Resumiendo: sin ser realmente un sistema operativo, el Java para móviles es el sistema que más penetración en el mercado ha tenido. Una buena jugada comercial y técnica, ¿no creen?

lunes, 10 de noviembre de 2008

Programando para teléfonos móviles con J2ME

Pese a la gran disparidad de sistemas operativos, modelos y capacidades que encontramos en los teléfonos móviles hay un denominador común a la hora de desarrollar software para estos dispositivos: muchos modelos pueden ejecutar Java.

La máquina virtual que implementan es muy sencilla y tiene algunas limitaciones, pero ofrece muchas características. Las aplicaciones para móvil básicamente se pueden desarrollar en torno a dos aproximaciones:

  • Utilizando elementos gráficos de alto nivel, como botones, etiquetas, formularios, etc.

  • Utilizando un "canvas" donde "pintamos" los elementos que necesita nuestra aplicación.

El simulador que viene con NetbeansPor otra parte, el desarrollo de aplicaciones es bastante sencillo porque casi todos los entornos de desarrollo proveen un simulador de teléfono muy útil en el que podemos ir probando el programa sin necesidad de instalarlo en el móvil hasta que no está terminado.

Uno de los IDEs que más me ha gustado ha sido NetBeans. Tiene un plugin para J2ME muy bueno y sencillo de utilizar.

No todo es de color rosa. La gran disparidad de dispositivos y sus capacidades complican bastante el desarrollo: las aplicaciones J2ME se desarrollan alrededor de diferentes configuraciones (CDC y CLDC -esta última engloba los móviles, PDAs y dispositivos similares-) y perfiles (dentro de la configuración CLDC, el perfil MIDP es el que se adecúa a los teléfonos móvies, pero existen diferentes versiones).
En el capítulo 1 del libro "Java a Tope: J2ME" viene perfectamente explicado. Por cierto, un libro que puede descargarse gratuitamente y está muy bien.

Como siempre, la mejor forma de aprender algo es poniéndose con ello: he hecho un pequeño programita para móvil que se llama MMU (Music Mobile Utilities) con la ayuda de NetBeans y la verdad es que me ha quedado bastante apañado, sobre todo para no tener ni idea del tema ;-)

lunes, 8 de septiembre de 2008

¡¡¡ Django ya es 1.0 !!!

Tras una larga espera, ya tenemos Django 1.0
Realmente la versión 0.96 se podía considerar bastante estable (creo que es la que ha utilizado Google como "inspiración" o base para montar su Google App Engine).

No voy a enumerar los cambios (para eso están las "release notes"), pero sí destacar lo que más me ha gustado por ahora:

  • Unicode: Django trabaja ahora por defecto siempre con Unicode, se acabaron los problemas con bases de datos en Latin-1 y templates en UTF-8. Todo es Unicode y basta.

  • Interfaz administrativa: ya no es necesario poner una clase anidada vacía para en el modelo. Se registra el modelo en la aplicación administrativa y listo. Mucho más limpio e intuitivo.

  • Es bastante fácil migrar una aplicación a la nueva versión.

  • El manejo de formularios es muy bueno, prácticamente no hay que hacer nada. El módulo "newforms" (0.96) ya es el definitivo.


A ver si saco tiempo y monto algo con la nueva versión ...