Bueno, la duda que me queda es, ¿como el código binario, los impulsos electricos, etc... pasan a crear sofware?
Los 0 y 1 son una forma de interpretar la apertura o el cierre de lo que sea, como puede ser voltajes, sentencias lógicas, etc.
En el caso de las computadoras, cuando están en la memoria de acceso aleatorio (RAM) son interpretados por el micro como instrucciones, es decir cuando entra por el puerto la instrucción, el micro está diseñado para ser interpretado de una forma en particular. Por ejemplo, para que lo entiendas más fácilmente: imagínate que tienes un tablero lleno de palancas y cada que jalas una va a hacer una cosa distinta como prender la luz, abrir una puerta, cerrar la ventana, etc. El orden en que tú jalas esas palancas podemos decir que es el “lenguaje máquina” y el tablero de palancas es el "micro".
El CPU (el nombre técnico que le daremos al microprocesador) está conectado a muchos componentes. Por ejemplo, una instrucción en particular que sale por las “patitas” enlazadas al monitor, va a imprimir un punto en la pantalla.
Lo que se conoce como Software (compilado) es un conjunto estructurado de componentes lógicos que agrupados en un todo generan una tarea en específica. Aunque se puede crear un software con lenguaje máquina, es muy difícil hacerlo en el mundo real ya que el micro tiene muchísimas direcciones y va a variar de modelo en modelo. Para facilitar la tarea se crearon los lenguajes de bajo nivel (ensamblador), que ayudan al programador a utilizar las sentencias lógicas básicas que entiende el micro sin la necesidad de utilizar tablas ni leer los manuales del microprocesador. Este lenguaje varía de procesador en procesador pero hace más fácil el trabajo. Para aumentar la compatibilidad se crearon los famosos lenguajes de alto nivel (C++, Java, C#, Objective-C, etc), que no es más que la estandarización de las funciones para que cualquier máquina pueda entenderlos. De ahí se desprenden los conceptos de lenguaje interpretado y compilado que ya te explicaron.
Algo rudimentaria mi explicación pero creo que sí se entiende. Básicamente para que lo comprendas bien tienes que conocer los principios básicos de la electrónica (circuitos y microcontroladores) y arquitectura de computadoras antes que lenguajes de programación.