Advertisement
Bienvenido a Squishdot Reportes Anuncios Debian Ciencia Linux
 principal
 nivel superior
 enviar artículo
 buscar
 administrar
 acerca de ...
 rdf
 rss
 main


Reporte
Reportes Posted by angolero on Tuesday May 30, @09:23PM el 2006
from the dept.
Saludos

Saludos a todo el mundo.

 

Una vez más me encuentro escribiendo sobre mis actividades realizadas en lo que va de mi anterior mensaje.

De manera general mis dos grandes actividades se han centrado en estudiar y desarrollar el patrón de modelo vista controlador en c++.

Básicamente para lograr implementar un software interactivo sobre la librería que e estado desarrollando, la cual es la parte de la lógica del susodicho patrón.

Como bien saben  para lograr una interfaz responsiva resulta necesario tener el programa en diferentes hilos de ejecución, con lo que aparece el tema de la concurrencia, y por el otro lado surge la difícil tarea de desarrollar un visor de visualización lo suficientemente rápido para tener practicas interactivas de relevancia biológica, es decir con un gran numero de elementos interactúantes en el espacio y el tiempo.

Por parte de la vista, e estado analizando diferentes librerías graficas con el fin de encontrar la mejor opción en cuanto a rendimiento y portabilidad.

 

Con respecto a la vista estas son las librerías que e comenzado a inspeccionar:

 

-OpenScenGrap: este es una librería de visualización científica, open source, que se ve bastante bien, utilizada por varias compañías grandes, aunque la documentación esta media chafa, es multiplataforma, y si aguanta arrays de veras grandes podría ser lo mas parecido a lo que necesitamos.

 

-Glut (openGl multiplataforma):

Glut es una librería que se encarga de efectuar los ajustes necesarios para la creación y manejo de ventanas, en diferentes sistemas operativos, utilizando el estándar openGL por desgracia no es open source, y en la parte de los controles interactivos de la imagen esta mas lento que una tortuga.

-Coin: es un software desarrollado por una compañía fresa para la visualización científica, el cual cuenta con una variante open source, por desgracia no parece documentado nada, así que apenas ando viendo que tal funcionan los ejemplos.

-VTK: es una librería de visualización de largos archivos de datos científicos, utilizada por varias universidades y creo que la NASA, se ve bastante bien, es open source, aunque por desgracia los manuales cuestan una lana, como 75 dólares, y me párese que no es tan buena para la animación de las imágenes en base a un flujo cambiante de datos, es mas para medicina y mapas (datos fijos) aunque una universidad tiene una variante de análisis de fluidos que se ve muy parecido a lo que me gustaría que hiciera la librería de autómatas. 

-DirectX:

DirectX es la prima dona de los video juegos, la verdad esta bastante bien hecha y es fácil de conseguir sus libros, y cuenta con una documentación bastante buena, lo malo es que es anti open source, y solo corre en Windows.

No queda claro que sea lo mejor o simplemente la mayoría de las maquinas del mundo tienen Windows y los vendedores de video juegos y de hardware se ven obligados y tentados a hacer drivers, hardware y juegos solo por ello.

Como sea ya se como hacer lo básico para hacer el automata en 2 dimensiones, y una vista demo aunque sea solo para ver si corre bien me resulta demasiado tentadora. (Tanto en openGL como en directX, existen arrays especificos para contener muchos elementos, lo cual creo aumenta mucho el desempeño de las librerias, aunque todavía me falta un poco para llegar a dominar sus respectivas especificaciones).

 

Con respecto a la concurrencia esta son las librerías que e empezado a inspeccionar:

-ZThread, en cuanto a diseño orientado a objetos esta me parece es la mejor planeada, y supuestamente funciona en Windows, y Linux, y a pesar de lograr compilarla, al correr los ejemplos de pensando en c++ como que los threads se pierden el espacio virtual, pero no se destruyen, así que algo raro pasa, y eso que los ejemplos y el capitulo del libro los ayudo a hacer el autor de la librería, claro todo funciona perfecto en Linux.

-MFC, están son las tétricas fundation class de Microsoft, y me temo que están súper raras y feísimas desde mi particular punto de vista, al menos en c++, ya que en c# se ven mucho mas bonitas, los threads aquí se dividen en worker threads, y user-interfaze threads, pero para c++ están mas feos que nada, cero orientación a objetos, en los worker threads funcionan solamente para funciones, como en c, es decir creas un thread para que ejecute una sola función, esta horrible, y aunque encontré unos wrapers para tener objetos threads, son freeware así que no me gusta nada, el interés surgía por la honda de hacer un interfaz de video juego de verdad con directX, pero están tan feos que ya no lo se bien.(aunque acabo de conseguir un articulillo de cómo hacer los wrapers para crear objetos threads, si ello funciona, creo que probare un patrón windowsero).

 

-Boost es una organización de miembros  del C++ Standards Committee Library Working Group para desarrollar nuevas librerías para c++ tiene aproximadamente 2000 miembros, dentro de boost se encuentran un montón de librerías útiles, open source claro, la de los threads, es la que intento utilizar para montar el patrón, a ver si pega con la vista en directX, aunque e de mencionar que también se hacer lo mismo con openGL en base a glut.

Además de contar con los threads, boost cuenta con la tan buscada librería de graficas, la cual cuenta con un chorro de algoritmos de teoría de graficas (los clásicos del camino mas corto entre nodos y así) para analizar y crear graficas especificas, el problemas es que crean un contenedor de tamaño variable (mucho mas lento que un array) para cada nodo de la grafica, lo que yo trate de evitar al máximo, para evitar tener miles de contenedores a la hora de crear una automata celular.

Como sea a la hora de los agentes me parece que va a venir como anillo al dedo, ya que los agentes van a estar cambiando de posición y el tener un contenedor dinamico para cada uno de los nodos no parece nada descabellado.

Y además me parece que la estructura de interacción de los agentes también se puede ver como una grafica.

Ya se vera como resulta, con suerte y me da tiempo de hacer un pequeño modelo con las dos variantes, una con boost y otra sin la librería para la parte de la lógica, y si no se da diferencia significativa en los tiempos, pues utilizar boost por la gran cantidad de algoritmos con los que ya se cuentan.

Hasta ahora todo a funcionado muy bien en windos y en Linux se habla mucho mas a favor de boost que posfix (o algo así), para ser utilizado por las clases bases de c++, ya que el comité anda buscando librerías para añadir por fin el multiproceso en c++ estándar. Por desgracia para jugar ping pong con dos threads hasta ahora solo e podido mandar los mensajes modificando variables estáticas, lo cual no me gusta tanto por que complicaría la posible creación (como me gusta soñar) de varias vistas y modelos para un mismo “juego” así que veremos como va la cosa.

 

 

Suerte a todos.

 

P.D. si se interesan por desarrollar algo en alguna de la librerías de las que hablo mándeme un mail y yo les digo que honda, donde conseguir el software ejem.. original y los respectivos libros que estoy siguiendo. Si se interesan en desarrollar en windos (claro), aunque en Linux, el c++ se ve que se da de maravilla, y todo menos directX es multiplataforma en lo desarrollado hasta ahora.

El Reporte de la Semana - Ouroboros o Algo Asi | Reporte Ouroboros  >

 

Related Links
  • Articles on Reportes
  • Also by angolero
  • Contact author
  • The Fine Print: The following comments are owned by whoever posted them.
    ( Reply )

    Threads y Redes
    by jergas on Sunday June 25, @09:17AM
    Hola Ouroboruseros,

    Vianagan, ya van faltando mas reportes (uno por semana). Creeme que si los leo.

    Pasando a cosas mas importantes, no habia escrito esto antes porque le he estado dando muchas vueltas. Es muy relevante lo del interfaz entre la vista y el modelo, y aunque parezca que no, tiene mucho que ver con lo de redes que esta viendo Panx.

    Sigue siendo para mi muy importante que sus modelos y sus vistas sean interoperables, y al mismo tiempo me es tambien muy importante que nuestro mundito sea distribuido, ya que no veo como un solo procesador podria hacer cosas interesantes, por mas jugo que le logremos exprimir.

    Si tomamos en cuenta las dos metas, creo que es un error que la vista y el modelo esten "tightly coupled". Si hacemos que la vista se comunique con el modelo via el mismo protocolo de redes que usen los modelos entre ellos, ganamos la compatibilidad de cajon. Tambien ganamos otras monerias, como poder apuntar la vista hacia otra maquina. Entiendo que posiblemente perderiamos algo de velocidad, pero creo que por mas velocidad que le demos a la vista, el modelo va a ser mas rapido, asi que de cualquier manera nos conviene desafanarlos.

    Bueno, podria decir mas, pero creo que asi es suficiente para abrir la discusion. Nos urge esta discusion para poder tomar decisiones e implementar.

    PS Urge que el trabajo de los dos este en sourceforge. Segun entiendo, sf ya tiene subversion, asi que no hay razon para no subir las cosas ya, es decir, no necesitan aprender cvs.
    [ Reply to this ]
    The Fine Print: The following comments are owned by whoever posted them.
    ( Reply )

    Powered by Zope  Squishdot Powered
      "Any system that depends on reliability is unreliable." -- Nogg's Postulate
    All trademarks and copyrights on this page are owned by their respective companies. Comments are owned by the Poster. The Rest ©1999 Butch Landingin.
    [ home | post article | search | admin ]