Download Diseño de Lenguajes

Document related concepts

Wolfram (lenguaje de programación) wikipedia , lookup

XQuery wikipedia , lookup

Haskell wikipedia , lookup

Lisp wikipedia , lookup

Búsqueda de patrones wikipedia , lookup

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.