Está en la página 1de 71

Sistemas fsicos.

Tipos de sistemas
Sistemas abstractos.
Sistemas abiertos y cerrados.

Editores de estructura.
Crea, modifica y analiza.

Impresoras estticas.
Analiza e imprime

Verificadores estticos
Lee y analiza.

Interpretes.
-Traduce y ejecuta.

Compilador.
Traduce programa fuente.

Realizar tareas adicionales.

-Analiza e interpreta.

Formadores de texto.

Ejemplos de compiladores convencionales.

Interpretes de consulta.

Compiladores de circuitos de silicio.

1.5 GENERADORES DE CODIGO PARA COMPILADORES (COMPILADOR DE COMPILADOR). Se han creado algunas herramientas generales para el diseo automtico de componentes especficos de compilador. Estas herramientas utilizan lenguajes especializados para especificar e implantar el componente, y pueden utilizar algoritmos bastantes complejos. Las herramientas ms efectivas son las que ocultan los detalles del algoritmo de generacin y producen componentes que se pueden integrar con facilidad al resto del compilador. La siguiente es una lista de algunas herramientas tiles para la construccin de compiladores: 1.- Generadores de analizadores sintcticos. Estos generadores producen analizadores sintcticos, normalmente a partir de una entrada fundamentada en una gramtica independiente del contexto. En los primeros compiladores, el anlisis sintctico consuma no slo gran parte del tiempo, de ejecucin del compilador, sino gran parte del esfuerzo intelectual de escribirlo. Esta fase se considera ahora una de las ms fciles de aplicar

2.- Generadores de analizadores lxicos. Estas herramientas generan automticamente analizadores lxicos, por lo general a partir de una especificacin basada en expresiones regulares. La organizacin bsica del analizador lxico resultante es en realidad un autmata finito.

4.- Generadores automticos de cdigo. Tales herramientas toman un conjunto de reglas que definen la traduccin de cada operacin del lenguaje intermedio al lenguaje de mquina para la mquina objeto. Las reglas deben incluir suficiente detalle para poder manejar los distintos mtodos de acceso posibles a los datos. 5.- Dispositivos para anlisis de flujo de datos. Mucha de la informacin necesaria para hacer una buena optimacin de cdigo implica hacer un "anlisis de flujo de datos", que consiste en la recoleccin de informacin sobre la forma en que se transmiten los valores de una parte de un programa a cada una de las otras partes. Las distintas tareas de esta naturaleza se pueden efectuar esencialmente con la misma rutina, en la que el usuario proporciona los detalles relativos a la relacin que hay entre las proposiciones en cdigo intermedio y a la informacin que se est recolectando.

2.1 Visin del problema

Se debe identificar que es lo que se piensa hacer con el lenguaje, ya que puede ser slo la estructuracin de contenido Web, visualizar informacin o bien realizar la conversin de un documento. HTML es lenguaje de representacin visual OWL es lenguaje de descripcin de elementos C es un lenguaje programacin

2.2 Consideraciones preliminares

Debemos tomar en cuenta las palabras reservadas del lenguaje, los operadores, los tipos de datos. Debemos considerar el objetivo del lenguaje, si es un lenguaje de enseanza, si es un lenguaje para profesionales, si el cdigo desarrollado va a ser mejor.

2.3 Objetivos y filosofas del diseo de los lenguajes de programacin Algunos usos de los lenguajes de programacin son: Comunicacin humana Prevencin y Deteccin de errores Usabilidad Portabilidad Independencia de la mquina Filosofas Se debe lograr una correcta comunicacin entre emisor y receptor

Es ms importante que un programa sea leble que escribible, ya que un programa generalmente se escribe una vez y se lee muchas veces (documentacin, mantenimiento, etc.) Tratar de hacer lenguajes para mltiples arquitecturas de computadoras (mquinas virtuales). Control de apuntadores Control de tipo de datos robustos Simplicidad por eficiencia 2.4 Diseo Detallado El diseo detallado tiene que ver con la especificacin de detalles algortmicos, representaciones concretas de datos, interconexiones entre funciones y estructuras de datos, y empaque del producto de programacin. El diseo detallado est fuertemente influenciado por el lenguaje de instrumentacin, pero no es lo mismo que la instrumentacin; el diseo detallado tiene que ver ms con aspectos semnticos y menos con detalles sintcticos que es la instrumentacin. El punto de inicio para el diseo detallado es una estructura arquitectnica a la que se le van a proporcionar los detalles algortmicos y las representaciones concretas de datos. Mientras que hay una fuerte tentacin para proceder directamente de la estructura arquitectnica a la instrumentacin, hay varias ventajas que pueden lograrse en el nivel intermedio de detalle proporcionado por el diseo detallado. 2.5 Caso de estudio Explicar el lenguaje que se va a desarrollar en el curso: Por qu se va a desarrollar (problemtica)? Vocabulario del lenguaje (lxico palabras clases que hacen) Reglas de estructura (gramtica, sintaxis) Semntica Si existe cdigo intermedio Si se mejora ese cdigo

UNIDAD 7: OPTIMIZACIN

7.1 Tipos de Optimizacin

Las optimizaciones pueden realizarse de diferentes formas. Las optimizaciones se Realizan en base al alcance ofrecido por el compilador. La optimizacin va a depender del lenguaje de programacin y es directamente proporcional al tiempo de compilacin; es decir, entre ms optimizacin mayor tiempo de compilacin. Como el tiempo de optimizacin es gran consumidor de tiempo (dado que tiene que recorrer todo el rbol de posibles soluciones para el proceso de optimizacin) la optimizacin se deja hasta la fase de prueba final. Algunos editores ofrecen una versin de depuracin y otra de entrega o final. La optimizacin es un proceso que tiene a minimizar o maximizar alguna variable de rendimiento, generalmente tiempo, espacio, procesador, etc. Desafortunamente no existen optimizador que hagan un programa ms rpido y que ocupe menor espacio. La optimizacin se realiza reestructurando el cdigo de tal forma que el nuevo cdigo generado tenga mayores beneficios. La mayora de los compiladores tienen una optimizacin baja, se necesita de compiladores especiales para realmente optimizar el cdigo.

7.1.1 Locales

La optimizacin local se realiza sobre mdulos del programa. En la mayora de las ocasiones a travs de funciones, mtodos, procedimientos, clases, etc. La caracterstica de las optimizaciones locales es que slo se ven reflejados en dichas secciones. La optimizacin local sirve cuando un bloque de programa o seccin es crtico por Ejemplo: la E/S, la concurrencia, la rapidez y confiabilidad de un conjunto de instrucciones. Como el espacio de soluciones es ms pequeo la optimizacin local es ms rpida.

7.1.2 Bucles

Los ciclos son una de las partes ms esenciales en el rendimiento de un programa dado que realizan acciones repetitivas, y si dichas acciones estn mal realizadas, el problema se hace N veces ms grandes. La mayora de las optimizaciones sobre ciclos tratan de encontrar elementos que no deben repetirse en un ciclo. El problema de la optimizacin en ciclos y en general radica es que muy difcil saber el uso exacto de algunas instrucciones. As que no todo cdigo de proceso puede ser optimizado. Otros uso de la optimizacin pueden ser el mejoramiento de consultas en SQL o en aplicaciones remotas (sockets, E/S, etc.)

7.1.3 Globales

La optimizacin global se da con respecto a todo el cdigo. Este tipo de optimizacin es ms lenta pero mejora el desempeo general de todo programa. Las optimizaciones globales pueden depender de la arquitectura de la mquina. En algunos casos es mejor mantener variables globales para agilizar los procesos (el proceso de declarar variables y eliminarlas toma su tiempo) pero consume ms memoria. Algunas optimizaciones incluyen utilizar como variables registros del CPU, utilizar instrucciones en ensamblador. Se refiere al aumento gradual de las temperaturas de la atmsfera y ocanos de la Tierra que se ha detectado en la actualidad, adems de su continuo aumento que se proyecta a futuro. Si se revisa el grfico de las temperaturas de la superficie terrestre de los ltimos 100 aos, se observa un aumento de aproximadamente 0.8C, y que la mayor parte de este aumento ha sido en los ltimos 30 aos. Nadie pone en duda el aumento de la temperatura global, lo que todava genera controversia es la fuente y razn de este aumento de la temperatura. An as, la mayor parte de la comunidad cientfica asegura que hay ms que un 90% de certeza que el aumento se debe al aumento de las concentraciones de gases invernadero por las actividades humanas que incluyen deforestacin y la quema de combustibles fsiles como el petrleo y el carbn

7.1.4 De Mirilla

La optimizacin de mirilla trata de estructurar de manera eficiente el flujo del programa, sobre todo en instrucciones de bifurcacin como son las decisiones,

ciclos y saltos de rutinas .La idea es tener los saltos lo ms cerca delas llamadas, siendo el salto lo ms pequeo posible. Las mirillas son elementos que se utilizan por razones de seguridad con objeto de conocer quin se encuentra en el exterior del domicilio antes de abrir la puerta. Consiste en un pequeo trozo de vidrio o plstico transparente que adopta la forma de lente gran angular u ojo de pez de modo que la persona que observa consigue una amplia visibilidad. El ngulo de visin suele alcanzar los 132 aunque existen mirillas ms amplias. La mirilla se coloca en el centro de la puerta a la altura de los ojos y se comercializa junto con la propia puerta. Est diseada para proporcionar una visin desde el interior hacia el exterior de la vivienda.

7.2 Costos

Los costos son el factor ms importante a tomar en cuenta a la hora de optimizar ya que en ocasiones la mejora obtenida puede verse no reflejada en el programa final pero si ser perjudicial para el equipo de desarrollo. La optimizacin de una pequea mejora tal vez tenga una pequea ganancia en tiempo en espacio pero sale muy costosa entiempo en generarla. Pero en cambio si esa optimizacin se hace por ejemplo en un ciclo, la mejora obtenida puede ser N veces mayor por lo cual el costo Gse minimiza y es benfico la mejora. En economa el coste o costo es el valor monetario de los consumos de factores que supone el ejercicio de una actividad econmica destinada a la produccin de un bien o servicio. Todo proceso de produccin de un bien supone el consumo o desgaste de una serie de factores productivos, el concepto de coste est ntimamente ligado al sacrificio incurrido para producir ese bien. Todo coste conlleva un componente de subjetividad que toda valoracin supone. Desde un punto de vista ms amplio, en la economa del sector pblico, se habla de costes sociales para recoger aquellos consumos de factores (por ejemplo naturales o ambientales), que no son sufragados por los fabricantes de un bien y por tanto excluidos del clculo de sus costes econmicos, sino que por el contrario son pagados por toda una comunidad o por la sociedad en su conjunto. Un caso tpico de coste social es el del deterioro de las aguas de un ro derivado de la instalacin de una fbrica de un determinado bien. Si no existe una legislacin medioambiental que lo recoja, la empresa fabricante no tendr en cuenta entre sus

costes los daos ambientales provocados por el desarrollo de su actividad y los perjuicios derivados de la disminucin de la calidad del agua sera soportado por todos los habitantes de la zona, se habla en estos casos de externalidades negativas a la produccin.

7.2.1 Costo de Ejecucin.

Los costos de ejecucin son aquellos que vienen implcitos al ejecutar el programa. En algunos programas se tiene un mnimo para ejecutar el programa, por lo que el espacio y la velocidad de los microprocesadores son elementos que se deben optimizar para tener un mercado potencial ms amplio. Las aplicaciones multimedia como los videojuegos tienen un costo de ejecucin alto por lo cual la optimizacin de su desempeo es crtico, la gran mayora de las veces requieren de procesadores rpidos (e.g .tarjetas de video) o de mucha memoria. Otro tipo de aplicaciones que deben optimizarse son las aplicaciones para dispositivos mviles. Los dispositivos mviles tiene recursos ms limitados que un dispositivo de cmputo convencional razn por la cual, el mejor uso de memoria y otros recursos de hardware tiene mayor rendimiento. En algunos casos es preferible tener la lgica del negocio ms fuerte en otros dispositivos y hace ruso de arquitecturas descentralizadas como cliente/servidor o P2P.

7.2.2 Criterios para mejorar el cdigo

La mejor manera de optimizar el cdigo es hacer ver a los programadores que optimicen su cdigo desde el inicio, el problema radica en que el costo podra ser muy grande ya que tendra que codificar ms y/o hacer su cdigo ms legible. Los criterios de optimizacin siempre estn definidos por el compilador. Muchos de estos criterios pueden modificarse con directivas del compilador Desde el cdigo o de manera externa. Este proceso lo realizan algunas herramientas del sistema como los ofuscadores para cdigo mvil y cdigo para dispositivos mviles.

7.2.3 Herramientas para el Anlisis del Flujo de Datos

El mtodo de desarrollo por anlisis estructurado a menudo se interpreta como til slo para la parte de anlisis de sistemas de la actividad de desarrollo. Algunos analistas lo emplean slo de esta manera pero su uso no se limita necesariamente a esta fase.

El nombre es tal vez poco afortunado ya que sugiere slo el anlisis de sistemas. Sin embargo, las herramientas que forman parte del mtodo proporcionan la base para soportar todo el proceso de desarrollo. Dado que gran parte del trabajo de desarrollo de una aplicacin se centra sobre el manejo adecuado de los datos, el diccionario de datos y las grficas estructuradas de datos se convierten en herramientas muy importantes. En particular, se hace referencia al contenido del diccionario de datos para preparar componentes del sistema como los diseos de las entradas y salidas, los mtodos de acceso a los archivos y el diseo de las bases de datos.

El anlisis estructurado aparece en muchos y diferentes aplicaciones de desarrollo. Algunas personas lo utilizan como herramienta de documentacin; otras para el diseo. Adems, el anlisis estructurado es un elemento central en muchas herramientas de desarrollo automatizadas.

También podría gustarte