Entradas archivadas en Haciendo muñecotes

Hace no muchos días Javier Romero hablaba de su proyecto secreto en el cual pensaba usar CLIPS para la parte de inteligencia artificial y repasaba las opciones para Java, PHP y C++. Yo también necesito un sistema de reglas y, visto CLIPS, he decidido descartarlo por completo. Os relato mi viaje mental desde mi intención inicial a la conclusión.

Inicialmente, utilizar CLIPS me parecía una idea no demasiado mala. Nunca es malo aprender algun lenguaje/paradigma nuevo… así que me voy a la web oficial. El primer ostión… los manuales no son grandes, son inmensos. La referencia de CLIPS tiene como 400 páginas y la guía de programación, que va aparte, tiene más de 100. Mi impresión es… esto me va a llevar más tiempo del que había pensado.

Me pongo a mirar a ver si hay algún wrapper facilote para C++… hay una DLL (solo para Windows) sin demasiada documentación, con unos ejemplos para que veas como funciona.

Antes de seguir más se me ocurre hacer un poco de espionaje estudio de glest. Vaya… hacen las reglas a pelo con C++. También me ha gustado mucho la organización de directorios que tienen, aunque no creo que se la copie del todo.

Total, que me parece que voy a utilizar Lua para definir las reglas, exportaré desde C++ una serie de funciones para poder acceder a la base de conocimiento y programaré el núcleo de selección a manita. Después de todo no es mas que una iteración hasta que encuentres una que aplicar. Se puede depurar mucho este algoritmo, pero creo que con una cutrada como la que acabo de describir nos va a sobrar.

Joel Spolsky, foto de microsoft-watch.comJusto ayer hablaba con Javier Romero de la capacidad de ingeniárselas de los informáticos de carrera, cuando veo este artículo en el blog de Joel Spolsky. Últimamente Joel estaba flojeando un poco y hablando de lo guay que es su compañía y lo “guay” que es el y lo “ultra-cool” que es estar con el en sus megaproyectos. No obstante, cuando añadí esta página al blogroll fue por sus magníficos artículos de opinión. Opinión que puede discutirse y que, en muchos casos, no comparto, pero que siempre es buena base para iniciar una discusión.

Logo de JavaLo que comenta Joel en el articulo es una evolución que parece ver el en los últimos graduados que entrevista. Parece ser que se esta tendiendo hacia el Java en el mundo universitario. Según el con Java no se puede distinguir entre buenos y malos programadores. La impresión es que con Java se les enseña a programar un tipo concreto de aplicaciones y que no los puedes sacar de ahí. Luego habla de su epoca de estudiante y como las cosas eran más difíciles con Scheme (cosa que no dudo).

La verdad es que mi opinión la resumiremos en ni tanto ni tan poco. Creo, como Joel, que es necesario para la correcta formación mental de un programador/informático aprender cosas como Scheme, la programación funcional y demás cosas raras que no usaras en la empresa en tu vida, a menos que trabajes en Google. Pero también, como le digo siempre a Javier, los tiempos han cambiado y quizás no es mala idea gastar un poco de tiempo, que personalmente sacaría del bajo nivel, en hablar de cosas como J2EE y demás arquitecturas mastodonticas dedicadas a los desarrollos empresariales.

Por ultimo, no se como sera alli en los States, pero en las universidades de por aquí seguimos teniendo nuestra dosis de todo lo que el echa en falta (aunque nosotros usabamos NJML). Porque casi todo lo que comenta que no saben los informáticos recién horneados lo he dado en la carrera y yo he acabado este año.

Siguiendo la entrada anterior, se me ha ocurrido que yo también puedo quejarme de aquellas divertidas practicas que nos tuvieron a mas de uno colgados del teclado picando código durante días, aunque nosotros éramos de los que madrugaba ya que, como dice Mad Coder Tannen, se programa mejor antes de desayunar. Aquí va una lista (seguramente incompleta de practicas que nos molestaron una temporada):

La practica de Grafos: Cuando éramos unos niños acabados de salir del Instituto pero creíamos que sabíamos programar tras la primera evaluación, tuvimos que hacer nuestra primera practica seria en C, que además contaba para Programación y para Algebra. La verdad es que salimos victoriosos, pero tuvimos muuuchos problemas con los punteros y demás cosas que le pasan al novato de C. La practica consistía en implementar varios algoritmos de grafos que yo recuerde: Floyd, Bron y Kerbosch (este era el mas difícil), Roberts y Flores, Dijsktra
Buscador y Access: Al año siguiente tuvimos una asignatura sobre buscadores, y nos toco implementar un buscador documental en Java. Tras los primeros parseos de XML y demás, que tuvieron su tema pero se hacia bien, llego la practica de integrar con Access. ¡Por dios! cuantos problemas dio… Access es una base de datos muy especial y había muchas sutilezas no documentadas que nos trajeron locos un par de semanas.

SeMoSo: SeMoSo venia a ser un acrónimo de Seno More Sound, que correspondía a SMS, que son las siglas del modelo que utilizaba para la síntesis el programa este. SeMoSo era el nombre que le pusimos a la practica continuada de Informática del Audio y la Música, de las cuales el profesor reaprovecho los enunciados y las convirtió en el tutorial de CLAM. CLAM es una librería C++ GPL desarrollada por la universidad pensada para la programación de aplicaciones que traten con audio. El problema es que es un framework bastante complejo, muy muy orientado a objetos y con cantidad de documentación y unas practicas laaaaarrgas que remataban la faena.

IDA*: El simpático algoritmo de Korf trajo de cabeza a más de uno y es que, a pesar de su sencillez, implementarlo no resulto fácil.

Tautología y Prolog: Después del A* llego Prolog, a pesar de que a mi me acabo gustando Prolog (a mi me gusta cambiar el chip) confieso que para escribir las 3 líneas de que constaba la practica (nos proporcionaron una plantilla) estuvimos dos días tanteando opciones.

El Proyecto de Procesamiento del Habla: Esta fue pillamiento total, la numero 2 en el ranking. Teníamos que implementar un sistema de centralita telefónica (a grandes rasgos un speech to text). Realmente acabamos odiando los macro-modelos de Markov, aunque el entrenamiento del sistema fue muy divertido y las partidas al Pang! en el PowerBook de Xev también.

Y finalmente, a finales del primer trimestre de 4o (de 4 años de carrera) llego el Apocalipsis, las 666 carpetas de… PetStore: Esta practica si fue una ida de olla. El profe quería que modificáramos el Java PetStore que es un BluePrint de Sun para enseñar que guay que es J2EE. Bien, PetStore es horrible! (según un foro que consultamos a ver si encontrábamos información, el que ha diseñado PetStore debería ser cazado). Tiene muchiiiiisimos ficheros y hacer una modificación que según el es tocar aquí en PetStore se convierte en pasar tardes y tardes (hasta tarde, valga la redundancia) peleándose con el J2EE RI y Cloudscape. además el profesor quería que conectásemos a una base de datos Oracle y que la aplicación corriese distribuida en 3 maquinas. ¿He comentado que el peso de esta parte eran 1,5 créditos? Al final cedió un poco (algunos tuvieron que ceder de su cabezonería de que nos quitase la practica totalmente) y con que rulase en una maquina pero con concurrencia bien hecha y con las modificaciones para que fuese una tienda de subastas. Y aun así tuvimos que dedicar muchas horas (y alguno salio con extrañas perversiones mecánicas de ello).

Y tras hacer una lista de todas ellas no parece tanto. Vale que nos jodieron un tiempo pero, y lo que nos reímos el día que acabamos PetStore (aunque las risas venían de una web que no era badgerbadgerbadger.com), y el subidon que te da cuando la practica funciona por primera vez…

Para todo lo demás, MasterCard (menos si es la web de Logitech, claro).

Leyendo las últimas entradas de mi blogroll he encontrado un par de post de temática similar que me han parecido suficientemente interesantes para añadir mi pequeña contribución al tema. Benko afirmaba estar estresada con las practicas y enlazaba un par de weblogs que presentaban situaciones curiosas.

Notscape explicaba una practica que había echo y que era hacer un sistema de redes neuronales para clasificar zonas de una imagen. Bueno, yo que he echo alguna cosilla de redes neuronales, aunque la practica era aprender funciones y los profes iban bastante de buen rollo (los problemas venían de otras asignaturas, luego os explico) entiendo lo jodidillo que es hacer ese sistema. Por otro lado Moises también explica sus desventuras con las redes neuronales también. Lo que me ha resultado interesante es que ambos sacan el ejemplo de los estudiantes de Magisterio y sus divertidas prácticas. Es normal que cuando uno esta quemado de picar código y oye gente hablando de hacer manualidades… pero no como los de Arquitectura que estos hacen maquetas con planos y esquemas, sino manualidades de cartulina, rotuladores y tal, pues uno tiende a pensar ¿yo soy masoquista?

Supongo que muchos de los ingenieros sabemos donde nos metemos y, secretamente, tendemos a pensar que compensa este esfuerzo, aunque si uno no tiene la suerte de ir a curso por año, a veces los padres no entienden que no es lo mismo estudiar Derecho y aprobar todo estudiando la semana antes, que hacer una Ingeniería que es ligeramente mas difícil en general.

De todas formas desde aquí me gustaría defender un poco a quienes hacen carreras de letras porque no todo es tan fácil como se presenta en las entradas que vinculo. Yo he tenido que cursar (obligatoriamente 4 asignaturas, a elección, de Humanidades y/o de Comunicación Audiovisual) y os voy a presentar mi experiencia y no me parecen tan fáciles … aunque si era de lo mas fácil del trimestre.

La primera que curse fue Economía del Sector Audiovisual y, si, esta fue fácil. Había un examen bastante sencillo que con estudiar una tarde y haber escuchado en clase (cosa que hacíamos y el nos hacia la pelota al clan de informáticos de la primera fila, que éramos 6 y se nos veia) te lo sacabas y un trabajo de 4 paginas (para los informáticos dijo que hiciéramos 20 porque nos daba mas creditos, total que hicimos 13 y nos lo aprobó igual). Las clases entretenidas, bastante debate y opinión. Fácil.

La siguiente que curse, este año, Historia del Cine I. Aqui ya habia que currar un poco. Ver 30 películas entre 1917 (El Nacimiento de una Nación, tengo que hacer una reseña de esta) y 1960 (tres westerns :) ). Parece fácil, pero había cada tostón que … El examen un test facilísimo, yendo a clase lo pasabas (había que sacar un 7, pero contaba 5 sacases lo que sacases) y luego un texto sobre las películas que era para subir nota. Facil, aunque nosotros nos vimos casi todas las películas y el texto no le gusto.

En Historia del Cine II me lo pase bien, mi compañero y yo vimos bastantes de las ¡52 películas! (he dicho que en la Pompeu hacemos asignaturas trimestrales). Además había que hacer 2 criticas de 1 folio a doble cara sobre algunas de las películas (se podía escoger entre varias opciones). Yo acabe sacando un 5 y gente que vio 3 películas saco un 8. No me quejo porque estudie poco, asi que no me raye, y el examen lo hice en 40 minutos :D … de todas formas el profe era un tio bastante letal (saludos, Domènec) así que estas cosas ya podia habermelas olido.

Y ahora estoy con Historia de la Ciencia que es un coñazo, pero es fácil. Hay solo examen este año y aunque según el hay que leer 5 libros, de momento los 2 que iban sobre temas que ha dado los ha explicado en clase, así que con eso y la Wikipedia puedes sacártelo fácil.

En general, tampoco es que sean muy dificiles, pero no en todas las asignaturas de letras es todo el corro de la patata. Ojo, en Comunicación Audiovisual la peña es de 8.5 de nota de Selectividad, que no es que signifique demasiado, pero al menos les permite a los profes meter un poco de caña. Eso si, en Informatica podemos entrar con 5 y pillamos tanto o mas. Eso si, me han explicado cosas muy divertidas de Informática aplicada a la Traducción, donde había un profesor que no tenia ni idea y dejaba caer perlas como: RAM: Rapid Access Memory o Hay los GUI, graphic user interface, y los TUI, text user interface … pero eso solo lo usan los hackers (nota: los TUI existen, pero son Tangible User Interface). Por no hablar de la extrema facilidad de cosas como la familia Introducción* (Economía, Contabilidad, Derecho) o las asignaturas de Matemáticas de primero de carreras de letras.

No obstante, me parece que tanto yo como los blogeros de por arriba somos los flipados que en vez de ir a buscar las maría fontaneda nos liamos con cosas como algoritmos genéticos, asignaturas de programación gráfica y en general asignaturas donde necesitas invertir mucho tiempo en realizar el proyecto final, aunque al menos en mi universidad, algunos profesores en estas asignaturas optativas no hacen el examen y evalúan la teoría con un trabajo y presentación sobre investigación (papers académicos, proyectos, conferencias, …) de los topics de los que trata el curso.