jueves, 14 de noviembre de 2013

El infierno de los bits

Estos dias ando desarrollando una aplicacion que permita hacer lienzos Lean Canvas y que sea portable, segura... La he llamado My little lean canvas y en el blog de Not a Number estan los enlaces para descarga (proyectonan.blogspot.com)

Pero sufro ciertos problemas de compatibilidad por dos motivos:

-Base de datos Access
-Driver para manejar Access

Bien, cuando vamos a hacer una aplicacion portable, queremos (obviamente) que nuestra base de datos se guarde en un archivo, pero ello implica usar alguna de las siguientes tecnologias

- Access
- SQL SERVER File
- SQLite

Esas 3 son las mas comunes, puede haber otras como h2db que no son del todo eatables o no tienen drivers que permitan su uso programaticamente. El caso es que para usar un archivo de SQL SERVER necesitas tener instalada la version de servidor, la version compact tampoco tira demasiado bien y eso no lo hace muy portable que digamos.

El problema de SQLite es que no dispone de cifrado al usarlo desde programacion, es decir, si abres un archivo de base de datos SQLite con el blog de notas accedes a la informacion. Si busco privacidad en los datos esta no es una opcion viable.

Queda entonces Access como opcion mas "soportable", con su cifrado del archivo, contraseña y sus peculiaridades. Pero en cuanto hablamos del driver a usar para programar, es ahi donde llegan mas problemas.

Para conectar con Access existen dos librerias Jet y ACE. Si usas Jet puedes conectar una base de datos access con extension .mdb y es compatible con windows (XP a Windows 8.1), pero con el pequeño matid de que la aplicacion debe estar compilada en formato de 32bit porque para 64bit no funciona.

Por otro lado ACE permite hacer bases de datos .accdb, es compatible con 32 y 64 bit y funciona normalmente a partir de windows 7. El caso es, que el driver, no viene junto al .net framework u office 2007+ salvo si instalas el programa Office Access. Obvio que se puede descargar el driver de la web de Microsoft, pero esto no lo hace muy portable.
Lo curioso es que hasta la version 2.0 del framework el driver de Access Jet si estaba incluido y ahora solo incluyen la parte de oledb para manejarlo.

Las aplicaciones Android

Se preguntara la gente por qué en Android no hay problema de apps en 32 o 64 bit, pues es tan sencillo como que Android es un sistema operativo solo de 32 bit, por tanto al solo haber una plataforma no hay problema (y para ARM se simula de 32 bit)

Eso si, a partir de la version Android 4.4 kitkat puede comenzar el festival del humor con las compatibilidades de 32 y 64 bit.

64 bits y multi-core

Desde hace unos años los microprocesadores traen mas de un nucleo o lo que es lo mismo, varios procesadores en paralelo. Los 64 o 32 bit corresponden a el tamaño de palabra de procesador. Antaño se agrando de 16 a 32 porque solo habia un procesador, pero mantener un solo bus de comunicacion de 64 para, por ejemplo, 8 procesadores de 64, cada uno, escapa a la razon. El bus transporta una palabra por cada tick de reloj, pero el micro puede procesar 8 en paralelo, que pasara cundo haya 99 nucleos.

Puede que tengamos que pensar en adaptar el hardware poniendo varios buses de comunicacion y dejar al sistema operativo y aplicaciones como lo que son, una capa de abstraccion para poder usarlas independientemente de como sea la maquina.