No estoy seguro acerca de la etimología exacta de estos términos (por qué “duro” y “blando”, específicamente), pero así es como generalmente pienso sobre los términos:
El hardware, como el hardware de la computadora, se refiere a los dispositivos físicos: CPU, RAM, placa base, tarjeta de video, controladores, buses, puertos, etc. Estas son las cosas que se pueden programar, controlar, etc. Son duras, tangibles, y de alguna manera no cambian: obviamente se mueven y son capaces de hacer varias cosas, pero lo que hacen depende completamente y de manera determinista de la información que reciben.
Piense en el hardware de la computadora como si fuera el motor de un automóvil. El motor es un gran bloque de metal con partes móviles en su interior que genera energía para permitir que el automóvil se mueva.
- ¿Cuánto cobrará un desarrollador de aplicaciones para hacer una aplicación como Zomato?
- Xcode: ¿Hay algún sitio donde pueda comprar aplicaciones (aplicaciones prefabricadas)?
- ¿Cómo es Tableau?
- ¿Qué lenguaje de programación se usa para hacer pequeños programas de utilidad para Windows?
- ¿Cuáles son los usos prácticos del software de ábaco?
El software es un concepto más abstracto. Es literalmente el conjunto de instrucciones que están diseñadas para funcionar con el hardware para que la computadora pueda realizar ciertas funciones. Como tal, es fluido, como la gasolina y el aceite que fluye a través del motor y, tal vez de manera más apropiada, como la entrada que el conductor le da al motor para que acelere y disminuya en ciertos momentos.
Entonces, el término “software” básicamente significa los datos, la información, las instrucciones a las que los dispositivos físicos (hardware) están diseñados para responder. El hardware, una vez construido, es bastante estático en lo que puede hacer: el hardware moderno de la computadora es extremadamente complejo y puede realizar muchas funciones, pero no puede realizar ninguna función para la que no fue diseñado originalmente. No es flexible. El software es: siempre puede escribir un programa diferente, optimizar un programa para que se ejecute más rápido, hacer que haga cosas más grandes, etc., dentro de las limitaciones de lo que puede hacer el hardware, por supuesto.
Espero que esto no sea demasiado confuso, estoy seguro de que no he pensado necesariamente en la mejor manera de explicar esto.
EDITAR: Se me ocurrió después de publicar esto que había visto una analogía mucho mejor para el hardware y el software de la computadora hace mucho tiempo, en un cómic de Disney de todos los lugares (donde Huey, Dewey y Louie explicaban conceptos básicos de la computadora a su tío Scrooge). Una de las analogías que usaron fue un proyector de películas:
El proyector en sí (la máquina con la bombilla, el obturador y los dos carretes) es el hardware. Su función es alimentar la película a través de sí misma, hacer brillar una luz brillante a través de la película y hacer que la luz filtrada pase a través de una lente para proyectar una imagen en la pantalla. Eso es todo lo que hace. La película real, con la secuencia de imágenes, es el software. Esa misma película se puede reproducir varias veces, pero también se pueden reproducir otras películas en el mismo formato. El hardware esencialmente “sabe” cómo reproducir una película de ese tipo, pero para que cumpla su función, necesita la película: el software.
Esto encaja con el tema de que el hardware es la maquinaria dura y tangible que tiene un conjunto limitado de funciones, y que el software es la información más abstracta que la maquinaria consume o interactúa para cumplir su propósito. La película, en este caso, es intercambiable (e intercambiable), y mientras se reproduce a través del proyector, es esencialmente un programa, al igual que las instrucciones almacenadas en su disco duro se introducen en la CPU.