Download Diseño de Lenguajes
Document related concepts
Transcript
Diseño de Lenguajes Definición • Cualquier notación para la descripción de algoritmos y estructuras de datos. • Son más interesantes los que son implementados. • A programming language is a machinereadable artificial language designed to express computationsthat can be performed by a machine, particularly a computer. Programming languages can be used to create programs that specify the behavior of a machine, to express algorithms precisely, or as a mode of human communication. Por qué se deben estudiar los L.P. • Mejorar su habilidad para desarrollar algoritmos efectivos. • Mejorar el uso de su lenguaje de programación. • Aumentar su vocabulario de constructos de programación útiles. • Permitir una mejore escogencia de un lengaje de programación. • Facilitar el aprendizaje de un nuevo lenguaje de programación. • Facilitar el diseño de nuevos lenguajes. Atributos de buenos lenguajes • • • • • • • • Claridad, simplicidad, unidad Ortogonalidad Naturalidad de la aplicación Apoyo a la abstracción Facilidad de verificación Ambiente de programación Portabilidad Costp Atributos: Clarity, Simplcity and Unity • Un lenguaje provee – Marco conceptual para pensar en los algoritmos – Medio de expresión para expresar algoritmos • Debe apoyar al programador antes de la etapa de codificación. • Debe proveer un conjunto de conceptos (claros simples y unificados) para usarlos como primitivas para construir otros más complejos. – número reducido de componentes – reglas de composición simples y regulares Atributos: Clarity, Simplcity and Unity • Un lenguaje provee – Marco conceptual para pensar en los algoritmos Integridad Conceptual – Medio de expresión para expresar algoritmos • Debe apoyar al programador antes de la etapa de codificación. • Debe proveer un conjunto de conceptos (claros simples y unificados) para usarlos como primitivas para construir otros más complejos. – número reducido de componentes – reglas de composición simples y regulares Atributos: Clarity, Simplcity and Unity • La sintaxis afecta – – – – Codificación Pruebas y Verificación Entendimiento Mantenimiento • Readability • No debe ser críptico • No deben tener constructos que lleven a cometer errores • Diferencias semánticas deben reflejarse en la sintaxis. Atributos: Ortogonality • Posibilidad de combinar varias features (características) del lenguaje donde todas las combinaciones tienen sentido. – Por ejemplo un lenguaje que provee: • Expresión que produce un valor • Sentencia condicional que evalúa una expresión para obtener un valor T/F. • Serían ortogonales si cualquier expresión puede usarse y evaluarse dentro de la sentencia condicional. Atributos: Ortogonalidad • Ventajas – Facilidad de uso: menos excepciones y casos especiales • Desventajas – Puede compilar bien con errores semánticos o problemas por combinaciones incoherentes. Atributos: Naturalness for the application • Sintaxis: la estructura del programa debe reflejar la estructura lógica del algoritmo. – Estructuras de datos – Operaciones – Estructuras de control Atributos: Support for Abstraction • Estructuras de datos • Tipos de datos • Operaciones Atributos: Ease of Program Verification • Simplicidad de la estructura sintáctica y semántica Atributos: Programming Environment • Editores • Paquetes que ayuden a las pruebas • Manejadores de versiones Atributos: Portabilidad • Uso en varias plataformas Atributos: Cost of Use • • • • Costo de ejecución Costo de traducción Costo de creación, Pruebas, uso Costo de mantenimiento Definiendo Lenguajes de Programación • Sintaxis • Semántica – Operacional – Denotacional – Axiomática Definiendo lenguajes de programación • • • • • • • • • Data Strorage Control Binding Procedural Abstraction Parámetros Definiciones y bloques Concurrencia Tipos Bibliografía • Programming Languages – Design and Implementation, Pratt, T.W., Zelkowitz, M.V., Prentice Hall, 1996.