Archived entries for

Un juguetito nuevo: el Lego Mindstorms

A principios de mes, Albert y yo nos agenciamos un juguete nuevo: el Lego NXT Mindstorms

La caja sin abrir del Lego MindstormsEl contenido de la caja del Lego MindstormsEl Tribot Lego Mindstorms

Habíamos estado mirando vídeos y alucinando con lo que se puede hacer con él, pero después de hacer un par de pruebas, parece incluso mejor de lo que parecía.

El Tribot, el ejemplo que viene en el manual y que se puede hacer en media hora, no está nada mal, pero está un poco limitado. Aquí tenéis un vídeo bastante cutre que muestra el Tribot moviéndose de manera aleatoria:

Ahora nos toca diseñar por nuestra cuenta una estructura suficientemente genérica como para implementar varias ideas que tenemos sin tener que tocarlo demasiado, y que además sea estable. Lo más probable es que acabemos haciendo algo parecido al Giant Wheel:

Está a años luz de hacer cosas espectaculares como el Rubik Cube Solver, pero ya llegaremos, pasito a pasito.

El Mindstorms viene con un firmware que admite programas hechos con un IDE hecho por Lego, pero ahora mismo estamos utilizando LeJOS que incluye un compilador de código en Java. Ya convenceré a Albert para probar la API para Ruby ;) Quién sabe, a lo mejor hasta le metemos un sistema de razonamiento de IA basado en BDI.

En fin, que después de haberlo probado, la compra no parece nada insatisfactoria. Si alguien se anima a sugerir alguna idea, o incluso se quiere apuntar a hacer algún día geek intensivo para probar locuras con el robotito, será bienvenido :D

¿Ruby o Python? Pues lo mismo da… mientras no sea Java

Durante las últimas semanas nos hemos cansado de patear Internet, intentando decidir un lenguaje de programación para un proyecto considerablemente grande. Conclusión: será Ruby o Python.

Hasta ahora había usado Java principalmente, tanto para cosas sencillas como para cosas complejas. De hecho, siempre había pensado que era un lenguaje bastante decente. Ja.

Puede que para proyectos pequeños sea un lenguaje incluso simpático, aunque obligue a escribir demasiado código comparado con otras opciones. Pero para proyectos grandes, donde debería ser el lenguaje dominante, es algo mastodóntico que no hay por dónde coger.

Es como cuando te tienes que enfrentar con la suegra. Sabes que la tienes que tratar bien, porque si no, te van a dar bien por el buffer. Pero lo mismo da, ya que por mucho que lo hayas intentado, las hostias te van a caer igualmente y probablemente tú no tengas la culpa.

Java es demasiado rígido.  Cada vez que hay que jugar con los tipos, como por ejemplo siempre que se utiliza una base de datos, la genericidad no es suficiente y hay que liarse a crear soluciones demasiado complejas y costosas de probar. Si hay que buscar maneras creativas de implementar algo, automáticamente el desarrollo se volverá ineficiente, y las horas delante del teclado acabarán por el desagüe casi sin darse cuenta.

Lo peor de todo es la gestión de las librerías. Es increíble que a estas alturas aún no haya un sistema mínimamente decente de versionado y compatibilidad de ficheros .jar. Me dijeron que probara Maven, pues tampoco. Al final acabas con toda una lista de posibles .jar, añadiéndolos uno a uno y probando la aplicación completa en busca de incompatibilidades. Y nunca estarás seguro del todo. Pues espérate, que cuando actualicen una de las librerías el lío aún va a ser más gordo, porque van a fallarte todas por efecto dominó.

Ni siquiera se puede defender ya que sea elegante. Cosas como las anotaciones lo sobredimensionan tanto que, por el camino que van, llegarán a traicionar la gran virtud que Java tenía en su nacimiento: esquivar los defectos del chapucero C++.

Por suerte siempre estará Eclipse para hacer la vida más fácil a uno. Pero sólo para J2SE, porque si hay que pelearse con J2EE sin NetBeans, prepárate para entrar en el Infierno. Aunque bueno, NetBeans es otro infierno en sí mismo, más pesado que una vaca en brazos y con tantos automatismos bastos que como necesites un mínimo grado de libertad vas arreglado.

Eso sí, comprendo que para según qué empresas, que puedan permitirse tiempos de desarrollo más amplios y no se salgan demasiado del ámbito de las aplicaciones de gestión, Java es bastante razonable.

Lo que nosotros buscamos es un lenguaje de desarrollo rápido pero escalable, que implemente la máxima del DRY, que permita soluciones creativas para algoritmos de IA y que además tenga un apoyo considerable de la comunidad.

Así que será cuestión de tirarse a la piscina. Ruby y Python parecen los lenguajes de moda y por algo será. Decidirse entre ambos ya sí que parece más complicado, ya que si eliminamos las opiniones de los fundamentalistas de cada uno, los que opinan de manera neutral no parecen decidirse por ninguno de los dos de manera clara.

De todos modos estoy ligeramente inclinado hacia Ruby. De eso tiene bastante culpa que tenga similaridades con LISP o Eiffel (el lenguaje de los que he tocado que más me ha gustado), o algunas features como los blocks o la metaprogramación.

Probando Twitter Updater…

Plugin obtenido de firesidemedia.net.



Copyright © 2004–2009. All rights reserved.

RSS Feed. This blog is proudly powered by Wordpress and uses Modern Clix, a theme by Rodrigo Galindez.