Búsqueda blog.com.es

  • LENGUAJES DE ALTO NIVEL

    Organizacion del computador
    SECC 6
    JOSE LEDEZMA C.I. 17.352.958
    LENGUAJES DE ALTO NIVEL

    Son aquellos que se encuentran más cercanos al lenguaje natural que al lenguaje máquina y además se caracterizan por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de a la capacidad ejecutora de las máquinas. En los primeros lenguajes de alto nivel la limitación era que se orientaban a un área específica y sus instrucciones requerían de una sintaxis predefinida. Se clasifican como lenguajes procedimentales. Otra limitación de los lenguajes de alto nivel es que se requiere de ciertos conocimientos de programación para realizar las secuencias de instrucciones lógicas. Los lenguajes de muy alto nivel se crearon para que el usuario común pudiese solucionar tal problema de procesamiento de datos de una manera más fácil y rápida.
    Ante estas limitaciones surge la necesidad de crearlo para que sea más fácil de utilizar y que sirva para cualquier ordenador, es así como nacen los lenguajes de nivel alto, con unas características principales para satisfacer la necesidad:

    Universalidad: Posibilidad de utilización en cualquier computador.

    Orientación al problema: es decir, creados para un determinado problema.

    Su importancia radica en que un programador no tiene porque tener un conocimiento sobre el ordenador, simplemente se puede limitar a preocuparse del lenguaje en si mismo. Esto acarrea el consiguiente problema de que se necesitara de un “traductor†posteriormente para pasarse al lenguaje máquina: los llamados compiladores.

    Estos lenguajes se podrían dividir en tres: Procedurales, por bloques, orientados a objetos.

    Lenguajes Procedurales:

    Los lenguajes procedurales están fundamentados en la utilización de variables para almacenar valores y en la realización de operaciones con los datos almacenados.
    Algunos ejemplos son: FORTRAN, PASCAL, C, ADA, ALGOL...

    En este tipo de lenguajes, cuyo origen está ligado a la propia arquitectura de Von Neumann, la arquitectura consta de una secuencia de celdas, llamadas memoria, en la cual se pueden guardar en forma codificada, lo mismo datos que instrucciones; y de un procesador, el cual es capaz de ejecutar de manera secuencial una serie de operaciones, principalmente aritméticas y booleanas, llamadas comandos. En general, un lenguaje procedural ofrece al programador conceptos que se traducen de forma natural al modelo de la máquina. El programador por lo general tiene que traducir la solución abstracta del problema a términos muy primitivos, cercanos a la máquina. La distancia entre el nivel del razonamiento humano y lo expresable por los lenguajes imperativos causa que sus programas sean más "comprensibles" para la máquina que para el hombre.

    Con un lenguaje procedural el usuario (normalmente será un programador) especifica qué datos se necesitan y cómo hay que obtenerlos. Esto quiere decir que el usuario debe especificar todas las operaciones de acceso a datos llamando a los procedimientos necesarios para obtener la información requerida. Estos lenguajes acceden a un registro, lo procesan y basándose en los resultados obtenidos, acceden a otro registro, que también deben procesar. Así se va accediendo a registros y se van procesando hasta que se obtienen los datos deseados. Las sentencias de un lenguaje procedural deben estar embebidas en un lenguaje de alto nivel, ya que se necesitan sus estructuras (bucles, condicionales, etc.) para obtener y procesar cada registro individual. A este lenguaje se le denomina lenguaje anfitrión.

    Orientados a objetos

    Un objeto se puede definir como un grupo de procedimientos que comparten un estado. Se define al conjunto de datos como “estadoâ€, y “métodos†como el conjunto de procedimientos que pueden alterar ese estado. Un programa orientado a objeto es un método de implementación en el que los programas están organizados como colecciones de objetos, donde cada uno es una instancia de alguna clase, y donde todas las clases son miembros de una jerarquía de clases conectadas por relaciones de herencia.
    Son aquellos en los que el lenguaje obliga a seguir una determinada metodología.

    Son lenguajes recientes y como ejemplos de ellos tendríamos:

     SMALLTALK: Sería el primer lenguajes relevante orientado a objetos. Es principalmente un lenguaje interpretado, es decir es un lenguaje compilado en forma incremental: tanto el compilador como el lenguaje son parte del ambiente de programación smalltalk, cuando se utiliza smalltalk nunca se sale del ambiente de programación.

     C++: Es una versión ampliada de C. Es un lenguaje de propósito bastante general que tiene su fundamento obviamente en el antiguo C, pero que utiliza algunas sentencias de smalltalk. Es un programa compilado.

     JAVA: Se diseñó para ser pequeño, sencillo y portátil a través de plataformas y sistemas operativos, tanto a nivel de código fuente como binario, lo que significa que los programas en Java pueden ejecutarse en cualquier computadora que tenga instalada una máquina virtual de Java. Es un lenguaje ideal para distribuir programas ejecutables via WWW, además de un lenguaje de programación de propósito general para desarrollar programas que sean fáciles de usar. Otra característica es que es interpretado ya que corre en máquina virtual.

    Lenguajes Concurrentes, Paralelos y Distribuidos:

    La necesidad de ofrecer concurrencia en el acceso a los recursos computacionales se remonta a los primeros sistemas operativos. Mientras que un programa realizaba una operación de entrada o salida otro podría gozar del tiempo del procesador para realizar otra distinta. Aprovechar al máximo los recursos computacionales fue una necesidad apremiante, sobre todo en la época en que las computadoras eran caras y escasas; el sistema operativo tenía que ofrecer la ejecución concurrente y segura de programas de varios usuarios, que desde distintas terminales utilizaban un solo procesador, y así surgió la necesidad de introducir algunos conceptos de programación concurrente para programar los sistemas operativos.

    Posteriormente, cuando los procesadores cambiaron de tamaño y de precio, se abrió la posibilidad de contar con varios procesadores en una máquina y ofrecer el procesamiento en paralelo, es decir, procesar varios programas al mismo tiempo. Esto dio el impulso a la creación de lenguajes que permitían expresar el paralelismo.

    Finalmente, llegaron las redes de computadoras, que también ofrecen la posibilidad de ejecución en paralelo, pero con procesadores distantes, lo cual conocemos como la programación distribuida.

    En resumen, el origen de los conceptos para el manejo de concurrencia, paralelismo y distribución está en el deseo de aprovechar al máximo la arquitectura Von Neumann y sus modalidades reflejadas en conexiones paralelas y distribuidas.

    Históricamente encontramos en la literatura soluciones conceptuales y mecanismos tales como: semáforos, regiones críticas, monitores, envío de mensajes (CSP), llamadas a procedimientos remotos (RPC), que posteriormente se incluyeron como partes de los lenguajes de programación en Concurrent Pascal, Modula, Ada, OCCAM, y últimamente en Java.

    Ventajas- La escritura es similar al lenguaje humano (PRINT, WRITE, READ, etc.).
    - Modificaciones son más fáciles.
    - Transportabilidad.

    Desventajas- Aumenta la ocupación de memoria.
    - El tiempo de ejecución de los programas es mucho mayor.

  • TRADUCTORES DE LENGUAJE (Interpretes y Compiladores)

    TRADUCTORES DE LENGUAJE

    Los traductores de lenguaje son programas que traducen a su vez los programas fuentes escritos en lenguajes de alto nivel a código maquina. Estos se dividen en compiladores e interpretes.

    INTÉRPRETES.

    Un intérprete es un traductor que toma un programa fuente, lo traduce y a continuación lo ejecuta. BASIC es un lenguaje interpretado.

    Se trata de traductores-ejecutores ya que con cada instrucción realizan un proceso triple de lectura-traducción-ejecución. Son relativamente lentos, pero muy buenos para la depuración de programas.

    Se puede también utilizar una alternativa diferente de los compiladores para traducir lenguajes de alto nivel. En vez de traducir el programa fuente y grabar en forma permanente el código objeto que se produce durante la corrida de compilación para utilizarlo en una corrida de producción futura, el programador sólo carga el programa fuente en la computadora junto con los datos que se van a procesar. A continuación, un programa intérprete, almacenado en el sistema operativo del disco, o incluido de manera permanente dentro de la máquina, convierte cada proposición del programa fuente en lenguaje de máquina conforme vaya siendo necesario durante el proceso de los datos. No se graba el código objeto para utilizarlo posteriormente.

    La siguiente vez que se utilice una instrucción, se le debe interpretar otra vez y traducir a lenguaje máquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo, cada instrucción del ciclo tendrá que volver a ser interpretado cada vez que se ejecute el ciclo, lo cual hace que el programa sea más lento en tiempo de ejecución (porque se va revisando el código en tiempo de ejecución) pero más rápido en tiempo de diseño (porque no se tiene que estar compilando a cada momento el código completo). El intérprete elimina la necesidad de realizar una corrida de compilación después de cada modificación del programa cuando se quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado con antelación deberá ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada paso durante una corrida de producción.

    COMPILADORES

    Es un programa que traduce programas fuentes escritos en alto nivel a lenguaje máquina (programa objeto). Un programa objeto no ha sido traducido normalmente a código maquina sino a ensamblador. Para conseguir el programa maquina real se debe utilizar un programa llamado montador o enlazador (linker). El proceso de enlazador conduce a un programa en lenguaje máquina directamente ejecutable.

    El enlazador, en C, es necesario por varias razones:
    1. El programa necesitara ser combinado con varias bibliotecas de rutinas.
    2. Tal vez no desees compilar el programa completo ya que muchos programas en C grandes consisten de archivos separados que tal vez ya estén compilados.
    El proceso de una ejecución de un programa en C tiene los siguientes pasos:

    1. Escritura del programa fuente con un editor.

    2. Introducir el programa fuente en memoria.

    3. Compilar el programa.

    4. Verificar y corregir errores de compilación.

    5. Obtención del programa objeto.

    6. El enlazador obtiene el programa ejecutable.

    7. Se ejecuta el programa si no existen errores.

    Los compiladores son más rápidos que los intérpretes pero presentan mayor dificultad a la hora de detectar errores.
    Naturalmente, un programa que se escribe en un lenguaje de alto nivel también tiene que traducirse a un código que pueda utilizar la máquina. Los programas traductores que pueden realizar esta operación se llaman compiladores.
    Éstos, como los programas ensambladores avanzados, pueden generar muchas líneas de código de máquina por cada proposición del programa fuente. Se requiere una corrida de compilación antes de procesar los datos de un problema.

    Los compiladores son aquellos cuya función es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina con código binario).

    Al usar un lenguaje compilado (como lo son los lenguajes del popular Visual Studio de Microsoft), el programa desarrollado nunca se ejecuta mientras haya errores, sino hasta que luego de haber compilado el programa, ya no aparecen errores en el código.

Pie de página:

El contenido de esta web pertenece a una persona privada, blog.com.es no es responsable del contenido de esta web.