Tag Archive maquina

Bycarenki

Lenguajes de programación I

Ya hemos revisado que el lenguaje de las computadoras es el Lenguaje Máquina, y es una secuencia codificada de 0’s y 1’s, de esta forma podemos dar instrucciones que serán ejecutadas por el procesador, sin embargo programar en lenguaje máquina en la práctica y para la dimensión de los programas de computadora actuales es una tarea inviable.

A continuación se muestran instrucciones en código máquina, observa que está en formato hexadecimal, pero recuerda que los números hexadecimales son convertibles de forma directa a números binarios.

¿Cuándo se requiere programar en lenguaje máquina?

Codigo màquina

Codigo màquina

Típicamente se utiliza la programación en lenguaje máquina cuando se diseña un nuevo dispositivo de hardware, ya sea un CPU, un BIOS, una placa controladora, etc, como se parte de que no existe un programa que controle a dicho dispositivo, entonces surge la necesidad de realizar este programa primigenio en el lenguaje directo de dicho dispositivo. Como podrás imaginar, se programan todas las funciones indispensables y básicas que se requieren para controlar a dicho dispositivo y se deja la interface para que el dispositivo se pueda comunicar con otros dispositivos o programas.

Programar en lenguaje máquina es una tarea muy costosa en términos de tiempo – hombre, eso sin considerar la facilidad con que se pueden cometer errores al programar directamente en cádigo máquina.

Ensamblador

De esta necesidad surgió la necesidad de simplificar la programación en lenguaje máquina, la primera aproximación que se desarrolló fue representar lenguajes en forma simbólica las instrucciones del procesador. De modo que las instrucciones a base de palabras cortas y una sintaxis específica representan casi de forma directa el código máquina. Esta serie de palabras cortas recibieron el nombre de “mnemotécnicos” y el lenguaje desarrollado se denominó Lenguaje Ensamblador

Los Lenguajes Ensambladores al representar casi de forma directa las instrucciones máquina, son específicos de un procesador y/o arquitectura, de modo que difícilmente se podrá portar un código programado en ensamblador a otro procesador o arquitectura.

Los programas que toman código programado en ensamblador y los convierten en su equivalente en código máquina se denominaron Ensambladores.

El código en ensamblador supone grandes mejoras con respecto a escribir programas en código máquina

  • Es más fácil de escribir y leer
  • Es más fácil de mantener
  • Es prácticamente igual de eficiente que el código máquina

Sin embargo, a pasar que los lenguajes ensambladores supusieron un avance con respecto a los programas en lenguaje máquina, la programación en ensamblador sigue siendo compleja y ha quedado reservada en la programación de áreas muy específicas:

  • Programación de hardware
  • Programación de controladores de dispositivo (device drivers)
  • Optimización de procesos
  • Cuando los recursos disponibles son reducidos o limitados
  • Desarrollo de aplicaciones en tiempo real
  • Obtener acceso a funciones de bajo nivel del procesador para realizar tareas que no son soportadas por los lenguajes de alto nivel.

En términos generales las principales características del lenguaje ensamblador son:

  • Posibilidad de obtener la máxima velocidad con mínimo uso de memoria.
  • Está orientado a la máquina por tanto tiene mayor adaptación al equipo.
  • Se trabaja a nivel de instrucciones, es decir, su programación es al más fino detalle.
  • Genera programas más rápidos y pequeños comparados con los generados por otros lenguajes.

Finalmente señalo que a los lenguajes ensambladores se les denomina Lenguajes de Bajo Nivel por la estrecha relación que tienen con la máquina.

Lenguaje de Bajo Nivel

La palabra “bajo” no implica que el lenguaje sea inferior a un lenguaje de alto nivel; se refiere a la reducida abstracción entre el lenguaje y el hardware.

Un lenguaje de programación de bajo nivel es el que proporciona poca o ninguna abstracción del microprocesador de una computadora. Consecuentemente es fácilmente traducido en lenguaje máquina.

Lenguajes de alto nivel

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 Estructuras Dinámicas de Datos.

Se tratan de lenguajes independientes de la arquitectura de la computadora. 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. A esto se le denomina Portabilidad de un Programa

Estos lenguajes permiten al programador olvidarse por completo del funcionamiento interno de la maquina para la que están diseñando el programa.

Hay lenguajes de propósito general (cualquier tipo de aplicación) y de propósito especifico (como FORTRAN para trabajos científicos).

Lenguajes de Medio nivel

Lenguaje intermedio: El CLR de .Net

Lenguaje intermedio: El CLR de .Net

Se trata de un termino no aceptado por todos, pero que seguramente habrás oído. Estos lenguajes se encuentran en un punto medio entre los dos anteriores. Dentro de estos lenguajes podría situarse C ya que puede acceder a los registros del sistema, trabajar con direcciones de memoria, todas ellas características de lenguajes de bajo nivel y a la vez realizar operaciones de alto nivel.

Actualmente como lenguaje intermedio podemos entender una máquina abstracta diseñada para ayudar a realizar el análisis de un programa. De acuerdo a esta descripción, podemos considerar a la máquinas virtuales como máquinas de lenguaje intermedio. Dos de los principales exponentes son la máquina virtual de Java y el CIL (Common Intermediate Language) de Microsoft para su plataforma .NET

Redacción, composición y desarrollo por carenki
Publicado originalmente en ehack.info

 

 

 


Fuente Imágenes:

“Evolución de los lenguajes de programación: by McLibre en McLibre
“Codigo máquina”: Imagen cortesía by Wikipedia
“Todas las imágenes del programa Hola mundo”: Imagen cortesía bWikipedia
“Hola Mundo en Plankalkül”: Imagen cortesía by Alberto García en adslzone
“Lenguaje intermedio: El CLR de .Net”: Imagen cortesía by MSDN

En la elaboración de este artículo en la sección de lenguajes de programación me apoyé de forma significativa en la obra:  Historia y evolución de los lenguajes de programación de Vicente Trigo Aranda

Así como algunas referencias de:

 

Licencia de Creative CommonsLenguajes de programación I y II by carenki para HPSI is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.

 

y aquí qué

Bycarenki

Lenguaje máquina

 Lenguaje máquina

Considerando estas definiciones podemos adaptar y ampliar nuestra propia definición de Lenguaje Máquina:

Lenguaje máquina es el sistema estructurado de símbolos y reglas sintácticas y semánticas basadas en el sistema de numeración binario que permiten controlar el comportamiento físico y lógico de una computadora y que son interpretadas directamente por el CPU sin requerir ningún cambio.

Read More

y aquí qué

Bycarenki

El lenguaje de las computadoras parte I

El lenguaje de las computadoras

Programar sistemas no es otra cosa que escribir instrucciones que las computadoras utilizarán para realizar alguna tarea o actividad de acuerdo a un requerimiento. Normalmente para escribir estos programas se requiere un Lenguaje de Programación, que dependiendo sus características nos ayudará a completar una tarea (programa), es importante señalar que la gran cantidad de lenguajes existentes se debe a que cada lenguaje cubre mejor una necesidad que otro dependiendo la complejidad, condiciones de desarrollo y tamaño de un problema determinado.

Sin embargo, sin importar el lenguaje de programación utilizado para desarrollar un programa, la máquina que ejecutará dicho programa solo procesará las instrucciones en su propio “idioma”: El lenguaje máquina

El lenguaje máquina es específico de cada familia de computadoras, sin embargo todos tienen algo un común, está formado de secuencias de bits, la forma de organizarlos e interpretarlos dependerá de la arquitectura de la familia de computadoras.

Para comprender las instrucciones que una computadora ejecuta es necesario recordar la materia prima que las hace funcionar: La electricidad.

Consideremos lo siguiente. Una dispositivo eléctrico (cualquiera) tiene 2 estados fundamentales: encendido o apagado. No hay estados intermedios, no podemos tener un equipo “medio encendido”. Simplemente está encendido o apagado.

El procesador o CPU

CPU: Unidad Central de Procesamiento

CPU: Unidad Central de Procesamiento

El corazón de una computadora (sea PC de escritorio, celular o dispositivo inteligente) es un circuito denominado Unidad Central de Proceso (CPU) o simplemente procesador y aprovecha una característica de la electricidad (estado prendido/apagado) para codificar instrucciones.

Está fuera del alcance de este documento describir la electrónica que realiza esta tarea.

Lo importante en este punto es resaltar que el corazón de una computadora se basa en el principio de encender o apagar impulsos eléctricos, de forma controlada. Este encendido y apagado controlado se logra precisamente a partir de la programación del mismo microprocesador y de instrucciones que indican de qué forma y en qué momento se deben encender o apagar esas señales eléctricas dentro del procesador y en toda la circuitería de una computadora.

Precisamente esta codificación de encendido y apagado de señales eléctricas dentro de los circuitos de la computadora es el llamado Lenguaje Máquina.

Lenguaje.

Resulta conveniente definir el significado de lenguaje, dado que se utiliza ampliamente en este curso.

“Un lenguaje es un sistema de comunicación estructurado para el que existe un contexto de uso y ciertos principios combinatorios formales. Existen contextos tanto naturales como artificiales (1)”

De acuerdo con el diccionario de la Real Academia Español.

“7. m. Inform. Conjunto de signos y reglas que permite la comunicación con una computadora.” (2) y 

lenguaje máquina

“1. m. Inform. Conjunto de instrucciones codificadas que una computadora interpreta y ejecuta directamente.” (2)

Recuerda: Este es un ejemplo extremadamente simplificado pero que permite comprender como es que con 1’s y 0’s podemos dar instrucciones a una computadora.

Este documento es un borrador y se encuentra en fase de desarrollo. Si tienes alguna aportación y/o corrección será bienvenida

*Este artículo originalmente se presentó en ehack.site

 

 

 


Fuente Imágenes:

“El lenguaje de las computadoras: El lenguaje máquina”: Imagen cortesía by Stuart Miles en FreeDigitalPhotos.net
“CPU: Unidad Central de Procesamiento”: Imagen cortesía by Intel
“Lenguaje máquina”: Imagen cortesía by dream designs en FreeDigitalPhotos.net
“Lenguaje binario”: Imagen cortesía by Stuart Miles en FreeDigitalPhotos.net
“Byte”: Imagen cortesía by Stuart Miles en FreeDigitalPhotos.net
“Bit”: Imagen cortesía by Nala Systems en nalasys.mx

Referencias

(1) http://es.wikipedia.org/wiki/Lenguaje
(2) http://dle.rae.es/?id=N7BnIFO

 

Licencia de Creative Commons¿Por qué aprender a programar? by carenki para HPSI is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.

 

y aquí qué