Você está na página 1de 38

UNIDAD II.

- INTRODUCCIN AL DISEO DE LOS LENGUAJES DE PROGRAMACIN


2.1.- VISIN DEL PROBLEMA. Disear un buen lenguaje de programacin requiere de un previo anlisis del problema que se quiera resolver mediante la computacin.

Se busca proporcionar diferentes modelos de diseo que permitan caracterizar el desarrollo de aplicaciones utilizando uno de los lenguaje de programacin.

Se necesita que el lenguaje de modelado sea capaz de capturar la semntica del modelo al que se ajusta el lenguaje de programacin, que resuelva las necesidades para lo que fue diseado.

En los ltimos aos, una de las artes ms predominantes en el mundo de la programacin ha sido el diseo de lenguajes de programacin.

El nmero de Lenguajes de Programacin propuestos y diseados actualmente son extremadamente grandes y en el que es aplicado un compilador es muy extenso.

Los primeros lenguajes que fueron diseados, fueron los pioneros explorando un nuevo campo.

No es de sorprenderse que estos lenguajes carecieran de un buen diseo.


No se debera criticar a los diseadores de lenguajes como FORTRAN, puesto que ya tenan suficientes problemas con disear y aplicar uno de los primeros lenguajes de alto nivel. Los objetivos de los diseadores de los lenguajes de programacin son los usuarios, que se han adherido tenazmente a algunos lenguajes que cumplen con las necesidades requeridas para el desarrollo de las aplicaciones.

Despus del desarrollo inicial del primer lenguaje de alto nivel y la implementacin de los primeros o pocos compiladores, vino un perodo bastante largo en el que las tentativas conscientes se hicieron para disear 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 cmo disear mejores lenguajes, sino como de un supervit de ideas para disearlos, es decir, tenan muchas ideas para disear lenguajes, pero no saban cual de ellas utilizar para el diseo.

Para disear un nuevo lenguaje, se debe tomar un enfoque con cuidado para no hacer una extensin tan grande y compleja como llega a ser. Tambin, si uno extiende un lenguaje existente, es necesario escoger cuidadosamente un lenguaje base para que el trabajo de la extensin sea menor y la extensin quede dentro del lenguaje.
El objetivo debe ser el de producir un lenguaje el cual sea ms grande aunque igualmente bien construido.

Cuando un lenguaje es diseado particularmente para su aplicacin en un rea especfica. La mayor atencin es dada a restringir el rea de la aplicacin de ese lenguaje, el mejor lenguaje ser para resolver problemas en esa rea. La nocin reciente de experimentacin con cambios de diseo en condiciones controladas ofrece bsicamente los mismos tipos de conclusiones, indudablemente la investigacin seguir en las reas donde se pueda medir el empleo de dichos lenguajes y experimentar en el diseo de los nuevos lenguajes de programacin, considerando su rea de aplicacin.

2.2.- CONSIDERACIONES PRELIMINARES Para el diseo de un buen lenguaje de programacin es necesario considerar los siguientes aspectos:

Gramticas simple y fcil de entender. Simplicidad en el diseo y manejo de su sintaxis. Debemos tomar en cuenta las palabras reservadas del lenguaje, los operadores, y los tipos de datos. Debemos considerar el objetivo del lenguaje, si es un lenguaje de enseanza, si es un lenguaje para aplicaciones profesionales, si el cdigo desarrollado va a ser mejor que el que se esta utilizando. Rapidez y eficiencia durante la compilacin del

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 lgicos o fsicos.

La verificabilidad: Es la capacidad para soportar procedimientos de pruebas, test o ensayos.

La integridad: Es el nivel de proteccin frente a procesos que traten de alterarlo.

La facilidad de uso: Es la comodidad y claridad en la interaccin con el usuario.


La exactitud: Es el nivel de precisin que alcanzan los resultados obtenidos.

La robustez: Es la capacidad para funcionar correctamente en situaciones extremas.

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

Factores Fundamentales en los Lenguajes de Programacin

1.- Eficiencia de los lenguajes de programacin Considerando los puntos tratados anteriormente en el diseo de los lenguajes de programacin, fcilmente se puede llevar a cabo lo siguiente:
Compilacin rpida del cdigo fuente y ejecucin rpida del cdigo objeto, adems de poder hacer la transportabilidad de los programas de forma ms eficiente de una computadora a otra, sin la prdida de los datos.

2.- Independencia de la mquina Puesto que diferentes usuarios utilizan diferentes computadoras, el sistema debe ser accesible por todos ellos sin ninguna disminucin de recursos, especialmente por las plataformas mayoritarias: Windows, Macs y Unix, Linux. Los programas Windows son independientes de la mquina en la que se ejecutan, el acceso a los dispositivos fsicos se hace a travs de interfaces, y nunca se accede directamente a ellos. Esta es una de las principales ventajas para el programador, ya que no hay que preocuparse por el modelo de tarjeta grfica o de impresora, la aplicacin funcionar con todas, y ser el sistema operativo el que se

3.- Simplicidad Un lenguaje debe ser tan simple como sea posible. Debe haber un nmero mnimo de conceptos con reglas simples para su combinacin. Un lenguaje de programacin debe esforzarse en la simplicidad sintctica y semntica.
La Simplicidad en la semntica implica que el lenguaje contiene un mnimo nmero de conceptos y estructuras. Estos conceptos deben ser naturales, aprendidos, y fcilmente entendidos. rpidamente

La simplicidad sintctica requiere que la sintaxis represente cada concepto en forma nica y que sta interpretacin sea tan legible como sea posible.

Esto no necesariamente implica que la sintaxis sea tan concisa como sea posible, desde que la concisin es con frecuencia contraproducente a la legibilidad. Esto excluye mltiples representaciones de la misma semntica conceptual y representaciones sintcticas que son fcilmente confusas.

4.- Uniformidad Debido a que la representacin de los objetos implica tanto el anlisis como el diseo y la codificacin de los mismos.
La estructura lgica de la BD definida mediante el LDD debe ser uniforme y acorde al modelo de datos del SGBD, para facilitar la manipulacin de esta estructura. En el caso especfico del LDD, el lenguaje del SGBD debe ser capaz de definir la estructura lgica de la BD, sin entrar en detalles de implementacin ni mecanismos en que se accede a los datos de la BD.

La forma idnea de realizar lo anterior es mediante un lenguaje declarativo, el cual permite declarar la estructura del modelo de acuerdo al modelo de datos que utiliza el SGBD.

Para el caso del LMD, el lenguaje del SGBD debe incluir formas de especificar qu se desea hacer con los datos (insertar, recuperar, modificar o borrar datos), sin entrar en detalles acerca de cmo se realizan estas operaciones.
Igual que en el caso anterior, la esto es mediante un lenguaje especificar la estructura de la acuerdo siempre con el modelo SGBD. mejor manera de realizar declarativo que permita operacin a realizar, de de datos utilizado por el

2.3.- OBJETIVOS Y FILOSOFAS DE DISEO DE LOS LENGUAJES DE PROGRAMACIN FILOSOFA DE DISEO DEL LENGUAJE

El lenguaje de programacin est pensado para la programacin evolutiva. Esta consiste en un mtodo de programacin basado en un ciclo de prueba y error donde se refina un programa hasta conseguir que haga lo que queremos. Esta forma de programar se aplica a problemas donde se desconoce que algoritmo nos llevar a la solucin. Esta situacin se da en investigacin y en la creacin de prototipos donde hay que realizar muchas pruebas hasta dar con la solucin ms apropiada.

Para estos casos, es ms apropiado el uso de un intrprete, que el uso de un compilador, ya que de esta forma se reduce el tiempo invertido en cada prueba. Para que un lenguaje sea efectivo en programacin evolutiva tiene que facilitar:

a).-La interaccin de los datos. b).-La modificacin del programa. c).- Instrucciones de alto nivel cercanas al problema. Estos tres puntos se consiguen cuando el lenguaje tiene las siguientes caractersticas:

Estado de Interaccin. Entre prueba y prueba es interesante guardar el estado de ejecucin. De esta forma se evita repetir la ejecucin de las instrucciones necesarias para llegar al estado de ejecucin donde queremos realizar pruebas. Los programas implementan esta caracterstica mediante un mbito global dinmico que guarda funciones y variables mientras se utiliza el intrprete.
Sintaxis Cercana al Problema. Es ms efectivo escribir en una notacin cercana al problema que adaptarse a la sintaxis de un lenguaje de programacin. De esta forma se evita el paso de traduccin que tiene que realizar el programador antes de escribir una nueva sentencia del programa.

2.4.DISEO PROGRAMACIN

DEL

LENGUAJE

DE

Lo que se ha visto, ha sido una serie de operaciones y de manipulacin de datos.

Todas stas, indicadas de manera implcita a travs de una serie de trminos y convenciones que es necesario definir de forma ms precisa antes de continuar con otra cosa.
Existen dos formas en las que puede representarse una pila y su funcionamiento; de sta depender la terminologa que se emplee.

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

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). La base es el primer nivel.

El tope de la pila lo identificaremos como el nivel en el que se encuentre el elemento con ingreso ms reciente. Representaremos con una elipsis () el resto de las localidades o elementos en la pila.

Si tenemos un par de elementos en la pila, uno de ellos debe estar en la parte superior de la pila, que se considera ``el ms alto'' en la pila que el otro. En la figura, el elemento F es el ms alto de todos los elementos que estn en la pila. El elemento D es el ms alto de los elementos A,B,C, pero es menor que los elementos E y F.

Figura: Pila con 6 elementos

Para describir cmo funciona esta estructura, debemos agregar un nuevo elemento, el elemento G.
Despus de haber agregado el elemento G a la pila, la nueva configuracin es la que se muestra en la figura.

Figura: Operacin de insertar el elemento G en la pila P.

Figura: Operacin de insertar el elemento G en la pila P

Siguiendo el ejemplo, ahora deseamos retirar de la pila P. La configuracin global de la pila es como se muestra en la figura.

Figura: Operacin de retirar de la pila P

Cuando se termina de ejecutar algn procedimiento, se recupera el registro que est en la cima de la pila.
En ese registro estn los valores de las variables como estaban antes de la llamada a la funcin, o algunas pueden haber cambiado su valor, dependiendo del mbito de las variables.

Cada elemento en la pila que es retirado, significa que se ha terminado de ejecutar alguna funcin. Cuando se termina de ejecutar el programa, la pila de llamadas a subprogramas debe haber quedado en cero tambin, de otro modo podra causar algn tipo de error.

Por ltimo, mientras que se ha limitado a usar letras en la representacin de elementos que pueden ser introducidos en la pila, no estamos restringidos a esto.

Dependiendo de su implementacin una pila puede almacenar solo nmeros o datos. De forma genrica nos elementos como objetos. referiremos a estos

Palabras clave de Stop se escriben usando un font no proporcional.


Elementos a substituir por otro valor se ilustran en itlicas. Conceptos y acciones a resaltar se subrayan. En las descripciones sintcticas, elementos repetitivos se denotan por el seguimiento de una elipsis.

Salidas en pantalla se muestran en negritas.

COMUNICACIN HUMANA

Las teoras de la comunicacin representan un punto de partida indispensable no slo para el estudio y la investigacin de la comunicacin, sino para el quehacer profesional prctico. El curso discute las aportaciones conceptuales de las perspectivas tericas ms recientes para el anlisis de la comunicacin masiva contempornea. Comunicacin interpersonal e intercultural, as como las habilidades interactivas necesarias para gerentes.

Anlisis de las capacidades de transmisin de informacin de fibras pticas, tomando en cuenta los sistemas transmisores, los sistemas receptores y los requerimientos de acoplamiento ptico.
Comportamiento de ondas electromagnticas en el interior de las fibras pticas. Receptores ptimos, trans-misin coherente, amplifi-cacin ptica, multicana-lizacin por divisin de lon-gitud de onda, redes pti-cas, SONET, ATM.

La computadora, a diferencia de otras herramientas que en general apoyan el esfuerzo fsico de los humanos, fue inventada para facilitar el trabajo intelectual. Si el hombre tiene algn problema, por ejemplo sumar dos y dos, el diseador define el algoritmo que resuelve el problema, el programador lo codifica en un lenguaje de programacin, el cual la computadora es capaz de entender, luego la computadora ejecuta el algoritmo expresado como programa en el lenguaje de programacin elegido, y listo. La mquina le entrega al usuario la respuesta 4, sin que ste tuviera que esforzar sus neuronas.

Se busca una comunicacin programador y la computadora.

eficiente

entre

el

Un buen nivel de comunicacin se da cuando los programas son lebles y entendibles. La sintaxis ha de reflejar la semntica del lenguaje. El lenguaje ha de representar pensamiento de las personas. los patrones de

Facilitar la compilacin (forth). El programador no es una computadora. El hecho de que el compilador entienda una estructura es posible que el programador no lo pueda hacer.

PREVENCIN 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, ste probablemente sea detectado en la segunda pasada, en el peor de los casos, por otro compilador. Los errores deben ser detectados por el compilador, si un mecanismo no es capaz de detectar un error es necesario implementar otro que lo detecte, pero nunca ignorarlo.

Prevencin de Errores
Siempre que se est desarrollando un programa, el progra-mador cometer errores, ya sea de forma voluntaria o involuntaria, se tiene que evitar cometer estos errores, por ello es necesario considerar lo siguiente:
El programador comete errores. Hay que prevenir los errores de alguna forma.

El programador comete errores involuntarios, (es comn cometerlos). El programador no sabe lo que hace y el compilador ha de limitar sus acciones (EUCLID, PASCAL).

2.5.- CASO DE ESTUDIO

1.- INTRODUCCIN AL LENGUAJE 2.- REQUERIMIENTOS MNIMOS DE HARDWARE (PLATAFORMA PARA SU EJECUCIN) 3.- PALABRAS RESERVADAS O PALABRAS CLAVES 4.- TIPOS DE DATOS, CICLOS, FUNCIONES, ARREGLOS, REGISTROS.

5.- ESTRUCTURA GENERAL DE UN PROGRAMA. 6.- PROGRAMA EJEMPLO.

Você também pode gostar