Cuando hablamos de programas y aplicaciones de ordenadores, en realidad estamos hablando de software. Una definición algo brusca pero instructiva para los no iniciados en este terreno es que el hardware es lo que puedes patear y el software es lo que puedes maldecir. Se dice esto porque el hardware son las máquinas y dispositivos físicos que podemos tocar, mientras que el software es una producción inmaterial que no tiene ni forma, ni cuerpo. De todas formas, mi recomendación personal es que cuando el ordenador falle, respiremos ondo y tratemos de relajarnos o lograremos que un fallo del software se acabe convirtiendo en un fallo del hardware.
Cosas tales como el sistema operativo del ordenador, el procesador de textos, el navegador, la aplicación de contabilidad, etc. son todos ejemplos de software. Cada vez más electrodomésticos como televisores, reproductores de DVD o cámaras fotográficas digitales, también suelen contener un pequeño programa de software que nos permite interactuar con ellos a través de menús, configurarlos, ver películas almacenadas con distintos codecs, etc. En este tipo de aparatos, el software suele estar almacenado directamente en chips (en lugar de en discos duros como en los ordenadores), en cuyo caso se le suele denominar firmware. Al igual que en un ordenador podemos instalar software y actualizarlo, estos aparatos también suelen tener previsto algún método para actualizar su firmware.
Código fuente y código binario
Las personas que diseñan y crean los programas para que realicen alguna tarea o resuelvan algún problema, escriben en unos lenguajes especiales llamados lenguajes de programación. Existen muchos lenguajes de programación distintos (COBOL, Visual Basic, PHP, Java, etc.) y la mayoría de ellos utilizan algunas palabras en inglés (“if”, “repeat”, etc.) para ayudar a los programadores a expresar lo que quieren que la máquina haga. Estos programas que los humanos somos capaces de entender se denominan código fuente y en realidad no son más que una especie de algoritmos matemáticos que expresan las ideas que se les ocurren a los programadores (“ventana”, “puntero de ratón”, “botón”, “menú”, “texto”, “enlace”, etc.). Estas ideas se entrelazan unas con otras una y otra vez en distintos algoritmos/programas.
Lo que ocurre es que los ordenadores y el resto de aparatos electrónicos (móviles, GPS, cajeros automáticos, etc.) están compuestos por chips y elementos eléctricos similares, por lo que no entienden de ideas más o menos abstractas sino simplemente de pulsos eléctricos (1 significa hay electricidad y 0 significa no hay electricidad). Por ello, los programas originales escritos por los programadores se deben traducir al lenguaje natural de las máquinas, es decir, a unos y ceros, a código binario.
Para ello se utilizan unos programas de software especiales llamados compiladores que son capaces de transformar automáticamente el código fuente escrito por el programador al código binario que entende la máquina de destino. Por tanto, el código binario es una serie muy larga de unos y ceros que un humano no entiende pero que la máquina es capaz de ejecutar sin problemas. Los programas que se comercializan (Windows, Word, WinZIP, Internet Explorer, Panda Antivirus, etc.) sólo vienen con los binarios, mientras que todos los códigos fuente los guardan las empresas correspondientes como parte de su propiedad intelectual. Un programador desde su casa no puede arreglar ningún error, ni hacer ningún tipo de modificación al programa que usa, puesto que resulta prácticamente imposible para él comprender el código binario y deducir exactamente lo que hace (y cuanto más grande es el programa, más complicada resulta la tarea).
El símil de la receta de cocina
Una forma muy intuitiva de entender estos conceptos, es hacer un símil con lo que ocurre al cocinar. Partiendo de una receta de cocina que alguien nos ha explicado o que hemos leído, procedemos a preparar los ingredientes necesarios y seguir los pasos indicados. Al final del proceso, obtenemos el producto ya terminado y listo para comer. Al igual que con el código binario, viendo el producto ya cocinado, resulta prácticamente imposible deducir todos los ingredientes y las cantidades utilizadas, así como los pasos exactos de la receta original.
Si cogemos una receta de cocina (obtenida a través de algún conocido o a través de Internet) y probamos distintas variaciones, podemos elaborar nuevos productos que se ajustan mejor a nuestros gustos y necesidades. De hecho, esta es la forma en la que la cocina ha evolucionado a lo largo de la historia y lo sigue haciendo en la actualidad.
La diferencia es que normalmente las recetas se comparten, mientras que el código fuente de los programas no. En función de la disponibilidad del código fuente (y otros criterios) se pueden diferenciar varios tipos de software.
Para obtener más información puedes consultar Wikipedia:
Comentarios recientes