Sei sulla pagina 1di 8

Unidad I Segunda Parte / Programacin de Sistemas / Ing.

Leonardo Ramrez

Herramientas desarrolladas con la teora de la programacin de sistemas.


Las herramientas de programacin, son aquellas que permiten realizar aplicativos, programas, rutinas, utilitarios y sistemas; para que la parte fsica del computador u ordenador, funcione y pueda producir resultados. Hoy en da existen mltiples herramientas de programacin en el mercado, tanto para analistas expertos como para analistas inexpertos. Las herramientas de programacin ms comunes del mercado, cuentan con programas de depuracin o debugger, que son utilitarios que nos permiten detectar los posibles errores en tiempo de ejecucin o corrida de rutinas y programas. Muchas herramientas de software que manipulan programas fuente realizan primero algn tipo de anlisis a la estructura del cdigo. Algunos ejemplos de tales herramientas son: Editores de estructuras. Un editor de estructuras toma como entrada una secuencia de rdenes para construir un programa fuente. El editor de estructuras no slo realiza las funciones de creacin y modificacin de textos de un editor de textos ordinario, sino que tambin analiza el texto del programa, imponiendo al programa fuente una estructura jerrquica apropiada. De esa manera, el editor de estructuras puede realizar tareas adicionales tiles para la preparacin de programas. Por ejemplo, puede comprobar si la entrada est formada correctamente, puede proporcionar palabras clave de manera automtica (por ejemplo, cuando el usuario escribe while, el editor proporciona el correspondiente do y le recuerda al usuario que entre las dos palabras debe ir un condicional) y puede saltar desde un begin o un parntesis izquierdo hasta su correspondiente end o parntesis derecho. Adems, la salida de tal editor suele ser similar a la salida de la fase de anlisis de un compilador. Impresoras estticas. Una impresora esttica analiza un programa y lo imprime de forma que la estructura del programa resulte claramente visible. Por ejemplo, los comentarios pueden aparecer con un tipo de letra especial, y las proposiciones pueden aparecer con una indentacin proporcional a la profundidad de su anidamiento en la organizacin jerrquica de las proposiciones. Verificadores estticos. Un verificador esttico lee un programa, lo analiza e intenta descubrir errores potenciales sin ejecutar el programa. La parte de anlisis a menudo es similar a la que se encuentra en los compiladores de optimizacin. As, un verificador esttico puede detectar si hay partes de un programa que nunca se podrn ejecutar o si cierta variable se usa antes de ser definida. Adems, puede detectar errores de lgica, como intentar utilizar una variable real como apuntador, empleando las tcnicas de verificacin de tipos. Intrpretes. En lugar de producir un programa objeto como resultado de una traduccin, un intrprete realiza las operaciones que implica el programa fuente. Muchas veces los intrpretes se usan para ejecutar lenguajes de rdenes, pues cada operador que se ejecuta en un lenguaje de rdenes suele ser una invocacin de una rutina compleja, como un editor o un compilador. Del mismo modo algunos lenguajes de muy alto nivel, normalmente son interpretados, porque hay muchas cosas sobre los datos, como el tamao y la forma de las matrices, que no se pueden deducir en el momento de la compilacin. Compiladores. Tradicionalmente, se concibe un compilador como un programa que traduce un programa fuente, como FORTRAN, al lenguaje ensamblador o de mquina de algn computador. Sin embargo, hay lugares, al parecer, no relacionados donde la tecnologa de los compiladores se usa con regularidad. Formadores de textos. Un formador de textos toma como entrada una cadena de caracteres, la mayor parte de la cual es texto para componer, pero alguna incluye rdenes para indicar prrafos, figuras o estructuras matemticas, como subndices o superndices.

Unidad I Segunda Parte / Programacin de Sistemas / Ing. Leonardo Ramrez Compiladores de circuitos de silicio. Un compilador de circuitos de silicio tiene un lenguaje fuente similar o idntico a un lenguaje de programacin convencional. Sin embargo las variables del lenguaje no representan localidades de memoria, sino seales lgicas (0 o 1) o grupos de seales en un circuito de conmutacin. La salida es el diseo de un circuito en un lenguaje apropiado. Intrpretes de consultas. Un intrprete de consultas traduce un predicado que contiene operadores relacionales y bolanos a rdenes para buscar en una base de datos los registros que satisfagan ese predicado.

Lenguaje.
Se llama lenguaje a cualquier tipo de cdigo semitico estructurado, para el que existe un contexto de uso y ciertos principios combinatorios formales. Existen muchos contextos tanto naturales como artificiales donde aparecen lenguajes. El lenguaje humano se basa en la capacidad de los seres humanos para comunicarse mediante signos. Principalmente lo hacemos utilizando el signo lingstico. An as, hay diversos tipos de lenguaje. El lenguaje animal se basa en el uso de seales sonoras, visuales y olfativas a modo de signos para referirse a un referente o un significado diferente de dichas seales. Dentro del lenguaje animal estn los gritos de alarma, el lenguaje de las abejas, etc. Los lenguajes formales son construcciones artificiales humanas, que se usan en matemtica y otras disciplinas formales, incluyendo lenguajes de programacin. Estas construcciones tienen estructuras internas que comparten con el lenguaje humano natural, por lo que pueden ser en parte analizados con los mismos conceptos que ste. Ya sea que se trate de un distrito escolar, un banco, un sistema de transporte o una planta manufacturera, la comunicacin eficaz es esencial. Qu es comunicacin? La comunicacin se puede definir como la transferencia de informacin y entendimiento entre personas por medio de smbolos con significados. La comunicacin en cualquier circunstancia de nuestras vidas, es de vital importancia, para poder expresar nuestros objetivos, necesidades, emociones, etc., de la misma manera se vuelve imperiosa dentro de las empresas, por lo que se pueden mencionar algunos beneficios en los cuales ayuda: Establecer y difundir los propsitos y metas de la empresa. Desarrollar planes para lograr dichos propsitos. Organizar los recursos humanos en forma efectiva. Seleccionar, desarrollar y evaluar los miembros de dicha empresa. Originar un clima de amplia participacin. Controlar el desempeo de los miembros. Influir en la motivacin de nuestros trabajadores.

El proceso de la comunicacin.
Para llevar a cabo una comunicacin eficaz, es necesario que en el flujo de la transmisin de ideas, intervengan varios elementos, los que se describen a continuacin: 1. Emisor (codificador). Fuente de informacin e iniciador del proceso de comunicacin. Es su responsabilidad elegir el tipo de mensaje y canal ms eficaces, tras de lo cual codifica el mensaje. En una empresa ser la persona que tiene una informacin, necesidades o deseos y la intencin de comunicarlos a una o ms personas. La Codificacin consiste en la traduccin de informacin a una serie de smbolos para la comunicacin. Esta es necesaria porque la informacin nicamente puede transmitirse de una persona a otra por medio de representaciones o smbolos. 2. Receptor (decodificador). Es el individuo que recibe, por medio de sus sentidos, el mensaje del transmisor.

Unidad I Segunda Parte / Programacin de Sistemas / Ing. Leonardo Ramrez La decodificacin es la interpretacin y traduccin de un mensaje para que la informacin tenga sentido. Uno de los principales requisitos que debe cubrir el receptor es la capacidad de escuchar. Escuchar es el acto de prestar atencin a un mensaje, no nicamente orlo. Lineamientos para la escucha eficaz. 3. Mensaje. Es la informacin codificada que el transmisor enva al recepto. El mensaje puede darse en cualquier forma susceptible de ser captada y entendida por uno o ms de los sentidos del receptor.

4. Canales. Es el medio de comunicacin entre el transmisor y el receptor, algo as como el aire es para las palabras y el papel para las letras. 5. Retroalimentacin. Es la respuesta del receptor al mensaje del emisor. Es la mejor manera de comprobar que el mensaje se recibi y comprendi. 6. Percepcin. Es el significado atribuido a un mensaje por un emisor o receptor. Las percepciones se ven influidas por lo que ven los individuos, por la manera en que organizan esos elementos en su memoria y por los significados que les atribuyen. Diagrama del Proceso de la Comunicacin.

Unidad I Segunda Parte / Programacin de Sistemas / Ing. Leonardo Ramrez Barreras en la Comunicacin. Son las condiciones o factores que interfieren en la transmisin efectiva de un mensaje, y entre ellas se encuentran: Barreras Interpersonales. La interpretacin que realiza el receptor del mensaje. Defectos fisiolgicos del emisor o receptor. Los sentimientos y emociones del emisor o receptor. Las condiciones medio-ambientales en que se da el mensaje. El uso de la semntica, tales como diferencias de lenguaje, palabras no adecuadas, informacin insuficiente, etc. Barreras Organizacionales. Cuando una empresa crece, su estructura orgnica se ampla mucho, originando problemas en la comunicacin, con lo que se generan situaciones donde se agrega, se modifica, se elimina o se cambia totalmente un mensaje, y ms si el mensaje ha sido transmitido en forma oral. Otra barrera se traduce en la autoridad administrativa, donde se debe recordar que la autoridad es una caracterstica de toda empresa, por lo que, esa supervisin genera una barrera, y por ltimo, la especializacin es otra barrera que afecta la eficacia de la comunicacin.

Lenguajes de Programacin.
Un lenguaje de programacin est formado por un conjunto de smbolos bsicos (alfabeto) y un conjunto de reglas que especifican como manipularlos. Tambin debe darle significado a las cadenas formadas al manipular los smbolos bsicos. Los lenguajes de programacin pueden clasificarse de acuerdo a su semejanza con el lenguajes maquina o a su semejanza con el lenguaje humano (generalmente ingls). Los lenguajes que tiene mayor semejanza con el lenguaje humano se les llama lenguajes de alto nivel, mientras que los lenguajes ms parecidos al lenguaje de maquina son conocidos como de bajo nivel. Entre los lenguajes de bajo nivel se encuentra el lenguajes ensamblador. Algunos ejemplos de lenguajes de alto nivel son: Algol, Basic, C, Cobol, Fortran, Modula 2, Pascal, Prolog.

Traductor y su estructura.
Un traductor es un programa que recibe como entrada cdigo escrito en un cierto lenguaje y produce como salida cdigo en otro lenguaje. Generalmente el lenguaje de entrada es de ms alto nivel que el de salida. Ejemplos de traductores son los ensambladores y los compiladores. En un sentido orientado hacia la computacin, un traductor, de manera general, es un software que toma como entrada un programa escrito en un cdigo llamado fuente y genera como salida otro programa en un cdigo llamado objeto. Un ensamblador, es un programa que traduce de un lenguaje ensamblador a lenguaje mquina, mientras que un compilador es un programa que traduce de un lenguaje de alto nivel a un lenguaje de bajo nivel o a lenguaje mquina. Si el cdigo fuente est en un lenguaje abstracto o de alto nivel y si el objetivo es un lenguaje de ensamble de bajo nivel o de mquina, el traductor que usamos es un compilador. Algunos ejemplos de traductores son los compiladores (toma como entrada cdigo en alto nivel y genera como salida cdigo en bajo nivel), los intrpretes (toma como entrada cdigo en alto nivel y genera como salida un cdigo intermedio), los preprocesadores (toma como entrada cdigo en alto nivel y genera como salida cdigo en alto nivel) y el ensamblador (toma como entrada cdigo en ensamblador y genera como salida cdigo en bajo nivel). Su estructura podra ser expresada de la siguiente manera: cdigo fuente traductor cdigo objeto

Intrpretes o Traductores.
Definicin. Un intrprete es un programa que ejecuta un programa escrito en un determinado lenguaje examinando y ejecutando cada sentencia del programa una a una, por separado y sin realizar un proceso de compilacin previo. Al contrario de lo que se podra pensar el intrprete NO traduce la sentencia a cdigo mquina antes de ejecutarla. En su lugar, identifica el tipo de sentencia y la ejecuta directamente. El cdigo para ejecutar la sentencia est contenido dentro del intrprete que contendr rutinas para: evaluar una expresin, almacenar informacin en

Unidad I Segunda Parte / Programacin de Sistemas / Ing. Leonardo Ramrez memoria, recuperar datos de memoria, etc. El intrprete contendr el nmero de rutinas necesarias para poder ejecutar cualquier sentencia del lenguaje que est interpretando. Ejemplo: C=A+B 1. El intrprete lee la sentencia y determina que es una asignacin. 2. Llamar a una de sus rutinas para evaluar la expresin a la derecha de la asignacin. 3. Esta rutina toma los smbolos A y B, determina donde estn almacenados, obtiene sus valores actuales y los suma. 4. El intrprete toma el valor calculado y lo almacena en la direccin de memoria a la que hace referencia el smbolo C. Al igual que un compilador para llevar a cabo su tarea el intrprete usar un analizador lxico-grfico y guardar la informacin necesaria para la traduccin en una tabla de smbolos. Interpretar una sentencia es relativamente complejo, al tener que ser escaneada y analizada, los smbolos tienen que ser buscados, hay que llevar a cabo lo indicado por la sentencia, etc. Esto significa que el nmero de instrucciones mquinas a ejecutar para interpretar una sentencia puede ser mucho mayor que el cdigo generado por un compilador. Adems, cada sentencia tendr que ser interpretada cada vez que aparezca, por lo que una sentencia en un bucle sera interpretada varias veces. Adems de elegir entre compilar o interpretar un programa, otra opcin es combinar ambos procesos de traduccin. En este caso, se realiza una compilacin parcial a un cdigo intermedio que es seguida de un proceso de interpretacin. Uno de los lenguajes ms utilizados hoy en da, sobre todo para el desarrollo de aplicaciones para la Web, que sigue esta propuesta es el lenguaje Java. En el lenguaje Java el cdigo primero se compila con el compilador de Java javac. Este compilador genera un cdigo virtual llamado Byte Code. Este cdigo es luego interpretado por una Mquina Virtual de Java (o JVM de Java Virtual Machine) que debe estar instalada y ejecutndose en la mquina en la que se desee ejecutar el cdigo compilado con javac.

Comparacin entre compiladores e intrpretes


Histricamente, debido a la escasez de memoria de los primeros ordenadores, se puso de moda el uso de intrpretes frente a los compiladores, pues el programa fuente sin traducir y el intrprete juntos requeran una cantidad de memoria menor que la del compilador. Por ello, los primeros ordenadores personales (Spectrum, Commodore VIC20, PC XT de IBM, etc.) iban siempre acompaados de un intrprete de BASIC. La mejor informacin sobre los errores por parte del compilador as como una mayor velocidad de ejecucin del cdigo resultante hizo que poco a poco se impusieran los compiladores. Hoy en da, y con el problema de la memoria prcticamente resuelto, se puede hablar de un gran predominio de los compiladores frente a los intrpretes, aunque intrpretes como los incluidos en los navegadores de Internet para Java son la gran excepcin. Algunas de las ventajas de compilar frente a interpretar son: Se compila una vez; se ejecuta muchas veces. La ejecucin del programa objeto es mucho ms rpida que si se interpreta el programa fuente. El compilador tiene una visin global del programa, por lo que la informacin de mensajes de error es ms detallada. Por otro lado, algunas de las ventajas de interpretar frente a compilar son: Un intrprete necesita menos memoria que un compilador. Permiten una mayor interactividad con el cdigo en tiempo de desarrollo. En algunos lenguajes (Smalltalk, Prolog, LISP, Java) est permitido y es frecuente aadir cdigo segn se ejecuta otro cdigo, y esta caracterstica solamente es posible implementarla en un intrprete.

Estructura de un Compilador.
Cualquier compilador debe realizar dos tareas principales: anlisis del programa a compilar y sntesis de un programa en lenguaje maquina que, cuando se ejecute, realizara correctamente las actividades descritas en el programa fuente. Para el estudio de un compilador, es necesario dividir su trabajo en fases. Cada fase representa una transformacin al cdigo fuente para obtener el cdigo objeto. La siguiente figura representa los componentes en que se divide un compilador. Las tres primeras fases realizan la tarea de anlisis, y las dems la sntesis. En cada una de las fases se utiliza un administrador de la tabla de smbolos y un manejador de errores.

Unidad I Segunda Parte / Programacin de Sistemas / Ing. Leonardo Ramrez Anlisis Lxico. En la fase de anlisis lxico se leen los caracteres del programa fuente y se agrupan en cadenas que representan los componentes lxicos. Cada componente lxico es una secuencia lgicamente coherente de caracteres relativa a un identificador, una palabra reservada, un operador o un carcter de puntuacin. A la secuencia de caracteres que representa un componente lxico se le llama lexema (o con su nombre en ingls token). En el caso de los identificadores creados por el programador no solo se genera un componente lxico, sino que se genera otro lexema en la tabla de smbolos. Anlisis Sintctico. En esta fase, los componentes lxicos se agrupan en frases gramaticales que el compilador utiliza para sintetizar la salida. Anlisis Semntico. La fase de anlisis semntico se intenta detectar instrucciones que tengan la estructura sintctica correcta, pero que no tengan significado para la operacin implicada. Generacin de cdigo Intermedio. Algunos compiladores generan una representacin intermedia explcita del programa fuente, una vez que se han realizado las fases de anlisis. Se puede considerar esta operacin intermedia como un subprograma para una mquina abstracta. Esta representacin intermedia debe tener dos propiedades importantes: debe ser fcil de producir y fcil de traducir al programa objeto. Optimizacin de Cdigo. En esta fase se trata de mejorar el cdigo intermedio, de modo que resulte un cdigo de mquina ms rpido de ejecutar. Generacin de Cdigo. Esta constituye la fase final de un compilador. En ella se genera el cdigo objeto que por lo general consiste en cdigo en lenguaje mquina (cdigo relocalizable) o cdigo en lenguaje ensamblador. Administrador de la tabla de smbolos. Una tabla de smbolos es una estructura de datos que contiene un registro por cada identificador. El registro incluye los campos para los atributos del identificador. El administrador de la tabla de smbolos se encarga de manejar los accesos a la tabla de smbolos, en cada una de las etapas de compilacin de un programa. Manejador de errores. En cada fase del proceso de compilacin es posibles encontrar errores. Es conveniente que el tratamiento de los errores se haga de manera centralizada a travs de un manejador de errores. De esta forma podrn controlarse ms eficientemente los errores encontrados en cada una de las fases de la compilacin de un programa.

Diseo de lenguajes.
El lenguaje de programacin puede definirse al describir 1. Lo que parecen sus programas (la sintaxis del lenguaje). 2. Lo que significan sus programas (la semntica del lenguaje). La sintaxis del lenguaje se presenta ampliamente con una notacin denominada gramtica libre de contexto o BNF. (Backus-Naur Form). La semntica del lenguaje es ms difcil de expresar que la sintaxis y generalmente se decide por especificarla usando descripciones informales y ejemplos. Ambas situaciones deben ser consideradas por quien disea un nuevo lenguaje para satisfacer las necesidades de los usuarios potenciales. Por ejemplo, alguien puede hacer el siguiente requerimiento: Disear un lenguaje para proporcionar rdenes a un robot para que ste se desplace. Aunque no se especifica qu tipo de rdenes se darn, el diseador deber responder a dos preguntas:

Unidad I Segunda Parte / Programacin de Sistemas / Ing. Leonardo Ramrez 1. Cmo expresar lo que queremos que realice la mquina? 2. Cmo debe entender la mquina las rdenes que expresamos? Puede ser que el tipo de rdenes que se darn sean del tipo: inicio, norte, sur, este, oeste. De manera que cuando se d al programa, inicio norte norte este este sur el robot tenga el siguiente comportamiento:

Si el robot no fuese real sino que tuviera que simularse, la semntica de cada orden sera determinada por modificar las coordenadas de la posicin del robot a travs de asociar acciones a las reglas gramaticales, como a continuacin se indican:

Produccin regla semntica.


secuencia inicio secuencia.x:=0 secuencia.y:=0 secuencia secuencia instruccin secuencia.x:=secuencia1.x+instruccin.dx secuencia.y:=secuencia1.y + instruccin.dy secuencia este instruccin.dx:=1 instruccin.dy:=0 secuencia norte instruccin.dx:= 0 instruccin.dy:=1 secuencia oeste instruccin.dx:=-1 instruccin.dy:=0 secuencia sur instruccin.dx:=0 instruccin.dy:=1

Unidad I Segunda Parte / Programacin de Sistemas / Ing. Leonardo Ramrez

Generacin de cdigo.
En programacin, la generacin de cdigo es una de las fases mediante el cual un compilador convierte un programa sintcticamente correcto en una serie de instrucciones a ser interpretadas por una mquina. La entrada en esta fase viene representada, tpicamente, por un rbol Sintctico, un rbol de Sintaxis Abstracta, o una Representacin Intermedia; la mquina destino puede ser un microprocesador o una mquina abstracta tal como una mquina virtual o un lenguaje intermedio, legible por un humano. Compiladores ms sofisticados realizan mltiples traducciones en cadena (pipelining) con el fin de poder construir cdigo para mltiples plataformas y evitar tener que construir todas las capas del compilador. En trminos ms generales, la generacin de cdigo: es usada para construir programas de una manera automtica evitando que los programadores tengan que escribir el cdigo a mano. La generacin de cdigo puede realizarse en tiempo de ejecucin, Tiempo de carga, o Tiempo de compilacin. Los compiladores JIT (Just In Time) son un ejemplo de generadores de cdigo.

Potrebbero piacerti anche