El ordenador

Un ordenador es un dispositivo, normalmente electrónico, por lo general además digital en los tiempos que corren, que manipula o transforma información mediante tres funciones:

  1. computación: transformación de la información (por ejemplo corregir las faltas de ortografía de un escrito)
  2. almacenamiento: guardar información
  3. comunicación: transmisión de información entre el ordenador y el exterior, incluído otros ordenadores

Un ordenador recibe señales exteriores y según su contenido y el estado del ordenador (guardado en su memoria) emite otras señales.

Microprocesadores

La mayoría de los ordenadores se basan en microprocesadores, que son circuitos integrados que realizan la función de computación y que ejecutan programas residentes en alguna memoria (un disco duro, flash, RAM etc.). El típico microprocesador apenas dispone de memoria RAM sino que casi toda la memoria RAM que utiliza se encuentra en otro circuito integrado dedicado específicamente a memoria RAM.

Microcontroladores

Un microcontrolador es un circuito integrado casi siempre menos potente que un microprocesador, y que contiene su propia memoria RAM, memoria de programa, y tal vez circuitos integrados para realizar funciones.

Lógica programable

Otros ordenadores no ejecutan programas sino que su acción está grabada en cómo están configuradas sus conexiones internas (lógica programable). Suelen ser más rápidos que el primer tipo y la mayoría siguen la arquitectura FPGA (Field Programmable Gate Array).

Lenguajes máquina

Los ordenadores que ejecutan programas residentes en memoria, los típicos, se basan en microprocesadores o microcontroladores, como hemos explicado. Y dichos microprocesadores funcionan ejecutando instrucciones formadas por secuencias de ceros y unos (bits), para entendernos. Por ejemplo la instrucción para sumar podría ser 0101. De hecho su diseñador en algún momento decidió cuál sería la secuencia de bits para sumar, incluído cuantos bits mediría y si mediría el mismo número de bits (cuantro es este caso) que la instrucción para restar.

Dichas secuencias se llaman códigos de operación, opcodes en inglés (de operation code).

Repito, cada ordenador tendrá sus propias secuencias para cada operación.

También tendrá reglas sobre cómo han de ser los operandos. Por ejemplo en una suma los operandos se denominan sumandos. Siguiendo con nuestro ejemplo, si presuponemos que los sumandos miden ocho bits y que el número 1 se representa mendiante 00000001, entonces para sumar 1 + 1 tendríamos que escribir en la memoria de programa:

00000001 00000001 0101

Por supuesto los espacios los he puesto por claridad (es decir por caridad) y no he explicado cómo escribir semejante secuencia de 0 y 1 en la memoria de programa, si bien en la práctica no resulta muy difícil averiguar cómo hacerlo en cada caso (modelo de ordenador y sistema operativo) en particular.

Esta forma de programación con ceros y unos también se denomina lenguaje máquina.

Ensamblador

Ahora bien, podemos escribir lo anterior en un lenguaje más sencillo (lenguaje ensamblador) y teclear algo análogo a:

1 1 SUM

(Digo análogo porque probablemente se parezca más a 1 1 ADD, o incluso 0x01 0x01 ADD o quién sabe.)

En esencia un lenguaje ensamblador realiza dos tareas :

  1. traducir a ceros y unos palabras fáciles de recordar tales como SUM, ADD, COMP etc. (mneumónicos), y
  2. realizar una serie de cálculos engorrosos y liosos tales como escribir el número -37 a ceros y unos.

Lo importante es comprender que por utilizar ensamblador en lugar de lenguaje máquina no perdemos control sobre la máquina.

No obstante los lenguajes ensambladores gozan de mala fama principalmente porque las operaciones que actualmente les pedimos a los ordenadores son tan complejas que incluso con las dos ayudas anteriores la programación se vuelve tediosa, liosa, resbaladiza (error-prone) y laboriosa.

Por supuesto cuando se inventó el ordenador los ingenieros eléctricos estaban encantados con ellos y dispuestísimos a escribir en lenguaje máquina y ya no te cuento en lenguaje ensamblador, facilísimo comparado con el de puros ceros y unos.

Actualmente el ensamblador se utiliza para escribir código que se ejecuta muchas veces en muchos ordenadores. Por ejemplo las partes más intensas de Linux están escritas en ensamblador.

Con el tiempo el lenguaje ensamblador se clasificó entre los lenguajes de bajo nivel, junto con el lenguaje máquina, sólo apto para masoquistas. La minoría formada por los programadores decidió hacerse un regalo y antes de perder el seso como don Quijote inventó los lenguajes de alto nivel, en esencia más fáciles, manejables y expresivos, y se pasó a ellos, con lo que se inaugura la ciencia y arte de la programación propiamente dicha.


Existe, o subsiste, un lenguaje intermedio, C (por lo visto siguió a un oscuro lenguaje llamado B), que se considera de bajo nivel en el sentido de que permite un control más directo de la máquina (el hardware). Al no ser de tan bajo nivel como el ensamblador no goza de tan mala fama. Por cierto el lenguaje C se ha utilizado y continúa utilizando para escribir programas para: