Ingeniería del Mal

Un sitio de Noticias, Discusiones, Software y miscelánea. ;-) enjoy.-
Este Post se relaciona mucho con el anterior, si bien no es necesario leerlo para comprender los conceptos relacionados con el presente.
Resulta que para una materia del semestre anterior (7mo) se nos pidió trabajar sobre un simulador de robots llamado Yaks. A modo rápido, lo bueno de Yaks es que permite desarrollar y ejecutar agentes para el robot Khepera, en forma completamente gratuita, pero presenta dos limitaciones bastante importantes: 1) únicamente puede ser programado en C/C++ y 2) el código del simulador es mucho menos que prolijo.
Los principales problemas de estas limitaciones son:
El imponer el lenguaje fuerza a que los alumnos deban tener algún primer contacto con él, lo cual es bueno, pero en general esto no es bueno, especialmente tratándose de C/C++. Por desgracia me llevo el concepto de que mucha gente sintió que el lenguaje causaba más problemas de los que solucionaba.
Los problemas relacionados con tener que lidiar con código escrito por otra persona del otro lado del mundo, el cual es especialmente embrollado y prácticamente no tiene documentación alguna.
Fue a raíz de estos motivos que varias veces comentamos lo bueno que estaría desarrollar un tipo de interfaz que permitiera ocultar los detalles del simulador a los desarrolladores.
El resultado de esto es en lo que he estado trabajando en los últimos días: Yaks Server, básicamente una API desarrollada en C++ que permite abstraer los detalles del simulador a través de una interfaz de BSD Sockets. Yaks Server crea una capa de que “cubre” el simulador, simplificando la tarea de desarrollo.
La interfaz presenta 3 primitivas:
Desde el punto de vista de los clientes, la situación es muy similar, únicamente que el flujo de información es al revés, enviando velocidades y recibiendo percepciones.
Las grandes ventajas que el agregar esta capa de abstracción nos proveen se basan en que los desarrolladores no deberán previamente estudiar el código del simulador para poder trabajar con él y, además, la API del lado del cliente puede ser desarrollada en cualquier lenguaje (que sea capaz de hacer uso de las funciones de red), por lo cual los clientes pueden ser desarrollados en una gran variedad de lenguajes.
Si bien se podría alegar que esto es perjudicial, yo creo que a la larga termina siendo beneficioso. Pienso que los malos hábitos que uno genera cuando aprende a las apuradas son, en general, los más difíciles de corregir. En la línea del Post anterior: C/C++ no es un lenguaje que pueda aprenderse bien a las apuradas.
Tras aproximadamente 5 o 6 meses de usar Debian en el Laptop, hoy estoy cerrando este capítulo. Hace no más de 2 días llegaron los CD's de Ubuntu 6.06 que solicité y por varios motivos hoy decido instalarlo como sistema de uso diario.
No les voy a decir que fue algo así como bootearlo, verlo y decir “ésto es para mí”, fue más bien una acumulación de cosas que han ido ocurriendo. Creo que habiendo usado Debian por el tiempo que lo usé pude formarme un concepto de lo que dicho sistema me aporta como usuario y como desarrollador. A modo de “saludo” es que escribo este Post destacando lo que a mi parecer fue lo bueno y lo malo de mi experiencia.
Lo Bueno:
Rapidísimo: sobre todo comparandolo con el SuSE 9.3 que tenía anteriormente. Esto no ha cambiado desde el Post anterior en el cual hablaba de una de las grandes virtudes era su velocidad.
Miles y miles de paquetes de Software: al momento de tener que elegir un programa para hacer algo uno siempre se encuentra con por lo menos 2 o 3 programas completamente distintos que permiten realizar dicha tarea.
Facilísimo de mantener: nunca había visto una distribución en la cual fuese tan fácil conseguir e instalar bibliotecas, IDEs, herramientas de productividad, etc, donde el sistema mismo se encargara de resolver todos los problemas de dependencias automáticamente.
Seguro: en particular comparado con Ubuntu, en la cual encuentro que el usuario creado al momento de instalación dispone de demasiados poderes. Ni en Debian ni en otras distribuciones esto es así. Los usuarios son usuarios y el adimistrador es otra persona.
Lo Malo:
Software antiguo: un montón del Software disponible cuenta hoy con versiones más nuevas que aún no son soportadas, por lo cual uno termina usando las versiones antiguas. Si bien se puede compilar las últimas versiones desde los archivos fuente, resulta impráctico tener que hacerlo para cada paquete de Software. En particular me complicaba tener que usar OpenOffice 1.1 cuando todo el mundo usa 2.0 y los formatos de archivos son distintos.
Reconocimiento y soporte de Hardware: de por sí cuando instalé el sistema me dí cuenta de que no había detectado en forma correcta el monitor. Con el tiempo me terminé dando cuenta de que en realidad no logró detectar nada, instalando drivers genéricos para todo. Esto resultó especialmente molesto para Hardware (como la tarjeta de video o de sonido) el cual uno nota instantáneamente cuando no funciona apropiadamente y es complicado de configurar.
A esta altura quienes recuerden mi Post anterior, en el cual comentaba que es divertido meterse a arreglar las cosas, sepan que aún pienso que así lo es, la diferencia que hoy me planteo es cuando uno arregla las cosas por hobby o cuando lo hace porque necesita desesperadamente que anden para poder hacer algo más. Como fanático que soy de comprender como las cosas funcionan y hacerlas andar yo mismo, pienso que Debian plantea un reto más que interesante, en especial para todos los adeptos a la computación y sistemas operativos. Como desarrollador y como usuario final pienso que necesito algo un poco más armadito.
|
|
|