Vida Artificial

Investigación

Artículos

Autor

Otros

Búsqueda de un Lenguaje de Programación

Antecedentes

Las primeras simulaciones para probar conceptos propios de vida artificial fueron implementadas utilizando Java (applets). Tiempo después fue descartado por su lentitud en simulaciones de uso intensivo de CPU. De clic aquí para mas detalles.

Se cambió a Visual C++, el cual mostró un aumento dramático en desempeño. Hasta ahora todas las simulaciones son solo texto (aplicaciones de consola) las cuales requieren de entrada un archivo texto .INI.

Con Visual C++ se ganó eficiencia, pero hacer aplicaciones gráficas Windows (como el graficador 3D) es mas difícil de lo que creí empezando porque hay código generado por los "wizards" el cual no se debería tocar pero que está mezclado con código propio.

La investigación de vida artificial entrará en una nueva etapa, la cual se caracteriza por estar en entorno gráfico. Hay varias razones para ello: una es hacerla llamativa al público en general, otra porque estoy interesado en mejorar mis habilidades de programación en Windows en un lenguaje de programación de propósito general. Una tercera razón, no menos importante: el comportamiento gráfico que exhibirán las simulaciones me permitirá ver relaciones, patrones que no detectaría en un ambiente texto, los seres humanos hemos evolucionado en un ambiente de riqueza visual. Los ambientes textos son una representación de nuestros pensamientos pero es muy limitada.

Fase 1: Ambiente Gráfico y Facilidad de Uso

El desarrollo del graficador 3D tanto en Java, Delphi 6.0 y Visual C++ 6.0 me permitió concluir:

Java es fácil, 100% orientado a objetos (obligatorio), buen manejo gráfico, adecuado manejo de cadenas (strings) y sintaxis muy parecida a C++ en el lado negativo, es lento.

Visual C++ 6.0 es muy rápido en proceso y gráfico, se labora orientado a objetos (aunque uno puede eludir fácilmente esto), excelente manejo de cadenas (strings) porque se trabaja directamente sobre posiciones en memoria, en el lado negativo, el código tiene multitud de instrucciones generadas por los "wizards" que se mezclan con código propio y hace difícil el mantenimiento y el manejo de eventos que es "puro Windows" dificulta entender el programa.

Delphi 6.0 tiene las mismas ventajas de Visual C++ 6.0 y no tiene el problema de mantenimiento y eventos, los cuales en Delphi están implementados como Java o Visual Basic.

El ganador es Delphi.

Fase 2: Desempeño

En las simulaciones de Vida Artificial es muy importante el desempeño. Este tipo de algoritmos hace uso intensivo de CPU (un uso del 100%). En el Graficador 3D el desempeño tanto en Visual C++ como en Delphi fue similar, no se observan diferencias notables, por lo tanto, se requiere de pruebas de desempeño mas formales. Para tal fin se hizo varias pruebas con ciclos, evaluando exclusivamente la velocidad en manejo de memoria y operaciones matemáticas.

Cómo se probó: Se tomaron 3 ecuaciones típicas y se le pidió al evaluador de expresiones tanto en Visual C++ 6.0 y Delphi 6.0 que las calculara de 100.000 a 1'.000.000 de veces (sin usar el método optimizado sino examinando ecuación cada vez desde el principio).

Los resultados fueron:

image

Descargue documento comparativo (Excel 2000)
Descargue fuente del Test de Velocidad en Delphi 6.0 y Visual C++ 6.0

Delphi 6.0 tardó el doble de tiempo para terminar cada prueba. Aquí podemos notar que Visual C++ 6.0 es el campeón en velocidad.

Nota: Los tiempos medidos en cada aplicación fueron de procesamiento puro, no se tuvo en cuenta el tiempo que se gastaba en imprimir el resultado.

Conclusiones:

Complicada la decisión, Delphi 6.0 ofrece una facilidad y estabilidad para desarrollo de aplicaciones Windows pero demora el doble en hacer operaciones en memoria y matemáticas que su contendor Visual C++ 6.0, pero este último peca por dificultad. Tengo entonces las siguientes alternativas:

  1. Probar un nuevo lenguaje: Borland C++ 5.0

  2. Ambiente gráfico en Delphi 6.0 y motor de vida artificial en Visual C++ 6.0 en un DLL

  3. Hacer pruebas de concepto en Delphi 6.0 y cuando haya algo prometedor entonces pasarlo todo a Visual C++ 6.0 (requiere estudiar este lenguaje después).

1