Está en la página 1de 38

UNIDAD II.

- INTRODUCCIÓN AL DISEÑO DE LOS LENGUAJES DE PROGRAMACIÓN
2.1.- VISIÓN DEL PROBLEMA. Diseñar un buen lenguaje de programación requiere de un previo análisis del problema que se quiera resolver mediante la computación.

Se busca proporcionar diferentes modelos de diseño que permitan caracterizar el desarrollo de aplicaciones utilizando uno de los lenguaje de programación.

Se necesita que el lenguaje de modelado sea capaz de capturar la semántica del modelo al que se ajusta el lenguaje de programación, que resuelva las necesidades para lo que fue diseñado.

El número de Lenguajes de Programación propuestos y diseñados actualmente son extremadamente grandes y en el que es aplicado un compilador es muy extenso. una de las artes más predominantes en el mundo de la programación ha sido el diseño de lenguajes de programación. .En los últimos años.

No es de sorprenderse que estos lenguajes carecieran de un buen diseño. . que se han adherido tenazmente a algunos lenguajes que cumplen con las necesidades requeridas para el desarrollo de las aplicaciones.Los primeros lenguajes que fueron diseñados. No se debería criticar a los diseñadores de lenguajes como FORTRAN. fueron los pioneros explorando un nuevo campo. puesto que ya tenían suficientes problemas con diseñar y aplicar uno de los primeros lenguajes de alto nivel. Los objetivos de los diseñadores de los lenguajes de programación son los usuarios.

sino como de un superávit de ideas para diseñarlos. . La mayor parte de estas tentativas eran los fracasos. no tanto de una falta de ideas en cómo diseñar mejores lenguajes.Después del desarrollo inicial del primer lenguaje de alto nivel y la implementación de los primeros o pocos compiladores. vino un período bastante largo en el que las tentativas conscientes se hicieron para diseñar nuevos lenguajes sin los desperfectos de los viejos. es decir. tenían muchas ideas para diseñar lenguajes. pero no sabían cual de ellas utilizar para el diseño.

si uno extiende un lenguaje existente. También.Para diseñar un nuevo lenguaje. se debe tomar un enfoque con cuidado para no hacer una extensión tan grande y compleja como llega a ser. es necesario escoger cuidadosamente un lenguaje base para que el trabajo de la extensión sea menor y la extensión quede dentro del lenguaje. El objetivo debe ser el de producir un lenguaje el cual sea más grande aunque igualmente bien construido. .

indudablemente la investigación seguirá en las áreas donde se pueda medir el empleo de dichos lenguajes y experimentar en el diseño de los nuevos lenguajes de programación. La mayor atención es dada a restringir el área de la aplicación de ese lenguaje. . La noción reciente de experimentación con cambios de diseño en condiciones controladas ofrece básicamente los mismos tipos de conclusiones. el mejor lenguaje será para resolver problemas en esa área. considerando su área de aplicación.Cuando un lenguaje es diseñado particularmente para su aplicación en un área específica.

los operadores.  Debemos considerar el objetivo del lenguaje.2.  Debemos tomar en cuenta las palabras reservadas del lenguaje. si es un lenguaje de enseñanza.2.CONSIDERACIONES PRELIMINARES Para el diseño de un buen lenguaje de programación es necesario considerar los siguientes aspectos:  Gramáticas simple y fácil de entender. y los tipos de datos.. si es un lenguaje para aplicaciones profesionales.  Rapidez y eficiencia durante la compilación del . si el código desarrollado va a ser mejor que el que se esta utilizando.  Simplicidad en el diseño y manejo de su sintaxis.

La verificabilidad: Es la capacidad para soportar procedimientos de pruebas.Los factores fundamentales en la calidad del software son los siguientes: Estos factores pueden describirse de la siguiente forma: La eficiencia: Es la capacidad para el aprovechamiento óptimo de los recursos que emplea. La portabilidad: Es la facilidad para ser ejecutados en distintos entornos lógicos o físicos. test o ensayos. .

La exactitud: Es el nivel de precisión que alcanzan los resultados obtenidos. La facilidad de uso: Es la comodidad y claridad en la interacción con el usuario.La integridad: Es el nivel de protección frente a procesos que traten de alterarlo. . La robustez: Es la capacidad para funcionar correctamente en situaciones extremas.

La compatibilidad: Es la facilidad de poder ser aplicados en conjunción con otros programas.La extensibilidad: Es la capacidad para adaptar su funcionamiento al incremento de sus objetivos. La reutilización: Es la posibilidad de utilizarlos (total o parcialmente) en nuevos contextos. .

.Eficiencia de los lenguajes de programación Considerando los puntos tratados anteriormente en el diseño de los lenguajes de programación. fácilmente se puede llevar a cabo lo siguiente: Compilación rápida del código fuente y ejecución rápida del código objeto. además de poder hacer la transportabilidad de los programas de forma más eficiente de una computadora a otra. .Factores Fundamentales en los Lenguajes de Programación 1. sin la pérdida de los datos.

la aplicación funcionará con todas. y será el sistema operativo el que se . ya que no hay que preocuparse por el modelo de tarjeta gráfica o de impresora.. especialmente por las plataformas mayoritarias: Windows. y nunca se accede directamente a ellos. Esta es una de las principales ventajas para el programador. el acceso a los dispositivos físicos se hace a través de interfaces.Independencia de la máquina Puesto que diferentes usuarios utilizan diferentes computadoras. Mac´s y Unix. Los programas Windows son independientes de la máquina en la que se ejecutan. Linux. el sistema debe ser accesible por todos ellos sin ninguna disminución de recursos.2.

Simplicidad Un lenguaje debe ser tan simple como sea posible. Un lenguaje de programación debe esforzarse en la simplicidad sintáctica y semántica. rápidamente . Estos conceptos deben ser naturales.3. La Simplicidad en la semántica implica que el lenguaje contiene un mínimo número de conceptos y estructuras. aprendidos. y fácilmente entendidos. Debe haber un número mínimo de conceptos con reglas simples para su combinación..

Esto excluye múltiples representaciones de la misma semántica conceptual y representaciones sintácticas que son fácilmente confusas.La simplicidad sintáctica requiere que la sintaxis represente cada concepto en forma única y que ésta interpretación sea tan legible como sea posible. desde que la concisión es con frecuencia contraproducente a la legibilidad. . Esto no necesariamente implica que la sintaxis sea tan concisa como sea posible.

sin entrar en detalles de implementación ni mecanismos en que se accede a los datos de la BD. para facilitar la manipulación de esta estructura.. La estructura lógica de la BD definida mediante el LDD debe ser uniforme y acorde al modelo de datos del SGBD. el lenguaje del SGBD debe ser capaz de definir la estructura lógica de la BD.Uniformidad Debido a que la representación de los objetos implica tanto el análisis como el diseño y la codificación de los mismos. . En el caso específico del LDD.4.

La forma idónea de realizar lo anterior es mediante un lenguaje declarativo. sin entrar en detalles acerca de cómo se realizan estas operaciones. la esto es mediante un lenguaje especificar la estructura de la acuerdo siempre con el modelo SGBD. Para el caso del LMD. mejor manera de realizar declarativo que permita operación a realizar. el lenguaje del SGBD debe incluir formas de especificar qué se desea hacer con los datos (insertar. el cual permite declarar la estructura del modelo de acuerdo al modelo de datos que utiliza el SGBD. de de datos utilizado por el . modificar o borrar datos). Igual que en el caso anterior. recuperar.

Esta situación se da en investigación y en la creación de prototipos donde hay que realizar muchas pruebas hasta dar con la solución más apropiada.2.. Esta forma de programar se aplica a problemas donde se desconoce que algoritmo nos llevará a la solución. . Esta consiste en un método de programación basado en un ciclo de prueba y error donde se refina un programa hasta conseguir que haga lo que queremos.OBJETIVOS Y FILOSOFÍAS DE DISEÑO DE LOS LENGUAJES DE PROGRAMACIÓN FILOSOFÍA DE DISEÑO DEL LENGUAJE El lenguaje de programación está pensado para la programación evolutiva.3.

Estos tres puntos se consiguen cuando el lenguaje tiene las siguientes características: . es más apropiado el uso de un intérprete. que el uso de un compilador.-La interacción de los datos.Instrucciones de alto nivel cercanas al problema. c). b). Para que un lenguaje sea efectivo en programación evolutiva tiene que facilitar: a).-La modificación del programa.Para estos casos.. ya que de esta forma se reduce el tiempo invertido en cada prueba.

. Es más efectivo escribir en una notación cercana al problema que adaptarse a la sintaxis de un lenguaje de programación.Estado de Interacción. Sintaxis Cercana al Problema. De esta forma se evita repetir la ejecución de las instrucciones necesarias para llegar al estado de ejecución donde queremos realizar pruebas. De esta forma se evita el paso de traducción que tiene que realizar el programador antes de escribir una nueva sentencia del programa. Los programas implementan esta característica mediante un ámbito global dinámico que guarda funciones y variables mientras se utiliza el intérprete. Entre prueba y prueba es interesante guardar el estado de ejecución.

. de ésta dependerá la terminología que se emplee.2. Todas éstas.4. indicadas de manera implícita a través de una serie de términos y convenciones que es necesario definir de forma más precisa antes de continuar con otra cosa. Existen dos formas en las que puede representarse una pila y su funcionamiento.DISEÑO PROGRAMACIÓN DEL LENGUAJE DE Lo que se ha visto. ha sido una serie de operaciones y de manipulación de datos.

es como un arreglo que “crece” o es utilizado desde su base (el primer nivel) hacia arriba. . que ya pudieran estar introducidos en la pila.Una representación en la pila. Los datos entran y se toman de la base y desplazan o “empujan” a los elementos.

Representaremos con una elipsis (…) el resto de las localidades o elementos en la pila. La base es el primer nivel.INGRESO DE DATOS EN LA PILA Llamaremos nivel a cada una de las localidades con que cuente la pila y los enumeraremos a partir del primer elemento (1). El tope de la pila lo identificaremos como el nivel en el que se encuentre el elemento con ingreso más reciente. .

El elemento D es el más alto de los elementos A. Figura: Pila con 6 elementos . En la figura. que se considera ``el más alto'' en la pila que el otro. pero es menor que los elementos E y F.C.Si tenemos un par de elementos en la pila. uno de ellos debe estar en la parte superior de la pila.B. el elemento F es el más alto de todos los elementos que están en la pila.

debemos agregar un nuevo elemento. el elemento G. la nueva configuración es la que se muestra en la figura. Figura: Operación de insertar el elemento G en la pila P. Después de haber agregado el elemento G a la pila.Para describir cómo funciona esta estructura. Figura: Operación de insertar el elemento G en la pila P .

Figura: Operación de retirar de la pila P .Siguiendo el ejemplo. ahora deseamos retirar de la pila P. La configuración global de la pila es como se muestra en la figura.

. En ese registro están los valores de las variables como estaban antes de la llamada a la función.Cuando se termina de ejecutar algún procedimiento. o algunas pueden haber cambiado su valor. de otro modo podría causar algún tipo de error. Cuando se termina de ejecutar el programa. dependiendo del ámbito de las variables. significa que se ha terminado de ejecutar alguna función. se recupera el registro que está en la cima de la pila. la pila de llamadas a subprogramas debe haber quedado en “cero” también. Cada elemento en la pila que es retirado.

Dependiendo de su implementación una pila puede almacenar solo números o datos.Por último. mientras que se ha limitado a usar letras en la representación de elementos que pueden ser introducidos en la pila. De forma genérica nos elementos como objetos. referiremos a estos . no estamos restringidos a esto.

.

elementos repetitivos se denotan por el seguimiento de una elipsis. Conceptos y acciones a resaltar se subrayan.Palabras clave de Stop se escriben usando un font no proporcional. En las descripciones sintácticas. Salidas en pantalla se muestran en negritas. . Elementos a substituir por otro valor se ilustran en itálicas.

así como las habilidades interactivas necesarias para gerentes. El curso discute las aportaciones conceptuales de las perspectivas teóricas más recientes para el análisis de la comunicación masiva contemporánea. . Comunicación interpersonal e intercultural.COMUNICACIÓN HUMANA Las teorías de la comunicación representan un punto de partida indispensable no sólo para el estudio y la investigación de la comunicación. sino para el quehacer profesional práctico.

. multicana-lización por división de lon-gitud de onda. Comportamiento de ondas electromagnéticas en el interior de las fibras ópticas. los sistemas receptores y los requerimientos de acoplamiento óptico. tomando en cuenta los sistemas transmisores. redes ópti-cas. amplifi-cación óptica. SONET.Análisis de las capacidades de transmisión de información de fibras ópticas. ATM. trans-misión coherente. Receptores óptimos.

el cual la computadora es capaz de “entender”.La computadora. el diseñador define el algoritmo que resuelve el problema. luego la computadora ejecuta el algoritmo expresado como programa en el lenguaje de programación elegido. el programador lo codifica en un lenguaje de programación. Si el hombre tiene algún problema. fue inventada para facilitar el trabajo intelectual. . La máquina le entrega al usuario la respuesta “4″. a diferencia de otras herramientas que en general apoyan el esfuerzo físico de los humanos. y listo. por ejemplo “sumar dos y dos”. sin que éste tuviera que esforzar sus neuronas.

Se busca una comunicación programador y la computadora. los patrones de Facilitar la compilación (forth). eficiente entre el Un buen nivel de comunicación se da cuando los programas son leíbles y entendibles. . El hecho de que el compilador entienda una estructura es posible que el programador no lo pueda hacer. El lenguaje ha de representar pensamiento de las personas. La sintaxis ha de reflejar la semántica del lenguaje. El programador no es una computadora.

PREVENCIÓN Y DETECCION DE ERRORES Se debe tener una serie de defensas en el compilador de tal manera que si un error no es detectado en la primera pasada. en el peor de los casos. . si un mecanismo no es capaz de detectar un error es necesario implementar otro que lo detecte. pero nunca ignorarlo. Los errores deben ser detectados por el compilador. éste probablemente sea detectado en la segunda pasada. por otro compilador.

PASCAL). Hay que prevenir los errores de alguna forma. se tiene que evitar cometer estos errores. por ello es necesario considerar lo siguiente: El programador comete errores. . ya sea de forma voluntaria o involuntaria. (es común cometerlos). el progra-mador cometerá errores. El programador comete errores involuntarios.Prevención de Errores Siempre que se está desarrollando un programa. El programador no sabe lo que hace y el compilador ha de limitar sus acciones (EUCLID.

CICLOS..PALABRAS RESERVADAS O PALABRAS CLAVES 4...2.REQUERIMIENTOS MÍNIMOS DE HARDWARE (PLATAFORMA PARA SU EJECUCIÓN) 3. REGISTROS.CASO DE ESTUDIO 1.5..TIPOS DE DATOS.ESTRUCTURA GENERAL DE UN PROGRAMA. FUNCIONES.INTRODUCCIÓN AL LENGUAJE 2.PROGRAMA EJEMPLO. ... 5. 6.. ARREGLOS.