Вы находитесь на странице: 1из 9

INSTITUTO TECNOLÓGICO DE DURANGO

INGENIERÍA EN SISTEMAS COMPUTACIONALES

PROGRAMACIÓN DE SISTEMAS

ENSAYO UNIDAD II
TEMA: “Diseño de un Lenguaje de Programación.”

Alumno: Valdez
Rodríguez Oscar Alonso

Profesor: Vázquez Aguirre Leonel

Número de Control: 08041132

GPO.: 5Y
Fecha: 20 de Septiembre del 2010

Diseño de un Lenguaje de Programación


Instituto Tecnológico de Durango
Ingeniería En Sistemas Computacionales Programación de sistemas

Un factor significante en el proceso de la programación es el lenguaje que se


estará utilizando, y su calidad de este puede influir mucho.

3-1 Descripción General del Problema

Tras el desarrollo inicial de lenguajes de alto nivel y de la aplicación de los


primeros compiladores se produjo un periodo realmente largo para el diseño de
nuevos lenguajes que acabaran con los defectos de los lenguajes anteriores o
viejos. Recientemente, la experiencia obtenida por los errores anteriores ha
llevado a construir nuevos lenguajes de programación.

3-2 Consideraciones preliminares

En el diseño de un nuevo lenguaje se requiere pensar antes en algunas


consideraciones, una adecuada atención a estos puntos puede evitar
problemas mas tarde:

-¿Es necesario diseñar un nuevo idioma?

-¿Existe algún idioma que se pueda utilizar para llenar el requisito?

-¿Se puede extender el lenguaje actual?

-¿Sera posible modificar el idioma existente?

Suponiendo que la decisión se ha tomado y que ninguno de los enfoques


anteriores es suficiente, el siguiente punto es: ¿Cuál es el propósito del
lenguaje? En resume, claramente es muy diferente hacer un nuevo lenguaje a
extender cualquiera de los lenguajes existentes.

3-3 Fuente de Ideas

Los lenguajes naturales, las matemáticas, los lenguajes de programación


existentes y algunos experimentos han formado parte de la inspiración para el
diseño de nuevos lenguajes de programación. Las matemáticas han sido fuente
importante, los lenguajes existentes pueden ser la mejor fuente de ideas par el
diseño de lenguajes de programación pero el hecho de que una idea este
disponible no implica que esta sea buena o simplemente la mejor.

3-4 Filosofías del diseño de lenguajes de Programación

Cuando se a diseñado un lenguaje de programación, se debe prestar atención


en una serie de objetivos importantes como la comunicación humana, la
prevención y detección de errores, la facilidad de uso, eficacia del programa
compilabilidad, eficiencia e independencia de la maquina.

3-4.1 Comunicación Humana

08041132 Valdez Rodríguez Oscar Alonso Página 2


Instituto Tecnológico de Durango
Ingeniería En Sistemas Computacionales Programación de sistemas

Es importante comunicarse eficientemente con la computadora, el objetivo mas


básico de un lenguaje de programación es la comunicación entre seres
humanos y si un programa no es comprendido, es difícil de verificar, mantener
y modificar, es por ello que la legibilidad es un factor crucial en un programa,
para así aumentar las esperanzas para la comprensión del programa.

3-4.2 Prevención y Detección de Errores


Es un hecho que los programadores cometen errores por lo que es necesario
ayudar al programador en la tarea de no solo la prevención sino también
detectar, identificar y corregir errores. Un buen lenguaje de programación
puede ser un factor importante en esto.
La detección de errores se basa en la redundancia de utilidad, la detección de
errores debe ser confiable y de ser así es lo peor de todo. Esto puede dar
lugar a errores que son casi imposibles de encontrar. La detección debe ser
precisa, de modo que pueda ser analizada y corregida.
Los lenguajes deben ser diseñados para permitir la detección de errores en
tiempo de compilación esto es un aspecto importante de la detección de
errores, aunque algunas clases de errores, simplemente no se pueden
descubrir en tiempo de compilación.
3-4.3 Usabilidad.
Es de importancia de que un lenguaje sea fácil de usar, de aprender y recordar.
El lenguaje debe ser tan simple y directo como sea posible. Algunos lenguajes
son mucho más adorados por su flexibilidad, una lengua debe ser concisa. Por
desgracia, la concisión tiende a interferir fuertemente con la legibilidad.
También hay un conflicto con redundancia útil, ya que la repetición de
información a menudo requiere más escrito.

3-4.4 Eficacia de la Programación


Una preocupación importante es el registro de las decisiones tomadas durante
el desarrollo del programa. La idea de este procedimiento prevé la separación
de código ejecutable. Además de afirmar decisiones de manera clara, también
es conveniente para poder localizar el efecto de los cambios de decisiones.
Esto idea nos lleva directamente a la noción de abstracción, esta puede ser
cambiada sin ninguna alteración a los programas que la usan. Evidentemente,
es deseable que un lenguaje de programación apoye a la abstracción.
La cuestión de apoyo a la abstracción conduce también a la cuestión del apoyo
a las diferentes técnicas de construcción de programas. Otro aspecto de la
eficacia de la programación es que los idiomas deberían desalentar a engaño.

3-4.5 Compilabilidad.

08041132 Valdez Rodríguez Oscar Alonso Página 3


Instituto Tecnológico de Durango
Ingeniería En Sistemas Computacionales Programación de sistemas

Un lenguaje debe ser lo más simple posible para no reducir su eficacia


comunicativa y la usabilidad, cualquier aumento de su complejidad puede
hacer de que el producto final será más grande, más complejo, y por lo tanto
menos fiables.
3-4.6 Eficiencia.
La eficiencia es importante, vale la pena recordar que la eficiencia no es sólo
es velocidad. Es necesario determinar las principales causas de la ineficiencia,
la principal causa de la ineficiencia es una falta de coincidencia entre el
hardware y el lenguaje.
La Optimización de los compiladores puede ser muy útil contra la ineficiencia,
sin embargo, no se puede presentar como una respuesta completa. Las
mejoras significativas en la eficiencia se pueden obtener haciendo el lenguaje
lo suficiente sencillo para generar código razonablemente eficiente.
3-4.7 Independencia de la Máquina
La mayoría de lenguajes actuales se mantienen fuertemente dependientes de
la máquina, y la transportabilidad de los programas sufre como consecuencia.
La mayoría de dependencias de la máquina es el resultado de la
especificación de parámetros en términos de una máquina en particular, una de
las áreas de dependencia extrema de las máquinas es la aritmética de punto
flotante. Cabe señalar que la independencia de la máquina no es necesaria
para todos los idiomas.
3-4.8 Simplicidad
La simplicidad es una cuestión importante ya que los usuarios prefieren un
lenguaje sencillo. De hecho, una lengua que no sea simple, generalmente
fallará en muchos otros aspectos.
3-4.9 Uniformidad
La uniformidad se define como "hacer lo mismo de la misma manera,
independientemente de su contexto." Si se adopta como principio, puede
ayudar a reducir el número de cosas que los programadores tienen que pensar
de una sola vez, ya que no es necesario tener en cuenta el contexto para saber
cómo actuará una característica.
3-4.10 Ortogonalidad
La idea básica de ortogonalidad es tener varios conceptos generales a manera
de a que un conjunto pequeño de constructores puedan ser combinarse de
modo a construir el flujo y las estructuras de datos de todo el lenguaje.

3-4.11 Generalización y Especialización

08041132 Valdez Rodríguez Oscar Alonso Página 4


Instituto Tecnológico de Durango
Ingeniería En Sistemas Computacionales Programación de sistemas

La filosofía básica de generalidad es " si permitimos esto, luego vamos a


permitir a todo lo similar también. " Esta noción es una ayuda a la simplicidad,
pero no un substituto de la simplicidad.
3-4.12 Otras Filosofías de Diseño
La idea a al que se quiere llegar de este punto es que los usuarios aprendan
solo un subconjunto apropiado del lenguaje de modo que nadie tenga que
memorizar la lengua entera y se satisfagan sus propias necesidades.
3-5 Diseño Detallado
Se analizara, en varios niveles y desde varios puntos de vista, algunos de los
detalles que van a un idioma.
3-5.1 Microestructura
Es difícil generar una buena representación de un conjunto de símbolos o
caracteres. Microestructura se refiere a los problemas con diseño del lenguaje
que afectan a la apariencia del lenguaje, pero no cambian su semántica. El
punto más importante de la microestructura es que el significado de los token
del lenguaje debería ser fácilmente reconocido por lo que son y lo que hacen.
3-5.2 Expresión Estructura
Una expresión puede ser fundamental en un idioma. La determinación de orden
de evaluación en una expresión se puede complicar en muchos idiomas.
La expresión del lenguaje devuelve un valor y puede utilizarse en cualquier
lugar y momento necesario. Hay que tomar en cuenta el gran número de
niveles de prioridad ya que los símbolos y operadores no cuentan con la
misma prioridad, se debe de prestar atención para brindar prioridad
adecuadamente de lo contrario se puede confundir en lugar de ayudar.

3-5.3 Estructura de Datos


Las declaraciones de un idioma son los medios para satisfacer necesidades
específicas. Es de gran utilidad asignarles nombres a las constantes, de esta
manera es mucho más fácil cambiar un valor. Del mismo modo, es útil, dar una
forma de abreviatura, para poder darle un nombre a los tipos y luego usar esos
nombres en la declaración de variables o en la construcción de tipos más
complejos. Estas declaraciones pueden ahorrar una gran cantidad de tiempo
que se mejora la escritura legibilidad.
La base de todas las nociones de estructura de datos es el tipo de datos. Un
tipo de datos es un conjunto de valores más un conjunto de operaciones que
operan en estos valores. Existen varios tipos de datos en una lengua un simple
ejemplo puede ser el de enumeración y otro el de los caracteres.
La asignación de almacenamiento para las variables en un programa puede
darse de diferentes formas. La forma más simple y más antigua es la

08041132 Valdez Rodríguez Oscar Alonso Página 5


Instituto Tecnológico de Durango
Ingeniería En Sistemas Computacionales Programación de sistemas

asignación estática, la más popular, la asignación automática, La tercera forma,


la retención y la forma final de la asignación, la asignación a petición explícita
del programa. Respecto al alcance de nombres. El propósito original es facilitar
la asignación de almacenamiento y ayudar a reducir la complejidad de los
programas.
3-5.4 Estructura De Control
Ha habido una gran controversia con respecto a la mejor opción para las
primitivas estructuras de control. Muchas de las discusiones se centran
alrededor de la inclusión o exclusión del GOTO. Es casi universalmente
aceptado que es mejor usar estructuras de control de alto nivel en lugar que el
restringido GOTO. Es igualmente aceptado que un apropiado set de
construcción de alto nivel que eliminara la necesidad del uso del GOTO. En lo
que no se esta muy de acuerdo es en lo que se debe de comprender en dicho
set.
Las estructuras de control más simples es la combinación de varios enunciados
en un sencillo enunciado.
Los lenguajes sin dicha construcción sufren gravemente de esta ausencia.
Dadas esta conveniencia hay 3 métodos distintos para obtener dicha
combinación: Soportes explícitos, estructuras de soportes y soporte por
hendidura.
3-5.5 Estructura De Compilación
Los principales temas de interés son las directivas para el compilador, las
operaciones dentro del lenguaje que se hacen en tiempo de compilación en
lugar de en tiempo de ejecución, y la cuestión de la compilación por separado
de los distintos "módulos" de un programa.
Algunas veces es conveniente agregar información, que resulta difícil
expresarse en el lenguaje mismo. La forma más común para esto es tener una
forma de comentario.
3-5.6 Estructura I/O
Un componente importante en UN lenguaje de programación es el manejo de
entradas y salidas. Las instalaciones de entrada y salida pueden ser
proporcionadas en tres niveles de sofisticación en el lenguaje. Un primer nivel
la forma "formato libre" de entrada/salida. La cual proporciona comunicación
programa/programador para verificar la corrección del programa.
En el segundo nivel es la forma con formato de entrada/salida. En esta forma el
valor de cada variable en una lista de entrada o salida es leída o escrita de
acuerdo a los controles predefinidos de formato. Estos controles usualmente
indican la longitud de un campo y tipo de dato los cuales son aplicados al valor
de una variable particular en la lista de formato.
El tipo final envuelve instalaciones para el almacenamiento y recuperación de
información en archivos. En general se acepta que hay tres tipos de

08041132 Valdez Rodríguez Oscar Alonso Página 6


Instituto Tecnológico de Durango
Ingeniería En Sistemas Computacionales Programación de sistemas

organización de archivos: secuencial, indexado (o indexado secuencial), y


directo.
3-6 Reducción De Tamaño
Es de gran ayuda que un lenguaje se mantenga pequeño, Cuanto más
pequeño sea el lenguaje, será más fácil de leer, más fácil de escribir, más fácil
encontrar una alternativa fiable, un compilador eficiente, y más fácil de escribir
claramente, así como documentación descriptiva legible. Sin embargo, si los
lenguajes son muy simples, uno puede ser capaz de hacer lo que sea en él,
pero puede ser imposible hacer algo en particular en la práctica, es por ello que
el diseñador debe tomar cuidadosamente estas consideraciones.
3-7 Pragmática
Existe un número de herramientas que pueden ser usadas para especificar un
lenguaje, estas pueden ayudar a hacer más fácil la documentación del
lenguaje. Si es posible, no se debería añadir nuevos términos ya que no es
conveniente forzar a los usuarios a aprender nuevo lenguajes de programación.
El método que uses para describir tu lenguaje es una herramienta de diseño
significante. Después de que el proyecto de diseño está terminado, debe ser
sometido a una gran variedad de procesos de evaluación para determinar qué
cambios deberían introducirse.
Después de que el lenguaje han sido evaluado adecuadamente y el lenguaje
es arreglado, el siguiente paso es ponerlo en práctica para asegurarse de que
no se cometen problemas y sea necesario algún tipo de cambio.
3-8 Observaciones Sobre El Diseño De Ada
Ada es un lenguaje de propósito general, este lenguaje fue impuesto por el
Departamento de Defensa de Los Estados Unidos de América con el objetivo
de desarrollar un lenguaje de programación para aplicaciones relacionadas con
lo militar.
3-8.1 Evaluación de Ada desde el ángulo de diseño del lenguaje
La estructura del programa Ada contiene los siguientes niveles: personajes,
unidades léxicas, expresiones, asignaciones, estructuras de control, las
declaraciones, las unidades programáticas, y las unidades de compilación.
Usabilidad y eficacia del programa.
En Ada, se apoya directamente las metodologías del el desarrollo de software
tanto de abajo hacia arriba "y de arriba hacia abajo. Y apoya la abstracción
mediante el uso de los paquetes, los genéricos, y las tareas.

Paquetes

08041132 Valdez Rodríguez Oscar Alonso Página 7


Instituto Tecnológico de Durango
Ingeniería En Sistemas Computacionales Programación de sistemas

Un paquete se utiliza para definir los recursos lógicamente relacionados, estos


contienen dos componentes: una especificación de paquete y un cuerpo.
Tareas
Una tarea es un módulo que se puede compilar de forma independiente, una
tarea se divide en una parte descriptiva y un cuerpo.
Apoyo del desarrollo de software
Ada soporta las metodologías de desarrollo de software de abajo hacia arriba
tanto como la de arriba hacia abajo.
Independencia y la portabilidad de la Máquina
Ada permite a los programas ser independientes de la máquina, la portabilidad
es también una de las cuestiones importantes en el entorno de apoyo
programación en Ada.
Eficiencia.
Una desventaja del uso de Ada es el tamaño y la complejidad de los
compiladores. Esto puede influir en tipos de equipos en los que Ada puede
funcionar adecuadamente. La eficiencia también implica la eficiencia del
código objeto producido.
Modularidad y mantenimiento.
Algunos tipos de problemas que usualmente ocurren durante el desarrollo de
sistemas grandes no ocurren en sistemas desarrollados en Ada.
Compilabilidad y estructura de compilación.
Ada permite la compilación separada de varias unidades, soporta fuertemente
la estructura de compilación.
Simplicidad.
El Lenguaje presenta elegancia y no es un lenguaje pequeño. Aunque el
tamaño lenguaje de Ada es enorme, este aparenta ser simple sobre todo un
lenguaje bien diseñado.
3-8.2 Soporte del ambiente de programación de Ada
Un objetivo importante de un entorno de Ada es soportar una aplicación en su
ciclo de vida, esto es, desde sus requerimientos de especificación durante su
mantenimiento.
Una desventaja potencial de un entorno ampliable se acerca a la potencial falta
de portabilidad del programador, esto es, un programador debe experimentar la
dificultad de moverse de un entorno a otro. Otra desventaja mas seria es la
falta de capacidad de guardar un set completo y exacto de relaciones ente los
objetos de base de datos.

08041132 Valdez Rodríguez Oscar Alonso Página 8


Instituto Tecnológico de Durango
Ingeniería En Sistemas Computacionales Programación de sistemas

Un segundo objetivo importante es el soporte para el lenguaje de Ada como un


vehículo para reducir el desarrollo de software y sus costos de mantenimiento.
El nivel de soporte ofrecido por el entorno hace que Ada sea un principal
candidato como lenguaje de implementación para las herramientas de soporte
en el entorno de Ada.
El alcance de KAPSE/MAPSE/APSE.
Debido al objetivo de portabilidad, se reconoció tres distintos niveles dentro del
entorno.
Unas herramientas adicionales especificadas a un APSE particular.
El KAPSE es un sistema y un nivel de herramienta de portabilidad que
interactúa con un sistema operativo existente y nos da soporte de tiempo de
corrimiento y muchas otras funciones básicas.
El MAPSE contiene herramientas mínimas de soporte para el software de
aplicación de Ada durante su ciclo de vida.

3-8.3 Tecnología para el Software Adaptable de sistemas fiables (STARS)


Un programa STARS incluye más aspectos en el soporte del entorno. El
objetivo de los programas STARS es mejorar la producibilidad mientras
alcanzan gran confiabilidad y adaptabilidad del sistema.

Bibliografía:

The Theory and Practice of Compiler Writing / Jean-Paul Tremblay, Paul G.


Sorenson / McGraw-Hill / 1985

08041132 Valdez Rodríguez Oscar Alonso Página 9

Вам также может понравиться