En última instancia, todos los programas y todos los datos son solo secuencias de 1s y 0s (dígitos binarios o bits). Las secuencias de bits son las únicas cosas que el hardware de la computadora puede entender. Los programadores de hoy no suelen escribir código en este nivel de instrucción de máquina binaria.
En los primeros días de las computadoras, o cuando un nuevo sistema no tenía absolutamente ninguna herramienta de desarrollo de software disponible, los programadores tuvieron que lidiar directamente con 1s y 0s (dígitos binarios o bits) al ingresar programas en las computadoras. Los programadores tendrían que buscar (o memorizar) las secuencias de bits asociadas con cada tipo de instrucción de máquina, y luego ingresarlas en la computadora en la ubicación de memoria apropiada usando interruptores, botones, cables de conexión, etc.
Esta tarea fue muy lenta, tediosa y propensa a errores. Los programadores adoptaron rápidamente el uso de la notación octal (base 8), que le permite expresar tres bits en un dígito octal (0 a 7). Los programadores pronto adoptaron el uso de la notación hexadecimal (base 16), que le permite expresar cuatro bits en un dígito hexadecimal (0 a 9 y A a F). Pero octal y hexadecimal (o hexadecimal) eran en realidad solo anotaciones abreviadas para secuencias de bits.
- ¿Por qué un árbol se llama estructura de datos?
- ¿Hay alguna manera de girar a la izquierda / derecha una matriz binaria en menos de O (n) tiempo?
- ¿Por qué alguien usa el hashing cuando el peor tiempo de búsqueda del hashing es O (n) y eso para bbst es logn?
- Cómo ordenar en orden ascendente en el programa C
- ¿Necesito tener el conocimiento de las estructuras de datos y el algoritmo, antes de comenzar a practicar en spoj, codchef, topcoder, etc.? Sé un poco de C ++.
El siguiente paso es la programación en lenguaje ensamblador, que utiliza nombres breves similares al inglés (o mnemotécnicos) para las instrucciones de la máquina (p. Ej., LD para cargar, MOV para mover, AGREGAR para agregar aritmética, etc.). Este enfoque permitió a los programadores manejar las instrucciones de la máquina utilizando un nombre simbólico, en lugar de tener que buscar (o memorizar) secuencias de bits, dígitos octales o dígitos hexadecimales. Los programas en lenguaje ensamblador se traducen en instrucciones en lenguaje máquina por un programa conocido como ensamblador .
Los lenguajes de alto nivel reducen aún más la “carga de detalles” al proporcionar al programador formas más fáciles de expresar lo que debe hacerse, sin tener que lidiar con las instrucciones individuales de la máquina. Una declaración de lenguaje de alto nivel podría traducirse a varias instrucciones de lenguaje de máquina. Los lenguajes de alto nivel también tienen la ventaja de permitir que el código del programa sea “portátil”, ya que no está necesariamente vinculado a una arquitectura de CPU, a diferencia del lenguaje ensamblador y el lenguaje de máquina. Los programas en este nivel se traducen en instrucciones de máquina (o en un idioma intermedio que luego se traduce) por un programa conocido como compilador .
Los programadores profesionales, incluso si hacen todo su trabajo utilizando lenguajes de alto nivel, también deben comprender el lenguaje binario, hexadecimal y al menos un lenguaje ensamblador. Este conocimiento fundamental les da una mejor comprensión y apreciación de lo que realmente sucede cuando su programa se está ejecutando, y les ayuda a ser más eficientes en la depuración.
Puede encontrar más información sobre las diferencias entre lenguaje de máquina (1s y 0s), lenguaje ensamblador (mnemotecnia) e idiomas de alto nivel aquí.