Spelling suggestions: "subject:"lenguaje dde programación"" "subject:"lenguaje dee programación""
1 |
Estudio del lenguaje de programación Haskell, ventajas y desventajas con respecto a otros lenguajes de programaciónInca Chiroque, Julita 08 April 2013 (has links)
El trabajo de tesis presenta al lenguaje de programación Haskell y realiza un estudio comparativo con respecto a lenguajes de programación que son promovidos con gran impacto en la actualidad en los ambientes: académico, industrial y científico.
Los lenguajes de programación que servirán como puntos de referencia de comparación para el presente estudio son: C/C++, Java y GOlang.
Los criterios de comparación tomados en cuenta en el estudio son: fácil escritura, fácil lectura, confiabilidad, soporte de genéricos y reflexión.
Se elige comparar los lenguajes mencionados con el lenguaje de programación Haskell, porque es un lenguaje que ha significado un reto para los estudiosos en Ciencias de la Computación de las universidades más prestigiosas del mundo, quienes diseñaron un lenguaje de programación que mejora y supera errores de diseño de lenguajes de programación convencionales.
En el primer capítulo se referencia estudios realizados acerca de los lenguajes de programación en las últimas décadas, la popularidad e impacto que tienen en el ámbito académico, industrial y científico, los lenguajes de programación C/C++, Java y GOlang. En el segundo capítulo se referencia estudios realizados acerca de la categorización de los lenguajes de programación a lo largo de la historia de los lenguajes de programación. En el tercer capítulo se detalla cada uno de los lenguajes de programación en mención, su origen, evolución, aplicaciones y tecnologías desarrolladas en las últimas décadas. En el cuarto capítulo se describen los criterios de evaluación de un lenguaje de programación, según autores de prestigio en el campo de las ciencias de la computación. En el quinto capítulo se realiza un estudio y desarrollo de programas en los lenguajes de programación elegidos para poder evaluar las ventajas y desventajas, con respecto a los criterios de evaluación elegidos: fácil escritura, fácil lectura, confiabilidad, soporte de genéricos y reflexión. / Tesis
|
2 |
Programación orientada a objetos. MTA001. Lenguaje de programación java29 April 2013 (has links)
Programación orientada a objetos. 1. Lenguaje de programación java
|
3 |
Gramáticas de atributos, clasificación y aportes en técnicas de evaluaciónArroyo, Marcelo Daniel 18 December 2008 (has links)
Las gramáticas de atributos, desde que fueron propuestas por Knuth en 1966, se han utilizado ampliamente para el desarrollo de herramientas de procesamiento de lenguajes formales como compiladores e intérpretes de lenguajes de programa-ción; como también para especificar la semántica de lenguajes. Las gramáticas de atributos son un formalismo simple para la especificación de la semántica de lenguajes formales, como ser lenguajes de programación o de especifi-cación. Integran la modularidad que brindan las gramáticas libres de contexto y la expresividad de un lenguaje funcional.
Si bien las gramáticas de atributos han sido ampliamente estu-diadas no es fácil encontrar definiciones precisas y rigurosas.
Los principales motivos del desarrollo de esta tesis son en primer lugar, obtener un material autocontenido sobre sus defi-niciones, extensiones, implementación y aplicaciones, ya que prácticamente no existen libros actualizados en el tema. En segundo lugar, se realiza un estudio profundo sobre nuevas clasificaciones propuestas y métodos de evaluación. En este último aspecto es donde se presentan los aportes más signifi-cativos de esta tesis. En este trabajo se presentan las gramá-ticas de atributos en su forma clásica, mostrando definiciones más precisas que las que se pueden encontrar en la bibliografía
tradicional. Se describen diferentes clasificaciones y métodos de evaluación secuenciales y concurrentes. Entre los principa-les aportes de este trabajo, se propone un algorimo eficiente de evaluación dinámica bajo demanda, que puede aplicarse para la evaluación de cualquier gramática de atributos bien definida (no circular). Este algorimo se ha implementado en la herramienta agcc, la cual ha sido desarrollada en el marco de este trabajo. Se analiza una nueva clasificación, la jerarquía NC, propuesta por Wuu Yang en 1999 y se relaciona con la clasificación tradicional. Se describe NCeval, una herramienta desarrollada en el marco de esta tesis, la cual genera evalua-dores estáticos para la familia NC(1). Un evaluador generado por NCEval realiza la evaluación disparando procesos o tareas concurrentes que no requieren sincronización, ya que operan sobre conjuntos independientes de instancias de atributos.
El método de particionado usado en NCEval está basado en las dependencias y se demuestra que la partición inducida sobre el conjunto de atributos es la mas fina posible. Hasta el momento, no se conocen herramientas que utilicen este enfo-que. Finalmente se describe agcc (Attribute Grammars Compiler Compiler), herramienta desarrollada en el marco de esta tesis, la cual tiene un diseño totalmente modular per-mitiendo su extensibilidad tanto en los generadores de código como en los métodos de evaluación utilizados. Acepta la familia más amplia de gramáticas de atributos para las cuales pueden generarse evaluadores estáticos
|
4 |
Modular composition of session typesSoto Ridd, Gustavo Andrés January 2015 (has links)
Magíster en Ciencias, Mención Computación / Ingeniero Civil en Computación / En el campo de los sistemas distribuidos, lograr la coordinación entre diversas unidades de cómputo y sub-sistemas es una tarea compleja, pues cada unidad de computo se comporta distinta a las demás, de forma concurrente y de manera descentralizada. Con el fin de expresar como diversas unidades de computo se comunican unas con otras, se utilizan definiciones de protocolos.
Session types son una disciplina de tipos que permite lograr la coordinación entre muchos participantes de un sistema distribuido, mediante la definición de un protocolo coreográfico. La disciplina de tipos impone condiciones sobre la coreografía con el fin de asegurar que el sistema distribuido que la implementa se comporta de la forma en la que fue definido y además posee garantías sobre propiedades de la comunicación. Entre las propiedades importantes
se encuentran la ausencia de: deadlocks, mensajes huérfanos y recepciones inesperadas de mensajes. La coreografía es expresada como una entidad global, la cual es projectada a distintos tipos, uno para cada participante involucrado en la coreografía. Dichos tipos son usados para un proceso de typecheck que verifica que las implementaciones de las unidades distribuidas, llamadas procesos, se comportaran en la interacción global como se espera.
Se muestra que lograr modularidad en session types no es trivial. Para ello, se presenta
un caso de estudio en el que el uso de definiciones modulares para session types introduce problemas en el comportamiento global luego de su composición. Comenzando desde el caso de estudio, se explica como se introducen dichos problemas al componer sub-sessiones. Se muestra como los problemas globales pueden ser evitados gracias al uso de un mecanismo de composición que se basa en interacciones de bloqueo entre participantes.
En este trabajo se desarrolla una extensión de un sistema de tipos que permite la composición modular de session types (MCST). MCST se basa en condiciones impuestas sobre definiciones modulares de sub-sessiones, además de un sistema de tipos que permite verificar sub-sessiones por separado, y un mecanismo de composición que produce sistemas bien formados. La solución presentada es modular, dado que mantiene sus definiciones separadas con el fin de reusarlas. Las condiciones para verificar correctitud no dependen del contexto en el cual una sub-session es llamada.El mecanismo de composición reusa conceptos de
inlining y composición con ciclos de trabajos previos, haciéndolas aplicables en más casos, lo que resulta en un sistema más expresivo. MCST mantiene las garantías de comunicación de session types mencionadas previamente. Ademas, MCST mejora la expresividad de session types, dado que la nueva disciplina de tipos con el mecanismo de composición permite definir coreografías que no son permitidas en el estado del arte de session types.
|
5 |
Customizable gradual effects for scalaToro Ipinza, Matías January 2015 (has links)
Magíster en Ciencias, Mención Computación / Operaciones realizadas por un programa de computación pueden producir efectos. Efectos computacionales pueden ser definidos como operaciones que interactúan y que se comunican con su ambiente. Ejemplos de efectos son imprimir en pantalla, leer data de usuarios, asignación de memoria, excepciones, etc. Una función que no produce efectos es llamada una función pura. Los sistemas de efectos ayudan a controlar estos efectos colaterales . Por ejemplo, permite correr funciones puras en paralelo sin temer a obtener carreras de datos. Una function pura también preserva la transparencia referencial, asegurando que si una función es aplicada con los mismos argumentos más de una vez, el resultado sigue siendo el mismo.
En este trabajo se diseñó y desarrolló un sistema de efectos genérico que se caracteriza por ser práctico, combinando para ello tres conceptos de efectos fundamentales: efectos graduales, efectos polimórficos y efectos personalizados.
Debido a que la verificación estática puede ser demasiada restrictiva (algunos programas válidos son rechazados), Bañados et al propusieron una teoría que mezcla chequeo de efectos dinámico y estático, permitiendo a desarrolladores a adaptar gradualmente una disciplina de efectos en proyectos existentes. Este sistema de efectos graduales da la flexibilidad para moverse entre un sistema completamente anotado con efectos (estático) a uno sin anotaciones de efectos (dinámico), introduciendo chequeos en tiempo de ejecución cuando sea necesario.
Rytz et al diseño e implementó un sistema de efectos polimórficos, el cual incrementa la expresividad de los sistemas de efectos usando patrones de orden superior para efectos. Una función es polimórfica en los efectos de su argumento si es que los efectos de la función depende de los efectos de su argumento. Esto permite expresar funciones como map, pura en efectos salvo por los efectos que la función que recibe como argumento pueda producir.
En general los dominios de efectos carecen de localidad: tienen un alcance muy general. Por ejemplo: no es necesario considerar toda operación de entrada/salida como un efecto. Los sistemas de efectos no permiten hacer un seguimiento de efectos de operaciones específicas definidas por el usuario. Incorporar y personalizar un sistema de efectos requiere conocimientos previos acerca de sistemas de efectos. Inclusive, con la experiencia adecuada, implementar una disciplina de efectos puede ser difícil o lento. Es necesario un sistema que permita la fácil creación de dominios de efectos.
El trabajo de ésta tesis consiste en tres partes. La primera parte extiende la formalización del sistema de efectos graduales añadiendo efectos polimórficos. En la segunda parte se diseña la sintaxis y semántica necesaria para crear dominios de efectos a través de un lenguaje específico de dominio (DSL). El DSL permite la creación de dominios de efectos con estructuras y relaciones complejas, y la especificación de donde los efectos deben ser producidos mediante especificaciones de efectos externa. También se entrega una formalización del DSL extendiendo el sistema de efectos combinado de la primera parte. La tercera y final parte consiste en la implementación del sistema final de efectos y del DSL en el lenguaje de programación Scala a través de plugins para el compilador.
|
6 |
Intérprete y entorno de desarrollo para el aprendizaje de lenguajes de programación estructuradaHirsh Martínez, Layla 30 November 2011 (has links)
Este proyecto tiene como objetivo principal el diseño, desarrollo e implementación de un
intérprete de un lenguaje de programación que pueda ser usado en los primeros cursos de
introducción a la computación. El trabajo muestra cómo se pueden crear intérpretes, lo que
en nuestro país tiene escasa tradición, a diferencia de lo que ocurre en los países más
desarrollados. Además, presenta un entorno de desarrollo integrado para facilitar la
introducción a la programación, ofreciendo un ambiente amigable y un lenguaje de
programación totalmente basado en el idioma español. En opinión de la autora esta
segunda característica favorecerá a que el alumno entienda mejor el lenguaje y los
procesos de computación.
En el capítulo 1 del presente documento se presenta la descripción del problema de escoger
un lenguaje adecuado para la enseñanza de los primeros cursos de programación, las
opciones que tenemos en nuestra actualidad y una posible solución a este problema.
En el capítulo 2 se formula una propuesta que resuelve el problema planteado en el capítulo
1 que permite definir el lenguaje, su funcionamiento y el entorno en el que se ha de ejecutar.
El capítulo 3 presenta la implementación del intérprete y la del entorno, propuestos
anteriormente.
En el capítulo 4 se exponen las observaciones, conclusiones, recomendaciones y trabajos
futuros, tanto del intérprete como del entorno. / Tesis
|
7 |
Intérprete para un lenguaje de programación orientado a objetos, con mecanismos de optimización y modificación dinámica de códigoGómez Díaz, Renzo Gonzalo, Salamanca Guillén, Juan Jesús 06 September 2012 (has links)
Este trabajo trata sobre la implementación de un intérprete para un lenguaje
propio, que incluye algunas características que no son abordadas en cursos
básicos de Desarrollo de Compiladores. Estas características son: lenguaje
de programación orientado a objetos, modificación dinámica de código y
optimización de código intermedio.
El objetivo de este proyecto es presentar estas características, proponer una
forma de implementación de las mismas y finalmente proceder a
implementarlas. De tal manera que este trabajo contribuya al aprendizaje de
construcción de intérpretes o compiladores, sirviendo como un caso de
estudio para aquellas personas que tengan como objetivo profundizar en el
tema, y por consiguiente un posible punto de partida para futuros trabajos.
Por otro lado, es necesario validar los resultados obtenidos por el optimizador,
así como la eficiencia de la forma implementación escogida, por lo que se
incluye también una experimentación numérica que permite comprobar las
hipótesis planteadas al inicio.
En la primera parte, se define el problema identificado, luego se describe un
breve marco teórico con los principales conceptos involucrados en el
desarrollo del proyecto, seguidamente se muestra el estado del arte con
relación a compiladores e intérpretes y se describe la solución al problema
planteado al inicio. En la segunda parte, principalmente, se describen los
objetivos del proyecto, los aportes específicos, los resultados esperados y las
hipótesis.
Como se mencionó anteriormente, uno de los objetivos que se persigue es
que la tesis pueda servir como un caso de estudio para las personas
interesadas y una posible base para trabajos futuros; por lo tanto, es
necesario explicar la implementación con un nivel de detalle adecuado. En
ese sentido, se describe las distintas partes de la implementación escogida:
se comienza con la descripción de la gramática del lenguaje, después se
describen las estructuras utilizadas, algunas operaciones primitivas, el código
intermedio generado, las principales acciones semánticas, la
interpretación, la administración de memoria, los algoritmos de
optimización, el diseño del IDE y el ambiente de desarrollo. / Tesis
|
8 |
Software Libre: una nueva alternativa tecnológicaDelgado Bustamante, Abel, Garreaud Perea, Raúl January 2007 (has links)
Desarrolla un estudio sobre la implementación de la infraestructura tecnológica para un negocio, según su requerimiento, cuyo objetivo primordial es la demostración de la viabilidad de implementar un centro de cómputo o área de informática, incluyendo las alternativas de evaluación el software libre.
|
9 |
Concurrencia tradicional en programación funcionalMocciola, Pablo Andrés January 1998 (has links)
No description available.
|
10 |
Plataforma de comunicación entre Live Robot Programming y el Robot AR.Drone 2.0Hernández Phillips, Carolina Massiel January 2016 (has links)
Ingeniera Civil en Computación / La robótica es un área de estudio joven que presenta gran potencial de progreso. Esto incita
a expertos de diversas áreas a contribuir en su desarrollo mediante proyectos de investigación
y de ingeniería. En este escenario el estudiante Miguel Campusano y el profesor Johan Fabry,
ambos integrantes del DCC de la Universidad de Chile, proponen un lenguaje de programación
para robots denominado LRP. Este lenguaje es implementado en Pharo Smalltalk, un lenguaje
de programación caracterizado por su fuerte orientación a objetos y su poderoso ambiente de
desarrollo.
Utilizar LRP con un robot determinado requiere una aplicación estilo puente escrita en Pharo,
que sirva como interfaz de comunicación entre el lenguaje y el robot. Previo a la realización de
este trabajo, sólo dos puentes habían sido implementados. Estos permitieron hacer de pruebas con
algunos robots. No obstante, para nes investigativos es muy deseable utilizar el lenguaje LRP
con tantos robots como sea posible. El AR.Drone 2.0, de la empresa Parrot, es un cuadricóptero
eléctrico no tripulado, controlado remotamente y que cuenta con diversos sensores. Este robot
es un excelente caso de prueba para LRP, dada su gran diferencia con los robots utilizados
anteriormente.
La solución presentada en este trabajo de memoria contempla la implementación de la infraes-
tructura necesaria para hacer pruebas utilizando LRP con el AR.Drone y su validación mediante
distintos programas de prueba implementados en LRP. Se ha creado una API capaz de comuni-
carse con el drone y la aplicación tipo puente requerida. Ambas aplicaciones fueron escritas en
Pharo.
La API permite establecer una conexión con el drone, recibir los datos que publica y enviar
comandos de control y con guración. El puente adapta una serie de métodos de la API y permite
utilizarlos desde LRP. Provee además mecanismos intuitivos para que el desarrollador interactúe
directamente con el drone durante una sesión de programación. La mayoría de las di cultades
enfrentadas durante el desarrollo de la API se debieron a la indocumentación de características
o requerimientos impuestos por el rmware del drone. Por otro lado, el desarrollo de esta he-
rramienta permitió generar conocimiento técnico especí co sobre el AR.Drone, relevante para
trabajos posteriores que utilicen este robot.
Los programas de ejemplo creados en LRP evidenciaron que no todas las cualidades de la
modalidad de programación en vivo pueden ser aprovechadas trabajando con un robot aéreo.
Esto porque es difícil restringir límites para el movimiento del robot, por su limitado tiempo
de autonomía y porque la interrupción de una sesión, producto de un choque por ejemplo,
implica que el desarrollador deba suspender su trabajo para reposicionar y despegar el robot.
Sin embargo, live programming permitió ajustar las variables asociadas a programas ya creados,
lo que adquiere gran valor al momento de establecer distancias esperadas para el recorrido del
robot. Finalmente, la sintaxis de LRP y sus diagramas de estado animados en vivo facilitaron
enormemente el proceso de desarrollo.
|
Page generated in 0.0713 seconds