Serapis
|
Lenguaje máquina y lenguaje ensamblador, realmente son dos cosas distintas, aunque en general suele referirse a ello de forma indistinta.
- El lenguaje máquina es la forma exacta que entiende el procesador (meramente bytes, que son las instrucciones a ejecutar).
- El lenguaje ensamblador es una equivalencia simbólica de esas instrucciones, esto es, en vez de escribir bytes que nadie puede recordar (imagina un fichero repleto de bytes, dónde está tal o cual instrucción si no sabes donde empieza una y acaba otra, porque hay instrucciones (en la arquitectura x86) que tienen diferente cantidad de bytes), son símbolos (nombres que para nosotros tienen significado, al caso del ensamblador se llaman pnemónicos), así una instucción como "MOV Ax, 20H" es asimilable como lectura al ser humano, y además va en una línea, y tiene una construcción específica, esto es, mantiene una estructura, otorgándole un orden que facilita enormemente la legibilidad...
- Sin embargo, como se considera al ensamblador una cuasi equivalencia al lenguaje máquina (no es cierto del todo, ya que hay metainstrucciones), pués puede hablarse como equivalentes, en casi todos los ámbitos.
Dado que todo programa al final tiene que ser compilado (sea completo en una fase o línea a línea (interpretado)) = traducido a lenguaje máquina desde un lenguaje mas cercano a la forma de pensar humana, en ensamblador se puede hacer todo... ...otra cosa es el tiempo que te lleve hacerlo.
Piensa que una instrucción de un lenguaje de alto nivel, puede equivaler desde una a varias en ensamblador... Así que el código (para el programador) para una misma funcionalidad, siempre resulta mucho más largo (incluso a veces algo muy simple), además a causa de que en los diferentes lenguajes ensamblador es común que cada instrucción vaya en una sola línea, mientras que en un lenguaje de alto nivel, lo común es que una línea ocupe una expresón (por ejemplo: "si 'z' es menor que 'x' e 'y' = 'x' luego 'z'= ('z'+('x' * 'y')" ), hace el texto del código programado mucho más extenso. Aunque luego una vez compilado, lo que se programó en lenguaje ensamblador siempre (si el programador sabe lo que está haciendo) es mucho más pequeño que el código compilado del lenguaje de alto nivel.
Por lo que en general el lenguaje ensamblador suele utilizarse solo en determinadas ocasiones donde el rendimiento es algo crítico. Es típico al hacer un programa que algún algoritmo con mucha carga de trabajo, sea desarrollarlo en ensamblador.
No he visto la película que mencionas, o al menos no con ese título. Pero la electricidad de una casa, en general se apaga (o puede apagarse) desde una sola palanca, y desde que la electricidad está en la tecnología del ser humano, han existido automatismos para hacerlo así. Se llaman sistemas electromecánicos. En general el estudio de motores eléctricos, lleva a aparejado todo este control... Luego llevarlo al terreno digital, exige un circuito adicional que conmuta a un circuito de potencia y deja al otro (la electricidad de la casa, como indicas) en alta impedancia (vamos que corta la corriente, sea separando contactos, derivando el ciruito, interponiendo aislantes, etc...).
|