En el articulo anterior aprendimos la importancia de mantenerse motivado y ser determinante ante los obstáculos con lo que te encontrarás si quieres dedicarte a la programación.

En este articulo empezaremos a adentrarnos en los conceptos básicos de la programación. Así que empecemos contestando una pregunta básica. ¿Qué es la programación?

Para contestar correctamente esa pregunta, debemos entender principalmente qué es un programa.

Según wikipedia, la programación se puede definir de la siguiente manera: La programación es un proceso que se utiliza para idear y ordenar las acciones que se realizarán en el marco de un proyecto; […] a la preparación de máquinas para que cumplan con una cierta tarea en un momento determinado; a la elaboración de programas para la resolución de problemas mediante ordenadores, y a la preparación de los datos necesarios para obtener una solución de un problema.

Uff! Demasiado técnico y poco preciso. Básicamente un programa es una serie de instrucciones muy específicas, comúnmente llamadas algoritmo, escritas en un lenguaje específico que una computadora, o algún entorno de una computadora, puede entender. La programación es el arte de hacer programas.

Pero para que esto te quede un poco más claro, podemos comparar a un algoritmo, más concretamente un programa, a un recetario de cocina.

Puedo atreverme y decir que todos, en algún momento, hemos visto un recetario de cocina. Si no sabemos hacer una paella, un pavo al horno, una tarta u otro plato, lo mas seguro es que tengamos que buscar en internet la receta para saber cómo hacerlo. Una vez encontramos la receta, ¿qué es lo que contiene? Una serie de pasos que debes seguir para hacer el plato que quieres. Básicamente eso mismo es un algoritmo donde tú eres el escritor y tu computadora es el cocinero que ejecutará las instrucciones que escribas.

Imagina la siguiente ilustración:

Imagina que eres un cocinero profesional, un chef. Sin embargo hoy no vas a ir a trabajar, sino que te quedarás en casa para hacer una comida a tu familia que te va a visitar en la tarde. Son las 11:45 de la mañana y tienes planificado que tus familiares lleguen a las 1:30 pm para almorzar, por lo que tienes tiempo suficiente para cocinar con calma. Sin embargo, justo a las 11:46 escuchas que suena el timbre de tu casa. Resulta que es un primo tuyo (Que para efectos de este ejemplo se llama Compu). Tu primo viene con la noticia de que tus familiares están por llegar, por lo que tienes solo ¡¡¡30 minutos para poder cocinar el almuerzo!!! Hay que cocinar ya y rápido.

Afortunadamente, ahora cuentas con un ayudante, tu primo. Tu primo Compu tiene tanto una gran virtud, como un gran defecto. Su defecto es que no sabe cocinar nada, ni siquiera hervir agua. Tampoco sabe usar un cuchillo, ni siquiera sabe términos como Batir, Mezclar, Asar, Cocer, Calentar u otros.

Por lo que te tocará explicar previamente qué es todo eso, porque si no, cuando le digas que "tiene que batir hasta que la mezcla esté espesa” ó que"tiene que calentar la estufa” no podrá entenderlo. Aun así, no encuentras ningún problema con eso, porque sabes que tu primo tiene una gran virtud. Tu primo es asombrosamente rápido. Puede hacer una tarea, que a ti te puede tomar varios minutos, en menos de un solo segundo. Sabes que si le dictas las instrucciones puedes retrasarlo, porque él irá a la velocidad de tu dictado.

Así que, si le dejas el algoritmo escrito, él podrá leer y realizar todos los pasos en muy poco tiempo. Tu trabajo ahora es explicar en una hoja de papel todas las cosas que debe hacer. Desde abrir el frigorífico, limpiar el pollo, tomar el mechero, encender la estufa, etc. También vas a un paso adelante y haces notas marginales donde explicas otros procedimientos como, por ejemplo, ¿Qué es batir?, ¿Qué es mezclar? Así, cuando le indiques en varias ocasiones que tiene que mezclar y batir tal o cual cosa, tu primo Compu podrá ver las notas y entender todos los procedimientos con claridad.

Así que, a las 11:56 de la mañana, ya tienes lista tu hoja con el algoritmo que debe seguir tu primo Compu. Le entregas la hoja y, de manera asombrosa, a las 11:59 ya tiene toda la comida lista. (Obviamente en la realidad, la cocina no va a calentar ni cocer la comida al ritmo de tu primo, pero a fines de este ejemplo, imagina que sí).

Quizás como ya te habrás imaginado, tu primo Compu representa a la computadora.

Tu computadora, tu smartphone, no poseen ningún tipo de inteligencia (Hasta la inteligencia artificial es sólo ARTIFICIAL). Sin embargo tu computadora, a pesar de ser muy estúpida, es increíblemente rápida. Muy rápida.

Los programas son instrucciones que ellas pueden entender y ejecutar rápidamente.

Con este ejemplo ya puedes entender algo. Un algoritmo debe salir de tu mente. Tú debes saber que pasos escribir, y en qué orden, para que pueda funcionar. De otra manera, no funcionará por arte de magia. De ahí un dicho muy famoso en el mundo de la programación Si lo puedes imaginar, lo puedes programar”. Y he aquí lo que programar realmente es. Programar es buscar la solución a un problema y fraccionar la solución en una serie de pequeños y sencillos pasos en orden consecutivo. A medida que vayas practicando más, y encontrando soluciones a problemas con la programación, más fácil será para tí visualizar los pasos que deben seguir tus programas para solucionar un problema.

Siempre ten en cuenta que hay muchas maneras de cocinar un pollo. Con esto quiero decir que no existe una única solución para resolver un problema, por lo que, en muchas ocasiones, vas a encontrar distintos programas que siguen otros pasos para solucionar el mismo problema que buscas solucionar. Esas distintas soluciones (Algoritmos) te permitirán seguir nutriendo tu ingenio y comprensión de la programación.

¿Ya entendemos mejor qué es un programar? ¿Pudieras explicar a otra persona qué es un algoritmo? ¡Excelente!

¿Pero cómo es que la computadora, siendo un aparato tan falto de inteligencia, puede entender lo que le escribes?

Pues, es por un gran amigo que está dentro de tu computadora, que se llama Procesador o CPU.

CPU significa Central Processing Unit; es la unidad central de procesamiento de la computadora (Una computadora puede ser tu Smartphone, tu PS4, tu Smart TV, etc).

Esta parte de tu computadora es el cerebro de tu primo Compu en el ejemplo anterior. Su propósito es interpretar las instrucciones de un programa informático. El código que el CPU entiende debe estar escrito en un lenguaje llamado código máquina. Ese lenguaje está escrito en código binario, es decir solo está conformado por instrucciones basadas en ceros y unos (01001000 01101111 01101100 01100001 00100000 01101101 01110101 01101110 01100100 01101111).

Técnicamente sí es posible escribir un programa en código máquina, sin embargo, como ya te podrás imaginar, es excesivamente tedioso, confuso, difícil de mantener, complicado de trabajar en equipo, y un sin fin etc. Por esa razón existen otros lenguajes, que están a un nivel por encima del código máquina donde su objetivo es convertir un lenguaje más humanamente entendible en código máquina. Estos otros lenguajes se le conocen como lenguajes de alto nivel y lo cierto es que ellos mismos son programas que “traducen”, (Por decirlo de una manera), un código, que normalmente está en inglés, en el código binario que entiende el procesador.

Durante la ejecución de un programa intervienen también otras partes de una computadora, como por ejemplo la memoria RAM, el disco duro, etc. La forma en que estas partes interactúan con un programa la podremos entender con más detalle a medida que nos adentramos en los siguientes  artículos.

Como quizás ya estés deduciendo, los lenguajes que usaremos en nuestras prácticas serán lenguajes de alto nivel. Sólo algunos como Javascript, Python y JAVA. Obviamente no podemos aventurarnos a usar todos los lenguajes de alto nivel porque, sencillamente, son demasiados. Pero te puedo garantizar que lo que aprendas usando solo esos 3, será más que suficiente para entender muy bien la programación.

Así que sin mas espera, ya en el próximo articulo escribiremos nuestras primeras líneas de código.

Pero antes de irte, intenta responder las siguientes preguntas: ¿Qué es la programación? ¿Aún te sigue sonando muy complicado? ¿Puedes explicar a otra persona qué es un lenguaje de alto nivel?