Fundamentos de la programación
?Que es programar?
Respuesta corta; es indicarle a la computadora lo que tiene que hacer.
Detrás de todos los programas informáticos que conocemos y usamos de manera cotidiana para facilitarnos diversas actividades de nuestro día a día, existe un proceso de creación y desarrollo al cual denominamos programación.
Por medio de la misma se establecen los pasos a seguir para la creación del código fuente de los diversos programas informáticos, quienes van a indicarle al hardware que tiene que hacer y como realizarlo.
La programación se guía por un conjunto de órdenes, normas, instrucciones y expresiones que tienden a ser semejantes a una lengua natural acotada, de ahí deriva la denominación de lenguaje de programación. Y así como existen diferentes idiomas, en programación también existen diversos lenguajes.
¿Por qué hay tantos lenguajes?
Originalmente sólo existía un lenguaje de programación por cada modelo de computadora que había (que no eran muchos). Era el lenguaje “máquina”, representado en binario, y se programaba usando cables que se conectaban en varias configuraciones, o después usando tarjetas perforadas que se leían por medio de un aparato que las interpretaba y pasaba el programa a la memoria para que lo ejecutara la computadora. Pronto los programadores se dieron cuenta de que si querían hacer programas más complejos era necesario empezar a simplificar el proceso de programación. El primer paso fue la creación del lenguaje ensamblador, que consiste en una serie de mnemónicos que representan instrucciones del procesador, así como los operandos sobre los que operan. La traducción de ensamblador a lenguaje máquina era relativamente trivial, y se podía hacer a mano, pero pronto se buscó la manera de que la misma computadora lo hiciera. Más adelante surgieron lenguajes de programación que permitían al programador utilizar subrutinas o funciones que simplificaban todavía más el proceso. Eso aceleró enormemente el desarrollo, y permitió crear sistemas mucho más complejos y útiles que antes. Sin embargo se requirió de un programa intermedio llamado compilador, que verifica y traduce el código “fuente” a código “máquina” que la computadora puede ejecutar. Pero a fin de cuentas, una computadora sólo entiende código máquina, y cualquier programa en algún otro lenguaje debe ser traducido o interpretado a código máquina para poderlo ejecutar. Durante todo este proceso los lenguajes de programación evolucionaron y fueron especializándose en diferentes campos, dependiendo del tipo de problema que se quisiera resolver. En nuestros tiempos, los lenguajes se han orientado y especializado todavía más, para enfocarse por ejemplo en los procesos distribuidos, programación de servidores (back end) y de scripts para navegadores de internet (front end), comunicaciones, cómputo paralelo, seguridad, acceso concurrente, bases de datos grandes, medianas y pequeñas, y un largo etcétera.
La lógica de programación
Lo que te puede generar más confusión al inicio de este camino es escoger el lenguaje de programación indicado. Sin embargo, déjame decirte que el lenguaje en sí no importa mucho al inicio, puesto que la lógica es la misma para todos, por esta razón no te preocupes, comenzar aprendiendo la lógica de programación es el mejor camino.
La lógica es la base de todo el conocimiento en programación, ya que es posible aprender a escribir un código para que la computadora interprete correctamente. Es decir que aprendes a comunicarte con la máquina a partir de un lenguaje.
Entonces, ¿Qué es exactamente la lógica de programación?
Lógica es la técnica utilizada para desarrollar instrucciones en una secuencia para lograr determinado objetivo.
Es la organización y planificación de instrucciones en un algoritmo, con el objetivo de tornar visible la implementación de un programa o software.
La lógica de la programación es la organización coherente de las instrucciones del programa para que su objetivo sea alcanzado.
El gran desafío del programador es montar la estructura del programa para que este sea ejecutado por la computadora. Y es necesario partir del principio de que la computadora no piensa de la misma forma que el ser humano, y no es inteligente para saber qué es lo que tiene que hacer, ni comprender mensajes subjetivos.
Por eso organizar la información de forma clara y en el orden adecuado es primordial para que la acción sea ejecutada correctamente.
Algoritmos
El algoritmo es la propia secuencia de instrucciones para la ejecución de una tarea. De una forma más simple, el algoritmo es una receta o ruta que indica todos los procedimientos necesarios para realizar algo o resolver un problema. La información en un algoritmo no puede ser redundante o subjetiva. Tiene que ser clara y detallada para que la computadora interprete correctamente. Ejemplificando mejor vamos a hacer un algoritmo para freír papas de una forma bien simple y didáctica. ¡Vamos!
- Tomar las papas
- lavarlas.
- pelarlas
- Cortar las papas en tiras
- Encender el fuego de la cocina
- Colocar el sartén con aceite para calentar
- Esperar hasta que el aceite esté caliente
- Colocar las papas para freir
- Aguardar 10 minutos hasta que las papas estén fritas
- Retirar las papas y servir
¡Este es un algoritmo! Es importante que estés pendiente de tener una secuencia correcta y bien definida de las acciones, porque como en el ejemplo, no podríamos cortar las papas después de freírlas. Hay diversas formas de representar un algoritmo, como formas gráficas, flujogramas, formas textuales o en pseudocódigo. La diferencia entre el algoritmo que creamos y el que es utilizado en la programación, es el lenguaje para que la computadora entienda. Es importante resaltar que el flujo puede seguir diferentes caminos y convertirse en algo más complejo con cada información que se agrega. Por ejemplo, podríamos sumarle la condición de que si el aceite estuviera frío es necesario esperar, y si no (si estuviera caliente) podría colocar las papas para freír. Pero de esta forma entramos en otros factores y variables que iremos viendo paso a paso. Tengamos en cuenta también que para comprender instrucciones subjetivas, es importante tener algunas reglas o indicaciones para entender la tarea “freír papas” y ejecutarla correctamente. De igual manera en el caso de las computadoras; necesitamos saber algunos conceptos para mejorar nuestros algoritmos, facilitando la comprensión y ejecución de los mismos.