INSTITUTO TECNOLOGICO DE VERACRUZ
LENGUAJES DE INTERFAZ
Atzimba del Rosario Nieto Torres / E18020735
Tarea de investigación
PROFESOR:
ING. LILIANA RANGEL RENTERÍA
H. Veracruz, Ver. Marzo 2021
Lenguajes de programación de alto nivel
Aunque los lenguajes ensambladores supusieron una mejora respecto a la programación
directamente en código máquina seguían siendo engorrosos, excesivamente alejados de la
forma de pensar humana y específicos de cada tipo de ordenador por lo que era muy
difícil, por no decir imposible, transportar un algoritmo de un ordenador a otro. Para
solucionar estos inconvenientes se desarrollaron los lenguajes de alto nivel, este tipo de
lenguajes proporcionan características más avanzadas que los lenguajes ensambladores
como estructuras de control, estructuras de datos, etc.
Son aquellos que se encuentran más cercanos al lenguaje natural que al lenguaje
máquina. Están dirigidos a solucionar problemas mediante el uso de EDD's.
Los EDD's son las abreviaturas de Estructuras Dinámicas de Datos, algo muy utilizado en
todos los lenguajes de programación. Son estructuras que pueden cambiar de tamaño
durante la ejecución del programa. Nos permiten crear estructuras de datos que se
adapten a las necesidades reales de un programa.
Se tratan de lenguajes independientes de la arquitectura del ordenador. Por lo que, en
principio, un programa escrito en un lenguaje de alto nivel, lo puedes migrar de una
máquina a otra sin ningún tipo de problema.
Estos lenguajes permiten al programador olvidarse por completo del funcionamiento
interno de la maquina/s para la que están diseñando el programa. Tan solo necesitan un
traductor que entiendan el código fuente como las características de la máquina.
Los lenguajes de alto nivel son independientes de la máquina y, por tanto, portables; es
decir, un algoritmo escrito en un lenguaje de programación de alto nivel puede utilizarse
en ordenadores diferentes. Esto es posible porque los lenguajes de alto nivel son
traducidos a lenguaje máquina por un tipo de programa especial denominado
“compilador”, un compilador toma como entrada un algoritmo escrito en un lenguaje de
alto nivel y lo convierte a instrucciones inteligibles por el ordenador; los compiladores
deben estar adaptados a cada tipo de ordenador pues deben generar código máquina
específico para el mismo.
Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados
por elementos de lenguajes naturales, como el inglés. En BASIC, uno de los lenguajes de
alto nivel más conocidos, los comandos como "IF CONTADOR = 10 THEN STOP" pueden
utilizarse para pedir a la computadora que pare si el CONTADOR es igual a 10. Esta forma
de trabajar puede dar la sensación de que las computadoras parecen comprender un
lenguaje natural; en realidad lo hacen de una forma rígida y sistemática, sin que haya
cabida, por ejemplo, para ambigüedades o dobles sentidos.
Se puede decir que el principal problema que presentan los lenguajes de alto nivel es la
gran cantidad de ellos que existen actualmente en uso, además de las diferentes versiones
o dialectos que se han desarrollado de algunos de ellos. Es difícil establecer una
clasificación general de los mismos, ya que en cualquiera que se realice habrá lenguajes
que pertenezcan a más de uno de los grupos establecidos. Una clasificación muy
extendida, atendiendo a la forma de trabajar de los programas y a la filosofía con que
fueron concebidos, es la siguiente:
• Lenguajes imperativos. Utilizan instrucciones como unidad de trabajo de los
programas (Cobol, Pascal, C, Ada).
• Lenguajes declarativos. Los programas se construyen mediante descripciones de
funciones o expresiones lógicas (Lisp, Prolog).
• Lenguajes orientados a objetos. El diseño de los programas se basa mas en los
datos y su estructura. La unidad de proceso es el objeto y en el se incluyen los
datos (variables) y las operaciones que actúan sobre ellos (Smalltalk, C++).
• Lenguajes orientados al problema. Diseñados para problemas específicos,
principalmente de gestión, suelen ser generadores de aplicaciones.
• Lenguajes naturales. Están desarrollándose nuevos lenguajes con el principal
objetivo de aproximar el diseño y construcción de programas al lenguaje de las
personas.
Lenguajes de bajo nivel
Lenguaje de bajo nivel es el que proporciona poca o ninguna abstracción del
microprocesador de un ordenador. Consecuentemente es fácilmente trasladado a
lenguaje de máquina. En general se utiliza este tipo de lenguaje para programar
controladores (drivers). En los primeros lenguajes de nivel bajo 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 nivel
bajo es que se requiere de ciertos conocimientos de programación para realizar las
secuencias de instrucciones lógicas
Complejidad
Dicho lenguaje es muy simple o nada complicado, pero estructurar programas a ese nivel
es muy difícil. Dado que este lenguaje viene dado por las especificaciones técnicas del
hardware, no permite una abstracción fuera de lo estipulado para el microprocesador de
un ordenador. Consecuentemente, es fácilmente trasladado a lenguaje de máquina.
Ventajas
• Mayor adaptación al equipo.
• Posibilidad de obtener la máxima velocidad con mínimo uso de memoria.
Desventajas
• Imposibilidad de escribir código independiente de la máquina.
• Mayor dificultad en la programación y en la comprensión de los programas.
• El programador debe conocer más de un centenar de instrucciones.
• Es necesario conocer en detalle la arquitectura de la máquina.
Lenguaje máquina
Lenguaje máquina Como sabemos, los computadores son máquinas diseñadas para
ejecutar programas. La ejecución de un programa exige que tanto el programa como los
datos residan en memoria principal. La secuencia lógica de ejecución de cualquier
programa se compone de los siguientes pasos, que se repiten sucesivamente:
1. Se lee de memoria principal una instrucción o sentencia del programa.
2. La Unidad de Control interpreta la instrucción leída
3. Bajo las órdenes de la Unidad de Control se ejecuta la instrucción.
Sin embargo, los computadores no son capaces de interpretar directamente un lenguaje
de alto nivel, sólo son capaces de entender y ejecutar un lenguaje muy restringido, de
bajo nivel, llamado lenguaje máquina. Por tanto, se necesita un proceso de traducción de
un programa escrito en un lenguaje de alto nivel a un programa en lenguaje máquina que
sea posible de ser ejecutado por un computador.
Normalmente, una sentencia en un lenguaje de alto nivel da lugar, al ser traducida, a
varias instrucciones en lenguaje máquina
El lenguaje máquina de cada computador depende estrechamente de su arquitectura
interna. Existe, por tanto, una incompatibilidad innata entre los distintos computadores o
familias de computadores. Sin embargo, los fabricantes se esfuerzan por mantener una
compatibilidad de código y que los programas máquina que funcionen en un procesador
El lenguaje máquina de cada computador depende estrechamente de su arquitectura
interna. Existe, por tanto, una incompatibilidad innata entre los distintos computadores o
familias de computadores. Sin embargo, los fabricantes se esfuerzan por mantener una
compatibilidad de código y que los programas máquina que funcionen en un procesador
sean capaces de funcionar en otro. Así los computadores de la serie Intel x86 son capaces
de interpretar y de ejecutar todo el mismo conjunto de instrucciones.
El lenguaje máquina establece las capacidades básicas del computador, por lo que
constituye una de las características más importantes de su arquitectura.
Las instrucciones máquina se almacenan y se tratan en el computador como cadenas de
“unos” y “ceros”. Se pueden escribir directamente en binario, o bien utilizar códigos
intermedios como el octal o el hexadecimal. Como se puede uno imaginar esta es una
forma muy engorrosa de escribir y manejar estas informaciones, por lo que la
programación directa utilizando estas instrucciones requiere de técnicos especialistas en
el propio hardware de la máquina.
Campos de una instrucción máquina
Cada instrucción máquina contiene diversas informaciones o campos:
• Código de operación: especifica la operación que realiza la instrucción.
• Campo de modo de direccionamiento: Indica la forma en la que se
expresan los operandos, aunque esto puede estar implícito en el código
de operación.
• Direcciones de los operandos: Dependiendo de la operación, puede ser
que en la instrucción se expliciten uno, dos o más operandos, cada uno
de los cuales puede direccionarse de forma distinta.
Una instrucción máquina puede ocupar una o varias palabras de
memoria, dependiendo de los operandos que tenga y de los modos de
direccionamiento para esos operandos.
Las propiedades generales que suelen cumplir las instrucciones de máquina son las
siguientes:
• Realizan una única y sencilla función, por lo que su decodificación e
interpretación es muy sencilla.
• Emplean un número fijo de operandos con una representación
determinada: No deben tener una sintaxis ambigua.
• La codificación de las instrucciones es bastante sistemática, puesto que
ello facilita su decodificación. Siguen el mismo patrón.
Las instrucciones son autocontenidas e independientes. Es decir, contienen toda la
información necesaria para ejecutarse, no requiriendo de la información de otras
instrucciones y no dependiendo su interpretación de la posición que ocupan en la
memoria o en el programa.
Lenguaje ensamblador
El lenguaje ensamblador es el lenguaje de programación utilizado para escribir programas
informáticos de bajo nivel, y constituye la representación más directa del Código máquina
específico para cada arquitectura de computadoras legible por un programador. Aun hoy
se utiliza en la programación de handler o manipuladores de dispositivos de hardware.
El lenguaje ensamblador contiene ciertas características que lo distinguen de otro
lenguaje de bajo nivel.
• El código escrito en lenguaje ensamblador posee una cierta dificultad de ser
entendido directamente por un ser humano ya que su estructura se acerca más
bien al lenguaje máquina, es decir, lenguaje de bajo nivel.
• El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para
un Microprocesador, suele necesitar ser modificado, muchas veces en su totalidad
para poder ser usado en otra máquina distinta, aun con el mismo
Microprocesador, solo pueden ser reutilizados secciones especiales del código
programado.
• Los programas hechos en lenguaje ensamblador, al ser programado directamente
sobre Hardware, son generalmente más rápidos y consumen menos recursos del
sistema (memoria RAM y ROM). Al programar cuidadosamente en lenguaje
ensamblador se pueden crear programas que se ejecutan más rápidamente y
ocupan menos espacio que con lenguajes de alto nivel.
• Con el lenguaje ensamblador se tiene un control muy preciso de las tareas
realizadas por un Microprocesador por lo que se pueden crear segmentos de
código difíciles de programar en un lenguaje de alto nivel.
• También se puede controlar el tiempo en que tarda una Rutina en ejecutarse, e
impedir que se interrumpa durante su ejecución.
• El lenguaje ensamblador es un código estructurado y gravitatorio desarrollado
sobre un archivo de programación (.ASM), en el cual pueden existir varios
programas, macros o rutinas que pueden ser llamados entre si.
Las instrucciones o nemónicos con las que cuenta el lenguaje ensamblador se encuentran
clasificadas de acuerdo con su función en instrucciones de transferencia, aritméticas,
saltos, lógicas y misceláneas.
• Instrucciones de transferencia: permiten el movimiento, carga y descarga de los
registros.
• Instrucciones aritméticas: encargadas de la aplicación de las pocas operaciones
aritméticas que contiene el lenguaje.
• Instrucciones lógicas: encargadas de la aplicación de las operaciones lógicas,
generalmente utilizan un solo operador.
• Instrucciones de salto: se caracterizan porque el operador contiene una dirección
de memoria en la cual debe continuar la ejecución en el caso que la instrucción así
lo determine.
• Instrucciones misceláneas: este pequeño conjunto de instrucciones consta de la
instrucción para finalización del programa, la instrucción para el llamado a
subrutinas de interrupción y la instrucción para leer una dirección efectiva.
El lenguaje ensamblador ha sido uno de los más importantes y línea media entre el
lenguaje natural (humano), y el lenguaje máquina, conservando las ventajas del último, a
continuación, se especifican algunos de sus usos en la actualidad.
Mejorar la eficiencia de una rutina específica que se ha transformado en un cuello
de botella.
Obtener acceso a funciones de bajo nivel del procesador para realizar tareas que
no son soportadas por los lenguajes de alto nivel.
Escribir manejadores de dispositivos para comunicarse directamente con hardware
especial tales como tarjetas de red.
Trabajar en ambientes con recursos limitados puede requerir el uso del lenguaje
ensamblador pues el código ejecutable puede ser menor que el generado por el
compilador.
Los lenguajes ensamblador tienen sus aplicaciones muy reducidas, se centran
básicamente en aplicaciones de tiempo real, control de procesos y de dispositivos
electrónicos.