UNIVERSIDAD DE TARAPACA DE ARICA ESCUELA UNIVERSITARIA DE INGENIERIA INDUSTRIAL, INFORMATICA Y DE SISTEMAS. AREA DE COMPUTACION Primer Informe Lenguaje de Programación CLEAN Integrantes: Angela Ossandon C. Alexis Beroiza R. Rubén Saavedra T. Claudio Olivares C. Profesor: Ricardo Valdivia P. Asignatura: Fundamentos de lenguajes de Programación Índice pág. Introducción 3 Historia 4 Paradigma de computación 7 Dominios de Aplicación 8 Implementación del Lenguaje de Programación 11 2 Introducción En el presente informe nos referiremos mas detalladamente al lenguaje de programación seleccionado por nuestro grupo para el proyecto de la asignatura Fundamentos de lenguajes de programación, el cual es Clean. Clean es un lenguaje de programación con el objetivo principal de ser un lenguaje funcional puro y “perezoso” diseñado para realizar aplicaciones en el mundo real. Clean es el único lenguaje funcional en el mundo que ofrece la singularidad de mecanografía. Este tipo de sistemas hace que sea posible en un lenguaje puramente funcional y hacer interfaces directos en el mundo exterior al imperativo, este tipo de sistema hace posible el desarrollo de aplicaciones eficientes. El sistema de Clean es un sistema de desarrollo de software para el desarrollo de aplicaciones de Clean, este sistema esta disponible en muchas plataformas (PC, Mac, SUN) y sistemas operativos como (Windows’ 95/98/2000/NT, Linux, MacOS, Solaris). De las cuales las principales plataformas son PC y Mac. El sistema de Clean es un sistema de pleno derecho q puede ser utilizado en ambientes industriales, también el sistema Clean es un producto comercial de Hilt – Herramientas de software de alto nivel BV, además Clean se puede descargar de forma gratuita 3 Historia En 1984 un grupo de investigación tecnológica de software de la universidad de Radboud en Nijmegen Holanda, trabaja sobre lenguaje funcional y lo llamaron Clean. Clean al ser fuertemente tipado se basa en algunas extensiones de la conocida Milner / Hindley / Mycroft tipo de inferencia / régimen de control (Milber 1978); (Hindley 1969); (Microft 1983) incluido el común de orden superior de tipos, tipos polimórficos, tipos algebraicos, tipos de sinónimos y tipos existencialmente cuantificados, también Clean a sido influenciado por Lean y Haskell, Pero principalmente es basado en el tipo de inferencia y comprobación de Scheme de ahí que se puede deducir su origen con más exactitud el cual se representa en la siguiente línea de tiempo: 4 Desde entonces Clean fue evolucionando y perfeccionándose en diferentes versiones las cuales son: Clean v1.0: el anuncio de esta versión fue realizado para diferentes tipos de plataformas, la primera de ellas fue Macintosh en mayo de 1995, Macintosh y PC(OS/2) en Junio de 1995, Macintosh (Motorola), PC(OS/2), PC (Linux) y Sun4 (SunOS) en septiembre de 1995 y Sun4 (Solaris) en Octubre de 1995. Clean v1.1: También esta versión fue realizada para diferentes tipos de plataformas, primero fue Macintosh en marzo de 1996, el lanzamiento para Mac/68k, Sun / SunOS, Sun / Solaris Y PC / Linux fue realizado en Agosto de 1996, Clean v1.2: Esta versión esta disponible para las plataformas Mac y PowerMac en enero de 1997, este sistema viene en tres versiones: CLEAN12.68k.sea.hqx: Clean 1,2 por 68k Mac. CLEAN12.ppc.sea.hqx: CLEAN 1,2 para PowerMacs. CLEAN12.both.sea.hqx: CLEAN 1,2 por 68k y PowerMacs. No obstante podemos destacar la versión Clean 1.2.3 ya que fue la primera versión disponible para Windows95 Clean v1.3: Una nueva versión (la 1.3) está ahora disponible para Windows95/NT, Mac, Linux y Solaris al mismo tiempo. Las nuevas características incluyen: Tiempo profiler (PowerMac y Windows), el espacio profiler (PowerMac), el 22 de mayo de 1998. Las últimas versiones disponibles son 1.3.1 para Solaris, Linux ELF y MkLinux el 11 de enero de 1999. Seguida por Clean 1.3.1 para Windows 96/98/NT y PowerMac el 20 de enero de 1999. Clean v2.0: se libera para la plataforma Windows el 21 de diciembre de 2001. Incluye una herramienta de prueba dedicada a los programas de Clean, la dinámica y la vinculación a escribir, y muchas nuevas características de lenguaje. 5 Clean 2.0.1 se libera para PC, PowerMac, Linux y Solaris el 4 de julio de 2002. Incluye una herramienta de prueba dedicada a los programas de Limpieza (Destello), la dinámica y la vinculación a escribir, y muchas nuevas características de lenguaje. Clean v2.1: Clean 2.1.0 es liberado para Windows, MacOS X, Linux y Solaris el 31 de octubre de 2003. Las principales nuevas características son: resumen sinónimo tipos, caja de registros, desbordamiento de pila sin controles generales, optimizaciones del código, la optimización de enlaces para Linux y Solaris, MacOS X apoyo a Objeto de E / S 1,2. y el IDE, dirigirá la generación de código en Solaris, la versión para Linux que bootstraps ABC de archivos, importantes mejoras en la dinámica de aplicación en Windows. 6 Paradigma de computación El lenguaje de programación funcional Clean Un lenguaje de programación funcional como Clean se basa en el concepto de funciones matemáticas. Clean es un lenguaje funcional puro, no hay tal cosa como una cesión. Esto tiene una gran ventaja: una función no puede tener un efecto secundario. A Clean función referencial es transparente: el resultado de una función sólo depende del valor de la función de argumentos y en nada más. Esto tiene importantes consecuencias: Una vez que la función es de trabajo, siempre trabajo. Una función siempre reaccionan de la misma manera, sin tener en cuenta cuándo y en qué contexto se usa esta función; Una razón puede ser Clean sobre las funciones y la limpieza del programa en su conjunto (que es una función de aplicación) mediante el uso tradicional de razonamiento matemático: la sustitución de uniformes y de inducción matemática. Para hacer el mundo real las necesidades de un curso para poder actualizar una base de datos, realizar I / O, actualizar una serie destructiva, pasar un mensaje a otro programa. Y, la solicitud deberá ejecutar de manera eficiente suficiente. Aunque Clean no tiene asignaciones, los objetos se pueden actualizar destructivamente. Clean es el único lenguaje funcional en el mundo que tiene un sistema de tipo especial, singularidad a escribir. Este tipo de sistema se desarrolla en Nijmegen. Permite actualizar los argumentos y conservar la pureza de la lengua. Clean es pura o meramente funcional, en informática este termino es utilizado para describir algoritmos, estructuras de datos o los lenguajes de programación la propiedad puramente funcional de las estructuras de datos puede ser ventajosa en el desarrollo de muchas aplicaciones que ocupan de múltiples versiones de un objeto, además Clean es el único lenguaje funcional en el mundo que ofrece la singularidad de mecanografía, esto hace posible que sea un lenguaje puramente funcional para incorporar las actualizaciones de destrucción arbitraria de estructuras de datos (incluyendo arreglos) 7 Dominios de Aplicación Para las personas q están familiarizadas con otros lenguajes funcionales, como Haskell, damos aquí una breve lista de las características: Clean es un perezoso, lenguaje funcional puro de programación de orden superior, con gráfica explícita y semántica que permite la reescritura; se puede definir explícitamente el intercambio de estructuras (estructuras cíclicas también) en el lenguaje; Aunque Clean es por defecto un lenguaje vago se puede convertir en un lenguaje estricto para obtener óptimos comportamientos en tiempo / espacio: las funciones se pueden definir fácilmente, así como en sus argumentos pueden ser más estrictos, como también sus estructuras. Debido a ser fuertemente tipado de Clean está en la obligación de inicializar todos los objetos que se están creando. En tiempo de ejecución los errores sólo pueden producirse en un número muy limitado de casos: cuando parcialmente las funciones se llaman con argumentos fuera de su dominio (por ejemplo, dividir por cero), cuando los arreglos se les accede con índices fuera de rango y cuando no hay suficiente memoria (heap o bien el espacio de pila) que se asigna a una aplicación Clean; Tipo clases y el tipo constructor se prestan a hacer uso de la sobrecarga de funciones y operadores. Clean ofrece los siguientes tipos predefinidos: enteros, reales, booleanas, caracteres, cadenas de texto, listas, tuplas, registros, (actualizable destructiva) y arreglo de archivos; Se puede definir funciones en el ámbito local, utilizando los bloques. la característica clave de Clean es su singularidad de tipo polimórfico, sistema de inferencia, una extensión de la Milner / Hindley / Mycroft tipo de inferencia / sistema de control que permite un refinado control sobre el uso único de los objetos, con la singularidad de este tipo de sistema se puede influir en el tiempo y el espacio en que se comportan los programas, puede utilizarse para incorporar las actualizaciones destructivas de objetos dentro de un marco funcional puro, permite la transformación destructiva de información de estado, que permite la interconexión eficiente a los mundos no funcionales (en C, sino también para I / O como los sistemas X - Windows) que ofrece acceso directo a sistemas de ficheros y 8 sistemas operativos; Clean es un lenguaje modular que permite la compilación separada de módulos, uno define los módulos de aplicación y la definición de módulos; hay una instalación de forma implícita y explícitamente de las definiciones de importación de otros módulos; Clean ofrece una sofisticada biblioteca E / S con el que la ventana interactiva basada en las aplicaciones (y la manipulación de menús, diálogos, ventanas, ratón, teclado, temporizadores y eventos planteadas por sub-aplicaciones) puede especificarse compacto y elegante en un nivel muy alto de la abstracción; GUI basado en programas escritos en Clean utilizando el v0,8 biblioteca E / S puede ser portado sin modificación de código fuente para cualquiera de las muchas plataformas. Clean también se destaca por sus diversos tipos de aplicaciones las cuales son: Su entorno de desarrollo integrado: o Clean es un sistema simple y estable que viene con un programa dedicado Desarrollo Integrado de Medio Ambiente, el Clean IDE. El IDE es el núcleo del Sistema de Clean que forma la interfaz para el programador. Se trata de un dedicado editor y gerente del proyecto que permite a un programador generar y poner en marcha una aplicación con sólo pulsar un botón. 9 o Desarrolle su propia plataforma de juegos El nuevo Clean Objeto de E / S 1,2 Biblioteca viene con soporte para la creación de su propia plataforma 2D-juegos. La extensión de construir juegos ha sido desarrollado por Mike Wiering durante su Magíster, era su proyecto de tesis. Un documento sobre este proyecto ha aparecido en las seleccionadas Actas del Taller IFL'99. La biblioteca para crear juegos es la 1.2.1 Biblioteca de Juegos. Se puede crear juegos completos en tan sólo una fracción del tiempo que tomará mediante la utilización de un lenguaje tradicional. Por ejemplo, el Sinterklaas juego contiene menos de 3000 líneas de código limpio. o Hay unos nuevos fines especiales programa de dibujo, un Tile Editor. Con el Editor de baldosa se puede hacer baldosas que puede ser usado para hacer los sprites (imágenes), animaciones y las capas de fondo. 10 Implementación del Lenguaje de Programación Analizando e investigando nuestro lenguaje de programación Clean podemos determinar basándonos en los apuntes del curso y la página principal de nuestro lenguaje http://clean.cs.ru.nl/About_Clean/about_clean.html Podemos determinar que su categoría de traducción es Compilado, este tipo de lenguaje existe una traducción (Compilador) a lenguaje de maquina previa a la ejecución. Clean entra en la categoría de lenguajes compilados ya que crea un archivo ejecutable para poder ejecutar el programa, pero para llegar a la creación de este archivo ejecutable en clean se deben realizar una serie de pasos previos. Una de las características de Clean es como funciona debido al cálculo grafico se basa en la reescritura y la reducción constante, como son los números de los gráficos. Esto, combinado con la compilación de código nativo, hace que Clean genere programas relativamente regidos, incluso con alta abstracción. Esto se realiza de la siguiente forma 1. Un archivo fuente (.lcl) y un archivo de proyecto (.Dcl) se convierten en la plataforma independiente de limpieza del Bytecode (.Abc), implementado en C y Clean. 2. El Bytecode se convierte a código objeto (.Obj) usando C. 3. El código objeto esta relacionado con oros archivos en el modulo de tiempo de ejecución y el sistema y es convertido en un ejecutable normal de Clean 11