UNIDAD 2 "DISEÑO DE LOS LENGUAJES DE PROGRAMACIÓN"


VISIÓN DEL PROBLEMA

El numero de lenguajes de programación  propuestos y diseñados son extremadamente grandes.
Los primeros lenguajes fueron los pioneros, explorando un nuevo campo. No es de sorprenderse que carecieran de un buen diseño.
Después que el desarrollo inicial del lenguaje de alto nivel y la implementación de los primeros pocos compiladores, allí resultó un período bastante largo en el que las tentativas conscientes se hicieron para diseñar nuevos lenguajes sin los desperfectos de los viejos. La mayor parte de estas tentativas eran los fracasos, no tanto de una falta de ideas en cómo diseñar mejores lenguajes como de un superávit de ideas.
Un lenguaje es diseñado a menudo para su aplicación en un área específica. La mayor atención es dada a restringir el área de la aplicación del lenguaje, el mejor lenguaje será para problemas en esa área. De hecho no es conveniente el procurar diseñar un lenguaje de uso general conveniente para ningún problema. Todo intento ha sido desilusionando (notablemente PL/YO y ALGOL 68). Actualmente, toda evidencia indica que nadie sabe cómo hacer un trabajo apropiado de diseñar un idioma que será “bueno para todo”.
Los lenguajes de programación existentes pueden ser la fuente para mejores ideas para la programación de diseñadores de lenguaje. Los diseñadores deben ser muy cuidadosos inclusive acerca de ideas tales en su propio producto, sin embargo, porque los diseñadores del pasado han hecho grandes errores en el pasado.
Semejantemente, el hecho que una características está comúnmente disponible no puede implicar que sistema operativo una idea buena. Muchos idiomas han seguido ALGOL 60's principal en permitir el tamaño de series para ser decidido en corre tiempo, una característica que introduce los problemas considerables de la implementación e interviene con verificar de error de compila-tiempo. Esta característica puede ser del valor sólo limitado en ciertas áreas de aplicaciones. El fenómeno de declaraciones predefinidas, heredado de FORTRAN, es otro ejemplo de palabrotas diseña. Esta característica en el detalle ilustra la grasa que algún arte actualmente popular de características de hecho totalmente perjudicial programar la calidad. Semejantemente, el hecho de que una de las características están comúnmente disponibles no se puede implicar que sea una buena idea su sistema operativo. Muchos lenguajes han seguido ALGOL 60's principalmente el permitir el tamaño de series para ser decididazas con mayor rapidez, característica que presenta considerablemente la implementación de problemas e interfiere con el tiempo de compilación del cheque de errores. Esta característica puede ser del valor sólo limitado en ciertas áreas de aplicación. El fenómeno de preferido declaraciones, heredado de FORTRAN, es otro ejemplo de un mal diseño de programación. Esta característica en particular cláusula; entonces probablemente sería irrazonable requerir ELSE en todo IF. La noción relativamente reciente de experimentación con cambios de diseño en condiciones controladas ofrece básicamente los mismos tipos de conclusiones indudablemente la investigación seguirá en las áreas de medir el empleo de los lenguajes de programación y experimentar en el diseño de los lenguaje de programación.

CONSIDERACIONES PRELIMINARES
¿Cual es el propósito del lenguaje?
Aplicación específica:
Bases de datos, sistemas expertos, cálculo numérico, programación simbólica, diseño algorítmico, etc.
¿Es necesario diseñar un nuevo lenguaje?
Ya existe un lenguaje apropiado
El nuevo lenguaje se diferencia de los existentes
Se consume demasiado tiempo en el diseño e implementación de un nuevo lenguaje
Lenguaje demasiado especializado
Otras opciones:
Un modulo o librería de funciones
Ampliar un lenguaje de programación.
OBJETIVOS Y FILOSOFÍAS DEL DISEÑO DE LOS LENGUAJES DE PROGRAMACIÓN

Comunicación humana:
Se busca una comunicación eficiente entre el programador y el ordenado.
Es más importante que un programa sea leíble que escribible.
La sintaxis ha de reflejar la semántica.
•Reducir las manipulaciones implícitas
• Prevención y detección de errores
•Redundancia 
• Usabilidad
• Efectividad
• Soportar abstracción
• Modularidad: Separar especificación de implementación 

•Evitar los trucos (programas ilegible)
• Compilabilidad
• Eficiencia.
• Independencia de la máquina
• Simplicidad
• Uniformidad
• Ortogonalidad
DISEÑO DETALLADO
En esta etapa se adecua el análisis a las características específicas del ambiente de implementación y se completan las distintas aplicaciones del sistema con los modelos de control,
DISEÑO DETALLADO
En esta etapa se adecua el análisis a las características específicas del ambiente de implementación y se completan las distintas aplicaciones del sistema con los modelos de control, interfaz o comunicaciones, según sea el caso.
Microestructura
Estructura de las expresiones
Estructuras de datos
Estructuras de control
Estructura de compilación
Estructura de la entrada/salida


CASO DE ESTUDIO

PROGRAMACIÓN DE SISTEMAS: Conjunto de reglas para crear soluciones a problemas computables. Conjunto de herramientas que nos permiten crear software de base que son de utilidad para interactuar con la máquina.

SOFTWARE DE BASE: Compilador, Querys, Sistema Operativo, Cargador.

AUTÓMATA: Son las cadenas posibles que aceptan un lenguaje.

EXPRESIONES REGULARES: Conjunto de símbolos que aceptan una palabra reservada.

GRAMÁTICA: Reglas para escribir las sentencias del lenguaje.