miércoles, 30 de mayo de 2012

1. TIPOS DE LENGUAJES DE PROGRAMACIÓN


1.1. Lenguaje máquina

            Es el único lenguaje que entiende directamente el ordenador. Por esta razón, su estructura está totalmente adaptada a los circuitos de la máquina y muy alejada de la forma de expresión y análisis de los problemas propia de los humanos. Esto hace que la programación en este lenguaje resulte tediosa y complicada, requiriéndose un conocimiento profundo de la arquitectura física del ordenador. Frente a esto, el código máquina hace posible que el programador utilice la totalidad de recursos que ofrece el ordenador, obteniéndose programas muy eficientes (que aprovechan al máximo los recursos existentes) en tiempo de ejecución y en ocupación de memoria.

            Las principales características del lenguaje máquina son las siguientes:

            • Las instrucciones se expresan en el alfabeto binario (están codificadas en binario como cadenas de ceros y unos), pudiéndose utilizar códigos intermedios (octal y hexadecimal). Esta característica hace que un programa en lenguaje máquina sea difícil de entender y, como consecuencia, difícil de modificar.

            • Los datos se referencian por medio de las direcciones de memoria donde se encuentran (no aparecen nombres de variables o de constantes).

            • Las instrucciones realizan operaciones muy simples. El programador debe ingeniárselas para expresar cada una de las operaciones que desea realizar en función de las instrucciones elementales que dispone.

            • Existe muy poca versatilidad para la redacción de las instrucciones, ya que, tienen un formato rígido en cuanto a la posición de los distintos campos (código de operación seguido de los campos dedicados a los operandos).

            • El lenguaje máquina depende y está íntimamente ligado a la CPU del ordenador. Esto hace que los programas en dicho lenguaje no sean transferibles de un modelo de ordenador a otro, es decir, existe baja portabilidad.

            • En un programa en lenguaje máquina no pueden incluirse comentarios que faciliten la legibilidad del mismo.

            1.2. Lenguaje ensamblador
Constituye el primer intento de sustitución del lenguaje máquina por uno más cercano al usado por los humanos. Este acercamiento se plasma en las siguientes aportaciones:

            • Uso de una notación simbólica o nemotécnica para representar los códigos de operación. De esta forma se evitan los códigos numéricos, tan difíciles de manejar. Normalmente, los códigos nemotécnicos están constituidos por abreviaturas de las operaciones en inglés. Así, por ejemplo, la suma se representa en la mayoría de los ensambladores por ADD.

            • Direccionamiento simbólico. En lugar de utilizar direcciones binarias absolutas, los datos pueden identificarse con nombres.

            • Se permite el uso de comentarios entre las líneas de instrucciones, haciendo posible la redacción de programas más legibles.
Aparte de esto, el lenguaje ensamblador presenta la mayoría de los inconvenientes del lenguaje máquina, como son su repertorio muy reducido de instrucciones, el rígido formato de las instrucciones, la baja portabilidad y la fuerte dependencia del hardware. Por otro lado, mantiene la ventaja del uso óptimo de los recursos hardware, permitiendo la obtención de un código muy eficiente.

            Este tipo de lenguajes hacen corresponder a cada instrucción en ensamblador una instrucción en
código máquina. Esta traducción es llevada a cabo por un programa traductor denominado ensamblador.
            Para solventar en cierta medida la limitación que supone poseer un repertorio de instrucciones tan reducido, se han desarrollado unos ensambladores especiales denominados macroensambladores. Los lenguajes que traducen los macroensambladores disponen de macroinstrucciones cuya traducción da lugar a varias instrucciones máquina y no a una sola. Por ejemplo, existen macroinstrucciones para multiplicar, dividir, transferir bloques de memoria principal a disco, etc.
            Dado que el lenguaje ensamblador está fuertemente condicionado por la arquitectura del ordenador que soporta, los programadores no suelen escribir programas de tamaño considerable en
ensamblador. Más bien usan este lenguaje para afinar partes importantes de programas escritos en lenguajes de más alto nivel. El lenguaje ensamblador sigue siendo importante, ya que, da al programador el control total de la máquina, y como resultado genera un código compacto, rápido y eficiente.

           

            1.3. Lenguajes de alto nivel

Los esfuerzos encaminados a hacer la labor de programación independiente de la máquina dieron como resultado la aparición de los lenguajes de programación de alto nivel. Estos lenguajes, más evolucionados, utilizan palabras y frases relativamente fáciles de entender y proporcionan también facilidades para expresar alteraciones del flujo de control de una forma bastante sencilla e intuitiva.

            Las características fundamentales de los lenguajes de alto nivel son las siguientes:
           
            • Son independientes de la arquitectura física del ordenador. Esto permite utilizar los mismos programas en ordenadores de arquitecturas diferentes (portabilidad) y, además, no es necesario conocer el hardware específico de la máquina.

            • Normalmente, una sentencia da lugar, al ser traducida, a varias instrucciones en lenguaje máquina.

            • Utilizan notaciones cercanas a las habituales en un determinado ámbito. Las operaciones se expresan con sentencias muy parecidas al lenguaje matemático o al lenguaje natural. Se utilizan, por lo general, palabras o términos en inglés.
La utilización de conceptos habituales suele implicar las siguientes cualidades:
            a) Las instrucciones se expresan por medio de texto, conteniendo caracteres alfanuméricos y caracteres especiales.
            b) Se puede asignar un nombre simbólico a determinados componentes del programa, para facilitar su comprensión. En los lenguajes imperativos, el programador puede definir las variables que desee, dándoles los nombres que considere oportuno, y siendo las reglas para la denominación de las mismas poco restrictivas.
            c) Se suelen incluir instrucciones potentes de uso frecuente que son ofrecidas por el lenguaje de programación. Por ejemplo, se suelen ofrecer funciones matemáticas de uso común (seno, coseno, etc.), operadores específicos de entrada/salida, operadores de tratamiento de cadenas de caracteres, etc.
            d) Pueden incluirse comentarios en las líneas de instrucciones, o en líneas específicas de comentarios. Esto facilita la legibilidad de los programas, tanto para el propio programador, como para otras personas.
Como consecuencia de este alejamiento de la máquina y acercamiento a las personas, los programas escritos en lenguajes de programación no pueden ser interpretados directamente por el ordenador, siendo necesario realizar previamente su traducción a lenguaje máquina. Hay dos tipos de traductores, que vamos a considerar en la siguiente sección, los compiladores y los intérpretes

No hay comentarios:

Publicar un comentario