Las respuestas anteriores son todas correctas, pero muy técnicas. Intentaré simplificarlas.
Pido disculpas a cualquier técnico que haya por ahí, ya que utilizaré alguna terminología incorrecta a costa de mantener las cosas simples.
Los conceptos básicos:
- El hardware se diseña utilizando litografía y obleas de silicio
- Los circuitos se diseñan utilizando puertas lógicas y álgebra booleana
- Los programas se crean utilizando comandos lógicos
- El software conecta el hardware con los procesos entre bastidores
- Pulsar un botón hace que las cosas sucedan mágicamente
Diseño de chips de ordenador:
Los chips de ordenador se construyen construyendo circuitos en una oblea de silicio.
Los componentes utilizados para construir los circuitos no son piezas individuales que se crean y se colocan físicamente en la oblea, sino que son equivalentes de tamaño atómico a esos componentes individuales.
Se crean rociando materiales conductores y aislantes en un área específica, y luego se graban selectivamente para construir una estructura de capas 3D que representa el circuito deseado.
El proceso se llama litografía.
Si alguna vez ha visto un retroproyector, en el que se dibuja una lección de clase en una hoja de tamaño A4 de película de plástico transparente, y se utiliza una luz debajo para proyectarla en una pared, la litografía es un proceso similar, pero a la inversa.
Primero se diseña el circuito, y luego se utiliza una lente para enfocar un negativo del diseño del circuito en un punto diminuto. La zona enfocada se recubre con un material sensible a la luz, que reacciona a las zonas claras y oscuras del diseño del circuito. A continuación, se utiliza ácido para grabar las zonas no deseadas del circuito, dejando las pistas del circuito deseado.
Diseño de puertas lógicas:
Las puertas lógicas están un paso por encima del nivel de hardware del circuito.
Son módulos de circuito creados utilizando únicamente transistores.
Un transistor es un interruptor electrónico para controlar el flujo de corriente eléctrica.
Se comporta un poco como una carretera con un semáforo.
Cuando el semáforo está en verde, el tráfico fluye. Cuando el semáforo está en rojo, el tráfico se detiene.
Los transistores se utilizan en varias disposiciones para diseñar circuitos, denominados puertas lógicas.
Las puertas lógicas se utilizan para crear circuitos modulares que se pueden mezclar y combinar para construir circuitos a un nivel superior.
Cada tipo de puerta lógica tiene un símbolo específico que se utiliza para describirla.
Hay muchos tipos de puertas lógicas, como AND, NAND, OR, NOR, XOR, etc.
El propósito de utilizar puertas lógicas es facilitar la construcción de un circuito,
utilizando comandos lógicos, en lugar de tener que preocuparse de cómo se crearía cada componente a nivel de hardware.
Hay mucho que hacer a este nivel, pero para obtener más información sobre cómo diseñar circuitos utilizando puertas lógicas, lea un poco sobre la lógica booleana.
La lógica booleana es un proceso en el que se utiliza el álgebra matemática básica para crear una expresión matemática que describa todos los posibles resultados de un proceso.
Una vez utilizado esto, puede reducir el número de puertas lógicas necesarias para construir con precisión su circuito.
El software informático se escribe de forma lógica, como en:
Si ocurre esto, haz aquello.
En programación, oirá hablar de las sentencias If y Or,
así como de las sentencias While.
Todos los procesos de alto nivel se descomponen en sus formas más simples, y se escriben de forma lógica, para describir con precisión un proceso predecible.
La idea de programar en un nivel muy alto, es trazar todas las posibilidades involucradas en hacer lo que está tratando de hacer, por lo que todas las bases están cubiertas. Si se omite alguna posibilidad, su programa podría bloquearse debido a un error inesperado.
La programación de bajo nivel se realiza justo por encima del nivel de hardware, utilizando
«código máquina», que es muy preciso, pero puede ser muy desalentador, ya que implica la programación de los registros de hardware con hexadecimal.
Este tipo de programación creaba pequeños programas con un código muy eficiente.
El programa de alto nivel utiliza comandos que se escriben de una manera más amigable para el ser humano, como por ejemplo:
«dibujar círculo radio x»
La programación de alto nivel incluye muchos tipos diferentes de lenguajes de programación, ya que algunos lenguajes son más fáciles de usar para algunos tipos de programas, mientras que otros se adaptan a diferentes tipos.
Una vez que se crea un programa, y se comprueba si hay errores, se «compila».
Este es un proceso de conversión de los comandos de alto nivel a código máquina.
Este proceso de conversión hace que los lenguajes de alto nivel sean menos eficientes que escribirlos en código máquina para empezar, pero también mucho más rápidos y fáciles de crear.
Los programas más grandes se crean utilizando equipos de programadores, que trazan todos los procesos lógicos implicados en un aspecto particular de un proceso, y luego cada parte se incorpora como un módulo dentro del programa principal.
Como cada programador codificará sus procesos a su manera, a veces se pueden desarrollar fallos y caídas del programa entre versiones, debido a conflictos entre módulos.
Los procesos de depuración que se utilizan hoy en día son mejores que en el pasado, pero debido a la complejidad de los programas más grandes, puede llevar algún tiempo eliminar cualquier posible error que se produzca.
Además de todo esto, cuando usted lanza su programa, y la gente lo ejecuta en miles de combinaciones diferentes de hardware, resulta que algunas personas experimentan problemas, y otras personas no tienen ninguno.
Sistema operativo
El sistema operativo es un tipo de programa que interconecta el hardware del ordenador con otro software. es decir, es un software que permite que los programas se ejecuten.
La complejidad del código utilizado para crear Microsoft Windows es enorme en sí misma, y luego, además, la mayoría de la gente instala 10 o más programas en sus ordenadores, cada uno creado de diferentes maneras por decenas o cientos de personas.
Los «controladores» son programas de software que interconectan el hardware del ordenador y los periféricos con el software.
Cada vez que se instala una actualización de software, se corre el riesgo de arreglar un problema, mientras se crea otro nuevo en otro lugar. Se dedican muchas pruebas y tiempo a eliminar todos los errores posibles antes de lanzar el software.
Conclusión
Así que, la próxima vez que esté navegando por la web y su ordenador muestre un mensaje de error, en lugar de pensar «¿por qué no puede funcionar correctamente?»
debería apreciar ahora el nivel de complejidad que implica incluso sentarse sin hacer nada en el escritorio de Windows sin ningún otro programa abierto.