Está en la página 1de 4

Grupo CUYS (Como usted ya sabe) | WWW.CUYS.COM.AR Fac. Cs.

Exactas (UNICEN) Hoja 1

Introduccin a la Arquitectura de Sistemas Apunte Paradigmas de la Programacin


Un lenguaje de programacin es una notacin formal para describir algoritmos que sern ejecutados en una computadora. Posee reglas a nivel simblico bien definidas. Cada lenguaje tiene una determinada sintaxis que debe ser respetada para que el algoritmo pueda implementarse. A este conjunto de ideas que indica una forma de programar se lo conoce como Paradigma de la Programcin. A travs de los paradigmas se pueden diferenciar los lenguajes por la forma de trabajo que presentan al programador, ofreciendo diversas formas de "ver" y "pensar" un programa antes de escribirlo. Dentro de los tipos de lenguajes podemos diferenciar: de Alto Nivel: Se utiliza un lenguaje coloquial (el ingls) para facilitar el trabajo del programador. Estos lenguajes son faciles de escribir y entender pero tiene una desventaja, se necesita un traductor para que el microprocesador los entienda. Ejemplos de lenguajes de alto nivel: Pascal, C++, etc... de Bajo Nivel: Estos lenguajes son ms complicados de escribir y entender ya que se debe saber sobre la estructura del CPU, su programacin es la menos portable de una plataforma a la otra, es decir, no mantiene su funcionamiento estable si se producen modificaciones en los recursos de la mquina (hadware, Sistema Operativo, etc...). Por otro lado, es ms rpido y ocupa menos memoria. Ejemplos de lenguajes de bajo nivel: Cdigo mquina, lenguaje ensamblador. Dentro de los paradigmas de la programacin encontramos dos tipos: Imperativos: Se trata de una forma antigua en la que el programador "da rdenes" que la computadora debe cumplir. Programacin Orientada a Flujo: se refiere al modo en que el programador codifica, es decir, linealmente y sin realizar saltos. Esto implica la necesidad de repetir cdigo ya que no se hacen llamados a sentencias anteriores. El lenguaje que ms respeta este paradigma es BASIC. Debido a las desventajas que presentaban (in-escalable, propenso a cometer errores al programar, poca legibilidad) surge una nueva programacin. Programacin Procedural o Estructurada: el cdigo se encuentra organizado en bloques indivisibles por lo que se hace ms sencilla la lectura del programa. Se produce un principio de encapsulamiento: dejan de utilizarse las variables globales , se elimina el goto. Se pueden controlar las variables locales a partir del alcance y la visibilidad de las mismas. Es decir, se sabe cuanto tiempo dura la variable y desde donde la puedo acceder. Los lenguajes que ms respetan este paradigma son: Pascal y C, aunque hay sentencias, como el brake, return y loop que rompen con este. Declarativos: El programador especifca el problema y la mquina lo resuelve. Enuncia el resultado y no importa como se llegue a l.

Grupo CUYS (Como usted ya sabe) | WWW.CUYS.COM.AR Fac. Cs. Exactas (UNICEN) Hoja 2

Programacin Funcional: En un lenguaje funcional todo sistema puede ser descrito como una serie de listas o expresiones funcionales utilizadas para combinar valores bsicos y obtener los resultados deseados. El lenguaje ms conocido es el LISP. Ejemplo de programacin en LISP: (Declarar _ funcin Promedio ( A B ) ( / ( + A B ) 2 ) Programacin lgica: Se basa en hechos y reglas. Un lenguaje lgico conocido es PROLOG. Realiza un calculo predictivo para obtener los resultados. Ejemplo de programacin en PROLOG: Padre(Pedro, Juan) Padre(Juan, Pablo) Abuelo(x, y) si Padre (x, z) Padre (z, y) El programa consiste en decir si existe una relacin abuelo entre los elementos de un conjunto dado. Paradigmas de Objetos: Programacin orientada a objetos: Surge a partir de los paradigmas imperativos y declarativos. Consiste en un conjunto de datos y mtodos que se utilizan para acceder a esos datos. Apto para problemas que incluyen otros problemas (problemas muy extensos y complejos). Las caractersticas ms importantes de esta forma de programacin son: Herencia: Permite la programacin diferencial, es decir, a partir de un objeto ya definido, se programa otro que lo completa. Por ejemplo, se puede controlar una cuenta corriente y una caja de ahorros a partir de un objeto ms general como sera una cuenta bancaria. Polimorfismo: Habilidad de llamar de la misma forma a dos mtodos o procedimientos diferentes. El programa decide qu mtodo utilizar a partir de los parmetros que recibe. Ejemplo de lenguaje basado en la programacin orientada a objetos: Java, el cual nace a partir de C++ y Smalltalk. Procesos de cambio de un lenguaje de alto nivel a un lenguaje de bajo nivel: Los programas en lenguaje de alto nivel deben ser traducidos a cdigo ejecutable. Para ello hay dos formas: Compilacin: Compila todo el programa de una vez, generando cdigo

Grupo CUYS (Como usted ya sabe) | WWW.CUYS.COM.AR Fac. Cs. Exactas (UNICEN) Hoja 3

objeto. Este cdigo es casi ejecutable, solo le falta vincularse con las libreras externas al programa . Es un lenguaje rgido ya que cualquier modificacin en el programa implica realizar una nueva compilacin. Interpretacin: Lee y compila lnea por lnea en el orden de ejecucin y luego la ejecuta. Es un lenguaje ms flexible ya que si modifico el programa, el binario se genera inmediatamente; convierte cada proposicin del programa fuente en lenguaje de mquina conforme vaya siendo necesario durante el proceso de los datos. No se graba el cdigo objeto para utilizarlo posteriormente. Esto se debe a que el anlisis, traduccin y ejecucin estn ligados, al contrario de un programa compilado donde la ejecucin es independiente. Por ejemplo: durante el procesamiento repetitivo de los pasos de un ciclo, cada instruccin del ciclo tendr que volver a ser interpretada cada vez que se ejecute el ciclo, lo cual hace que el programa sea ms lento en tiempo de ejecucin (porque se va revisando el cdigo en ese tiempo) pero ms rpido en tiempo de diseo (porque no se tiene que estar compilando a cada momento el cdigo completo). El interprete elimina la necesidad de realizar una compilacin despus de cada modificacin del programa cuando se quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado con antelacin deber ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada paso durante una ejecucin. Los lenguajes de programacin se caracterizan por poseer varios niveles: Lxico: Smbolos que se pueden usar (operadores, constante, instrucciones e identificadores) Sintctico: Construcciones vlidas. Semntico: Significado de las construcciones. Pasos de Compilacin: Filtros y Tuberas...

En el anlisis se crea una representacin intermedia del programa fuente. Comprueba que el programa sea correcto. Es la ms compleja ya que requiere de tcnicas especficas. Al realizar el anlisis lxico, se buscan los smbolos y se los clasifican. Detecta primitivas (if, then, else, etc...) y variables. Este anlisis comprueba que los smbolos usados sean propios del lenguaje almacenndolos en una tabla de smbolos (contiene un registro por smbolo). Esta tabla permite encontrar el registro de cada identificador y almacenar o consultar datos de ese registro. Analiza el smbolo, identifica el tipo y luego lo almacena en la tabla de smbolos. Si encuentra un caracter no vlido, genera un error lxico

Grupo CUYS (Como usted ya sabe) | WWW.CUYS.COM.AR Fac. Cs. Exactas (UNICEN) Hoja 4

Cuando se realiza el anlisis sintctico, antes de generar el cdigo, se crea un rbol de Sintaxis de la estructura del programa para simplificarlo, si el rbol no se puede generar se indica el error, es decir, a partir del rbol generado, el compilador verifica que las sentencias estn bien escritas. Ejemplo de rbol sintctico para el siguiente cdigo: if A < 3 then x=2 else x=4 El rbol quedara as:

Tambin se realiza un anlisis semntico que comprueba que las construcciones tengan significados coherentes, es decir, comprueba que las expresiones sean de tipos compatibles. Lo hace empleando la verificacin de tipos. El optimizador es un algoritmo que analiza el rbol de sintaxis e intenta mejorarlo de modo que resulte un cdigo mquina ms rpido de ejecutar y que ocupe menos espacio. El generador de cdigo realiza sobre todo el programa una traduccin al lenguaje ensamblador a partir del rbol. Luego el ensamblador lleva el programa que el compilador creo en lenguaje Assembler a lenguaje mquina (binario). Por ltimo se realiza la vinculacin (esttica o dinmica). Se une cada variable con el lugar de memoria correspondiente. Utiliza dll's (libreras de enlace dinmico). A partir del ejecutable y las libreras se termina el proceso de vinculacin.

También podría gustarte