close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Características técnicas del lenguaje TOL

Estas son algunas de las características técnicas más importantes del lenguaje y que más han influido en el diseño y la implementación de TOL

  • El lenguaje TOL ha sido implementado en C++ por ser uno de los lenguajes más rápidos, potentes y versátiles que existen. Desde luego, también es uno de los más complicados y de los que más tiempo de formación requieren.
  • Se ha desarrollado con vocación multiplaforma y se ha compilado el código bajo Windows y bajo diferentes sistemas UNIX (LINUX, HPUX, AIX, IRIX y SOLARIS); intentando siempre que el código sea lo más compatible posible y utilizando macros para encapsular las diferencias. No obstante, para algunas rutinas de bajo nivel no ha habido más remedio que hacer implementaciones ad hoc para cada sistema operativo.
  • El lenguaje dispone, prácticamente desde su inicio, de un entorno gráfico llamado TOLBASE que ha facilitado la labor del analista permitiéndole obtener representaciones gráficas y tabulares, de los objetos programados, como series temporales, conjuntos temporales, matrices, funciones, conjuntos, etc, pudiendo navegar por un sistema arbóreo de visualización de los objetos organizados en conjuntos indentados. Esta particularidad ha influido en la estructura del lenguaje pues los objetos definidos deben sobrevivir en memoria después del tiempo de ejecución del programa, al contrario de lo que ocurre con muchos otros lenguajes de programación.
  • TOL es un lenguaje de programación interpretado, lo cual facilita el uso y el aprendizaje de los analistas. En dos o tres meses se puede alcanzar un nivel de programación aceptable partiendo de personas sin formación informática específica y con poca o ninguna experiencia en programación.
  • Es un lenguaje fuertemente tipado aunque existe un tipo comodín llamado Anything que permite construir funciones que traten objetos de diferentes tipos, característica ésta de la que no conviene abusar.
  • TOL permite crear estructuras de datos y funciones de usuario con lo que el analista puede ampliar el lenguaje y adaptarlo a sus necesidades guardando en ficheros el código y organizándolo en bibliotecas. El sistema TOL, de hecho, no sólo consta de código C++ sino que se complementa con una serie de bibliotecas básicas. Sólo por razones de eficiencia conviene a veces crear algunas nuevas funciones en C++.
  • TOL admite recursividad en las funciones (monocíclica y policíclica); esto es, una función se puede llamarse a sí misma o a otras que a su vez llamen a otras y así sucesivamente hasta que alguna vuelva a llamar a la inicial. Esto ofrece grandes ventajas en cuanto a potencia y claridad del código pero no se debe abusar porque se carga demasiado la pila de llamadas y puede dar lugar a errores del tipo stack overflow.
  • Es un lenguaje autoevaluable, es decir, se puede usar el lenguaje para construir código TOL y evaluarlo en tiempo de ejecución. Esta es una de las características más productivas de TOL a la hora de enfrentar problemas masivos en los que un código ha de ejecutarse muchas veces con variaciones derivadas de una cierta estructura de datos.
  • TOL es básicamente declarativo pues como ya se ha dicho, los objetos no son el medio sino el fin del lenguaje. Incluso las funciones son objetos de tipo Code y pueden ser argumentos de otras funciones y almacenarse en estructuras permitiendo la construcción de algoritmos complicados de forma estructural y no secuencial. A pesar de ello se han ido introduciendo algunas capacidades de control del flujo propias de los lenguajes secuenciales para dotar al programador de mayor potencia de implementación algorítmica. Por ser un lenguaje interpretado, el control de flujo es necesariamente más lento que en los lenguajes compilados.
  • Una de las tareas más complicadas de la programación es el manejo eficiente de la memoria por ser éste uno de los recursos más caros y limitados de la computadora. El manejo de memoria en TOL es dinámico y transparente al usuario, los objetos existen mientras son necesarios y desaparecen cuando nadie los usa, todo ello merced a un sistema de referencias.
  • Implementa una representación algebraica del tiempo que permite manipular conjuntos temporales y series temporales como objetos virtualmente infinitos, que no son representables por extensión como tipos de datos en el sentido clásico de la programación, sino que más bien son clases definidas por funciones que determinan su comportamiento requiriéndose un lenguaje de programación orientado al objeto como lo es C++. Esto obliga a plantear un mecanismo de evaluación de tipo lazy, es decir, la evaluación del objeto se retrasa al momento en que es requerido por otro objeto, puesto que la información que lo constituye no puede ser enumerada sino que se construye la información necesaria cada vez que hace falta a partir de ciertos métodos intrínsecos.
Last modified 15 years ago Last modified on Nov 27, 2009, 6:55:50 PM