¿Se sabe cómo surge el software del hardware?

No lo hace. El software es creado por programadores. No es una especie de planta que crece fuera del hardware.

Para explicarlo, el hardware (en computadoras programables, es decir, cualquier cosa desde una PC / Mac, desde computadoras portátiles / macbooks / notebooks, hasta teléfonos inteligentes y tabletas, etc.) está diseñado con la intención de proporcionar un conjunto muy pequeño de acciones que puede realizar. Estas acciones se desencadenan a través de señales eléctricas enviadas a él.

En pocas palabras, digamos que la acción del hardware es encender un conjunto de luces. Luego, esas entradas eléctricas se verifican para ver cuáles están encendidas y cuáles están apagadas. A partir de esto, el hardware traduce ese “código” en “ah, la luz número 1 debe estar encendida”, o el otro código “la luz 2 y 5 debe estar encendida”, etc. etc. etc. Cada dispositivo electrónico inventado utiliza esto principio. La única diferencia es el número exacto de tales señales de entrada, lo que “significan” las diversas combinaciones, cómo obtiene esas señales y qué salidas genera cada una de ellas.

El software es esas señales. Es decir, los códigos de instrucciones para el hardware. Alguien tenía que hacer esas señales: encender / apagar interruptores, colocar una tarjeta con agujeros que simulan interruptores que se encienden / apagan, que diferentes puntos en un medio magnético se polaricen de manera diferente (nuevamente simulando interruptores que se encienden o apagan). Estas personas se llaman programadores, escriben código para que el dispositivo informático reciba instrucciones sobre qué hacer.

Al comienzo de mi CE, siempre me pregunté cómo un programa de software controlaba el hardware en la PC. En realidad es bastante simple y extremadamente complicado al mismo tiempo. Supongo que a partir de lo que declaró el Sr. Barnard es que solo hay una serie de acciones que cada dispositivo puede realizar (conjunto de instrucciones) que se almacena en la memoria del dispositivo que no se puede tocar y que los diseñadores de hardware pusieron allí. El compilador en cada dispositivo decodifica el lenguaje que el programador ha escrito (C / C ++, Java, etc.) en estas instrucciones (código de bytes). Luego se llevan de la memoria como señales eléctricas al microprocesador donde se decodifica la instrucción (señales eléctricas) en el hardware para realizar ciertos procesos, estos procesos se almacenan en la memoria, se obtienen de la memoria, establecen ciertos valores en la máquina, obtienen entrada , etc. Desde allí envía estas señales en un bus y regresa a su pantalla en nanosegundos.

Este tipo de aprendizaje ocurre en un grado de EE (ingeniero eléctrico) o CE (ingeniero informático). Todavía es mi parte favorita sobre aprender cómo funcionan las computadoras.