Máquinas programables. El concepto de programa
Los móviles, tabletas, portátiles y ordenadores o computadores personales que usamos en nuestro día a día, y a los cuales nos podemos referir con carácter general como máquinas, no dejan de ser un conjunto de circuitos integrados con multitud de chips conectados entre sí, que nos permiten hacer una gran variedad de tareas en nuestras actividades cotidianas. En el ámbito laboral y escolar son un instrumento de trabajo y en el personal son un instrumento de relación, desarrollo personal y de entretenimiento. Sin duda alguna, estas máquinas o dispositivos informáticos son, hoy en día, unas herramientas fundamentales en nuestra vida diaria.
Podemos reflexionar sobre un ejercicio muy sencillo, y pensar en la cantidad de dispositivos electrónicos que integran algún tipo de dispositivo de procesamiento. Las televisiones, los equipos de cine en casa, las videoconsolas, los asistentes personales como Alexa, los dispensadores automáticos de comida para mascotas, los frigoríficos, las lavadoras, las calderas o los equipos de aire acondicionado son algunos ejemplos de elementos que nos rodean y que están basados en tecnología, materializada por una gran variedad de pequeñas máquinas.

La placa base es uno de los componentes fundamentales de cualquier ordenador.
La generalidad de uso de los dispositivos informáticos o máquinas, necesario por otra parte si se considera la diversidad de problemas o áreas en los cuales son aplicables, implica un trabajo adicional cuando se quiere que resuelvan problemas particulares. Este trabajo consiste en decirle a la máquina o dispositivo qué es lo que debe hacer. En otras palabras, nos tenemos que comunicar con ellas, para ordenarles qué es lo que deben hacer. Desafortunadamente, y a pesar de los recientes avances en técnicas de procesamiento de lenguaje natural, todavía no hablamos el mismo idioma, especialmente en lo que se refiere a indicarle a una máquina el problema que debe resolver. En este punto, no hablamos de indicarle a un asistente virtual que nos reserve entradas para el estreno de una película en nuestro cine favorito. Nos referimos a transmitir las instrucciones que una máquina debe ejecutar para realizar una determinada tarea.
Así, programar se puede entender como el acto de convertir la funcionalidad que posee una aplicación en instrucciones u órdenes para la máquina que, eventualmente, las ejecutará. Por medio de la programación ordenamos a la máquina cómo se debe de comportar.
Una vez está claro qué es programar una máquina, es conveniente definir el concepto de programa, entendido como el conjunto de instrucciones y órdenes que contienen la funcionalidad deseada para la aplicación que se está desarrollando. Cada aplicación que ejecutamos en nuestra máquina es un programa con instrucciones que debe ejecutar. Instrucciones que serán ejecutadas de manera secuencial, con cambios en el flujo de ejecución causados por las propias instrucciones o por eventos que se produzcan de manera externa, como por ejemplo la interacción del usuario a través del teclado o el ratón.

Fragmento de código fuente.
Recuerda que la máquina u ordenador está compuesta por componentes físicos. Algunos de los más relevantes son la placa base, que es el dispositivo que conecta a todos los elementos, procesador o CPU, responsable de ejecutar las instrucciones de los programas, memoria RAM, que permite almacenar información para proporcionar un rápido acceso a la misma, disco duro, que ofrece un mecanismo de almacenamiento de información más permanente, tarjeta gráfica, que optimiza el tratamiento de imágenes y vídeo, o la tarjeta de sonido, responsable de gestionar los elementos sonoros. Sin embargo, el programa es un conjunto de instrucciones que alguien habrá escrito y almacenado en un archivo o fichero. La pregunta que nos podemos hacer en este punto es ¿cómo podemos comunicarnos o dar instrucciones a ese conjunto de elementos físicos electrónicos que conforman la máquina? Resulta evidente la necesidad de establecer un nexo entre esos dos mundos: i) el mundo físico, representado por los componentes de la máquina, y ii) el mundo lógico, representado por los programas.
Finalmente, resulta interesante que conozcas que la programación se engloba en lo que denominamos formalmente construcción de software, definido como un proceso complejo y sofisticado que va más allá de lo que comúnmente conocemos como programación. En este sentido, la construcción de software se puede dividir en varias etapas generales: i) definición del problema, para definir claramente, y de forma precisa, el problema que se quiere resolver, ii) especificación o definición de requisitos, que permite generar una descripción detallada acerca de o que el sistema software debe hacer, iii) planificación del desarrollo, que tiene como objetivo detallar la planificación del resto de fases de la construcción de software, iv) diseño, que persigue organizar cómo se estructurará el código del programa, v) programación o codificación, entendida como la escritura de un conjunto de sentencias que persiguen la generación de un resultado, vi) pruebas, que pone el foco en comprobar que el programa creado funciona como debe y, finalmente, vi) mantenimiento, fase relacionada con la actualización del código.