Vous êtes sur la page 1sur 8

Programacin de Sistemas

Unidad II

2.1 Visin Problema Diseo Lenguajes De Programacin


Los primeros lenguajes fueron los pioneros, explorando un nuevo campo. No es de sorprenderse que carecieran de un buen diseo. No se debera criticar a los diseadores o FORTRAN; puesto que suficientes problemas tenan con disear y aplicar uno de los primeros lenguajes de alto nivel Si hay cualquier crtica de ser concedida con respecto a FORTRAN, Nadie razonablemente los podra esperar que a la crtica sean concedidos con respecto a 25 aos ms tarde, sus objetivos deben ser los usuarios que se han adherido tan tenazmente a ciertos diseadores cados en desuso del lenguaje que tienen tan perpetuaron con entusiasmo los desperfectos de FORTRAN. Se debe notar que nuestras referencias a FORTRAN en el prrafo anterior y a travs de este captulo se refiere a FORTRAN IV antes que FORTRAN 77.

2.1 Visin Problema Diseo Lenguajes De Programacin


Cul es el propsito de un lenguaje?

Un lenguaje es diseado a menudo para su aplicacin en un rea especfica. La mayor atencin es dada a restringir el rea de la aplicacin del lenguaje, el mejor lenguaje ser para problemas en esa rea. De hecho no es conveniente el procurar disear un lenguaje de uso general conveniente para ningn problema. Todo intento ha sido desilusionando (notablemente PL/YO y ALGOL 68). Actualmente, toda evidencia indica que nadie sabe cmo hacer un trabajo apropiado de disear un idioma que ser bueno para todo. Finalmente, la relacin de un nuevo lenguaje hacia lenguajes existentes se debe considerar. Weinberg (1971) discute el fenmeno psicolgico de la inhibicin, que ocurre cuando un viejo lenguaje y un lenguaje nuevo no son semejantes pero idnticos. El usuario es susceptible a confundirse gravemente con la incertidumbre acerca de cunto del viejo lenguaje conservara en el nuevo. Por ejemplo. Los programadores de FORTRAN que aprende que PL/YO formatear E/S tiene gran problema con E- y formatos DE TIPO F, que no son semejantes pero idntico a la construccin del FORTRAN. En el resumen es preferible hacer el nuevo lenguaje claramente diferente que hacerlo semejante a algn lenguaje existente. Si los nuevos y los viejos lenguajes Los lenguajes de programacin existentes pueden ser la fuente para mejores ideas para la programacin de diseadores de lenguaje. Los diseadores deben ser muy cuidadosos inclusive acerca de ideas tales en su propio producto, sin embargo, porque los diseadores del pasado han hecho grandes errores en el pasado.

2.2 Consideraciones Preliminares Diseo Lenguajes de Programacin


Para el diseo de lenguajes de Programacin se debe considerar varios aspectos, entre ellos las tareas que se desean realizar y los datos a manejar. Generalmente diseamos un lenguaje porque necesitamos comunicarnos con algo de manera fcil y rpida, por ejemplo un archivo, un hardware, una base de datos; dependiendo de la tarea que se quiera realizar entonces diseamos una forma de como hacerla y como podemos relacionarlo con otras tareas para permitir que esa relacin pueda ser automatizada. Adems de las tareas que se van a realizar tambin se debe pensar en los tipos de datos que se van a manejar, por ejemplo nmeros, cadenas, ya que si se van a realizar operaciones, hay que pensar en que espacio de memoria se van a almacenar. Otras cosas a considerar son como se va a manejar la memoria, y a que tipo de computadoras estarn enfocados

2.3 Objetivos, Filosofias y Diseo Lenguajes de Programacin


Objetivos: Comunicacin humana Prevencin y deteccin de errores Usabilidad Efectividad Compilabilidad Eficiencia Independencia de la mquina Simplicidad Uniformidad Ortogonalidad Generalizacin y especializacin. Se busca una comunicacin eficiente entre el programador y la computadora Un buen nivel de comunicacin se da cuando los programas son lebles No ha de ser necesaria una documentacin externa al programa (minimizar) Es ms importante que un programa sea leble que escribible Un programa se escribe una vez, pero se lee muchas durante su depuracin, documentacin y mantenimiento. Tendencia actual a separar la interfaz de la implementacin de un mdulo La sintaxis ha de reflejar la semntica Reducir las manipulaciones implcitas Coerciones (BASIC para eventos o excepciones) Constructores y destructores de C++ (necesarios, pero complican el seguimiento del flujo de ejecucin) El lenguaje ha de representar los patrones de pensamiento humanos No hay que crear una sintaxis pensada exclusivamente para un modelo de cmputo terico (calculus) un conjunto de instrucciones de la mquina facilitar la compilacin (forth) El programador no es una computadora Que el compilador entienda una estructura es posible que el programador no Evitar incluso la posibilidad de escribirlas Reducir el conocimiento contextual El programador no funciona con una pila como el programa compilado. Prevencin y deteccin de errores El programador comete errores Hay que prevenir los errores El programador es su fuente El programador no sabe lo que hace y el compilador ha de limitar sus acciones (EUCLID, PASCAL) Hacer imposible cierto tipo de errores Ejecutar datos control de flujo limitado Errores en el uso de datos Tipado fuerte Apuntadores errneos Gestin de memoria implcita (LISP, PROLOG, ML, etc). Hay que facilitar su deteccin, identificacin y correccin Redundancia Tener que declarar antes de utilizar. Evitar coerciones inductoras de errores float a int por su perdida de precisin Comprobaciones en tiempo de ejecucin Indice de array fuera de limites Control sobre los apuntadores a NULL

2.3 Objetivos, Filosofias y Diseo Lenguajes de Programacin


Lenguaje Utilizable y Efectivo Un lenguaje ha de ser fcil de utilizar Un lenguaje ha de ser fcil de aprender y recordar Evitar la necesidad de consultar el manual (C++ no cumple) Lenguaje simple (C++ no cumple) Aprendizaje incremental (PROLOG no cumple, LISP si cumple) El comportamiento del lenguaje ha de ser predecible el uso de void* de C++ es incomprensible Efectividad Los detalles de implementacin no han de oscurecer las intenciones del programador Soportar abstraccin Modularidad: Separar especificacin de implementacin Los Efectos de un cambio han de quedar localizados Evitar los trucos (programas ilegible) Otras filosofas de diseo Compilabilidad Se ha de poder compilar programa en un tiempo reducido Se ha de poder depurar o aplicar otras herramientas de anlisis Eficiencia: La ejecucin ha de ser rpida Independencia de la mquina Simplicidad Uniformidad: lenguaje predecible Ortogonalidad Todas las caractersticas del lenguaje se han de poder combinar Generalizacin y especializacin La generalizacin dice que algo similar tambin es correcto, pero es difcil de implementar Hay que especializar para facilitar la implementacin sin perder la utilidad del lenguaje Diseo Detallado Microestructura Estructura de las expresiones Estructuras de datos Estructuras de control Estructura de compilacin Estructura de la entrada/salida

2.4 Diseo Detallado Lenguajes de Programacin


Descripcin : En esta etapa se adeca el anlisis a las caractersticas especficas del ambiente de implementacin y se completan las distintas aplicaciones del sistema con los modelos de control, interfaz o comunicaciones, segn sea el caso. Actividades tcnicas 1. Agregar detalles de implementacin al modelo del mundo. 2. Desarrollar el modelo de interfaz. 3. Desarrollar los modelos de control, persistencia y comunicaciones. Strong Documentos Entregables Diagramas de clases y paquetes, con el detalle de la implementacin Diagramas de interaccin con el detalle de las operaciones ms importantes del sistema. Diagramas de estados y/o actividades para las clases concurrentes o complejas. Actividades Tcnicas 1. Detalles de implementacin del modelo del mundo Completar el detalle de las clases: Tipos de los atributos Atributos y mtodos de clase Diseo de asociaciones Completar los mtodos

2.4 Diseo Detallado Lenguajes de Programacin


Enriquecer el modelo con el framework de base en el ambiente de implementacin escogido Incorporar patrones de diseo Subdividir en paquetes Definir excepciones Completar comportamiento de las clases: Constructores, destructores, modificadores, consultores Adecuar el modelo a las caractersticas del lenguaje de programacin: 1.Evaluar eficiencia Validar el sistema 2. Desarrollar el modelo de interfaz Conocer el framework de base Enlazar las clases de interfaz con las clases del modelo del mundo 3. Desarrollar los modelos de control, persistencia y comunicaciones Conocer los frameworks de base Enlazar las clases del framework con las dems clases del sistema Documentos Entregables Diagramas de clases y paquetes, con el detalle de la implementacin Diagramas de interaccin con el detalle de las operaciones ms importantes del sistema Diagramas de estados y/o actividades para las clases concurrentes o complejas

Vous aimerez peut-être aussi