Tomando algunas libertades bastante grandes en aras de la brevedad:
En esencia, todas las computadoras automáticas programables (máquinas informáticas, no personas cuyo trabajo consistía en calcular la aritmética, que es lo que significaba la palabra anteriormente) tienen un “vocabulario” de un lenguaje de máquina, un conjunto nativo de instrucciones que pueden enviar. Por ejemplo, la familia MOS-65 xx entiende que el valor binario # b10101001 significa “tomar el byte que sigue a este y cargar su valor en el registro del acumulador para que pueda usarlo para algunos cálculos aritméticos más adelante”.
Escribir programas en binario es arduamente doloroso; así que los humanos crearon los mnemónicos del lenguaje ensamblador que representan directamente el código de máquina binario. Por ejemplo, el código binario # b10101001 se representa como LDA, para “cargar el acumulador”.
Entonces, a lo largo vino Amazing Grace. La Dra. Grace Hopper, también conocida como la Contralmirante Grace Hopper de la Marina de los EE. UU., “Propuso” la idea de escribir un programa que pudiera leer una serie de instrucciones “amigables con los humanos” y traducirlas a un formato “amigable con las máquinas”. El programador podría entonces editar este “código fuente”, introducirlo en el compilador de programas automático que inventó, y eliminar el “código objeto” para ejecutarlo en la computadora.
- ¿Cuáles son algunos ejemplos de productos o invenciones aparentemente inútiles que han hecho millones a los inventores?
- ¿Qué cambios en la historia podrían hacer que un invento famoso se inventara mucho antes de lo esperado?
- ¿Cuáles son las mejores cosas inventadas y que todavía se utilizan hoy en día?
- Si Albert Einstein y Nikola Tesla probaran psicodélicos, ¿habrían descubierto secretos adicionales sobre el universo?
- ¿Por qué idolizamos a Thomas Edison, cuando la corriente alterna de Nikola Tesla es la corriente más utilizada?
Para citar Wikipedia:
En 1949, Hopper se convirtió en empleado de Eckert-Mauchly Computer Corporation como matemático principal y se unió al equipo que desarrollaba UNIVAC I. [18]
Este idioma fue diseñado para traducir el inglés a los códigos de computadora. Cuando recomendó que se desarrollara un nuevo lenguaje de programación utilizando palabras en inglés, “se le dijo muy rápidamente que [ella] no podía hacerlo porque las computadoras no entendían el inglés”. Esta idea no fue aceptada durante 3 años, y publicó su primer artículo sobre el tema, compiladores, en 1952. A principios de la década de 1950, la compañía Remington Rand se hizo cargo de la compañía, y fue mientras ella estaba trabajando para ellos que Su trabajo original de compilación fue hecho. El compilador era conocido como el compilador A y su primera versión era A-0. [22]
En 1952 tenía un compilador operacional. “Nadie creía eso”, dijo ella. “Tenía un compilador en ejecución y nadie lo tocaría. Me dijeron que las computadoras solo podían hacer aritmética”. [23]
En 1954, Hopper fue nombrada la primera directora de programación automática de la compañía, y su departamento lanzó algunos de los primeros lenguajes de programación basados en compiladores, incluidos MATH-MATIC y FLOW-MATIC. [18]
A finales de la década de 1950, su visión había despegado. Es mucho más fácil para un programador escribir, leer y entender algo como esto:
(defun +2 (x)
“Suma 2 al valor dado”
(+ x 2))
… que su equivalente en lenguaje ensamblador …
; Origen: # x101EEF505C
MOV RCX, [R12 + 96]
MOV [RBP-8], RCX
CMP QWORD PTR [R12 + 104], 0
JEQ L0
BREAK 15
MOV EDI, 4
MOV RDX, RBX
MOV R11D, 536871360
Llamar r11
MOV RBX, [RBP-16]
MOV RSP, RBP
CVX
POP RBP
JUBILADO
DESCANSO 16
… y mucho menos su forma binaria …
1001001 10001011 1001100 100100
1100000 1001000 10001001 1001101
11111000 1001001 10000011 1111100
100100 1101000 0 1110100
10 11001100 1111 10111111
100 0 0 0
1001000 10001011 11010011 1001010
10111011 11000000 1 0
100000 1000001 10111011 11000000
1 0 100000 1000001
11111111 11010011 1001000 10001011
1011101 11110000 1001000 10001011
11100101 11111000 1011101 11000011
11001100 10000
No hace falta decir (?), Sin un lenguaje de programación encima del código de la máquina, escribir software complejo sería casi imposible.