¿Qué es escribir código? ¿Cómo y dónde se aprende?
Podemos afirmar que en nuestra vida diaria realizamos una serie de acciones fijas y casi de forma inconsciente que pueden escribirse de forma esquemática. Supongamos, por ejemplo, el hecho de empezar nuestro día por la mañana:
-
Me despierto a la hora fijada por la alarma.
-
Procedo a asearme.
-
Me visto.
-
Desayuno.
-
Emprendo mi camino hacia mi trabajo o mi lugar de estudios.
Podríamos decir que esto es algo “rutinario”, o que “obedece a nuestra rutina”, es decir, una serie de acciones fijas que sabemos que vamos a realizar día tras día durante un periodo de tiempo determinado.
Este ejemplo anterior coincide de pleno con lo que en informática llamamos programa, algoritmo o código: una secuencia de instrucciones que determinan el comportamiento de la entidad que ejecuta el programa.
¿Por qué y para qué programar?
La programación tiene la capacidad de permitir expresar cualquier cómputo al alcance de la imaginación del programador, desde resolver un problema sencillo como un cálculo de interés bancario, hasta aplicaciones de gran complejidad como una red social. Se puede afirmar que cada programa cubre una necesidad, pero también representa una idea y pone en marcha una funcionalidad.
Un ejemplo es WhatsApp. Ligado en sus inicios a la expansión de los teléfonos inteligentes, la idea era tener una forma fiable de comunicación por texto sin las limitaciones del SMS y su coste asociado, con la ventaja de funcionar a través de internet. Por eso, al margen de la tarifa de datos, se aseguraba la comunicación desde cualquier conexión WiFi.
Pero la programación no solo se centra en el desarrollo de software. También nos permite abordar un conjunto de microtareas que podemos realizar con órdenes sencillas, como por ejemplo la búsqueda de patrones de texto comunes en documentos de texto. Es lo que en informática se conoce como scripting: la creación de microprogramas que realizan tareas efímeras.
¿Cómo aprender a hacerlo?
La escritura de código y la generación de programas se hacen a través de un lenguaje de programación. Los lenguajes de programación son el instrumento que usamos como programadores a la hora de trabajar con ordenadores, para que estos entiendan qué queremos hacer.
Estos lenguajes, al igual que nuestro lenguaje natural, están formados por una serie de reglas sintácticas y semánticas, así como una serie de “herramientas comunes” a todos ellos. En informática se les llama fundamentos de programación, y abarcan conceptos tales como:
-
Elementos básicos de un programa (instrucciones, tipos de datos simples, operadores, variables).
-
Entrada y salida (lectura y escritura de variables, entrada por teclado, ficheros).
-
Control de flujo.
-
Estructuras condicionales (if, if else, switch) y expresiones booleanas.
-
Bucles o iteradores (while, until, for).
-
Control de errores y excepciones.
A partir de 6º de primaria, un estudiante ya es capaz de entender y manejar plenamente todos los conceptos relativos a los fundamentos de programación.
Leer más: ¿A qué edad hay que aprender a programar?
Programadores autodidactas
No es necesario tener ningún conocimiento previo para iniciarse en programación. De hecho, algunos de los programadores más relevantes de las últimas décadas en sus inicios se formaron de forma autodidacta, llegando a realizar innovaciones muy relevantes por el camino.
Algunas figuras ilustres en este sentido son:
-
Linus Torvalds, creador del kernel Linux, base del sistema operativo GNU/Linux.
-
John Carmack, cofundador de id Software, responsable de numerosas innovaciones en el campo de los gráficos 3D y visión por computador.
-
Margaret Hamilton, responsable del desarrollo del sistema de navegación del Apolo 11.
-
Radia Perlman, inventora del protocolo Spanning Tree, fundamental en el enrutamiento de redes.
Leer más: ¿Los programadores creativos valen por dos?
Entonces, ¿por dónde empezamos?
Sin lugar a dudas, la mejor forma de empezar –y es la que se suele emplear en las vías académicas– es aprender con un lenguaje donde se emplea el paradigma imperativo, basado en órdenes o instrucciones y que además sea explícito y restrictivo en toda su sintaxis.
En ese sentido, los lenguajes C y C++ (el segundo como extensión del primero) son perfectos para el programador novato. En su forma más simple, escribir código para estos lenguajes no sólo es legible sino que expresa exactamente lo que el programador quiere que se haga.
Algunos ejemplos de esta forma de programación usando C++:
-
“Escribe por pantalla la cadena de texto ‘Hola’ con un salto de linea” => cout <<“Hola” << endl;
-
“Define una variable para números naturales” => unsigned natural;
-
“Guarda en la variable ‘natural’ el valor 2” => natural = 2;
-
“Suma 2 al contenido de la variable ‘natural’” => natural = natural + 2;
Como se puede ver, no hay lugar para la ambigüedad o la libre interpretación: el programador especifica lo que quiere tal y como lo piensa.
Además, es recomendable hacer uso de un Entorno Integrado de Desarrollo (conocido como IDE), que provee al programador de las herramientas necesarias para escribir código.
Nuestra recomendación para empezar con C++ pasaría por el IDE Codeblocks, para el cual además necesitaremos instalar el compilador MinGW. En su web encontraremos las distintas versiones según nuestro sistema operativo.
Posibilidades académicas y no académicas
Actualmente las vías académicas están bien definidas, y es preferible ir por la vía tecnológica. Un estudiante que hoy se encuentre en la educación secundaria dispone de estos itinerarios:
Educación preuniversitaria
-
Realización de la FP de Grado Medio Técnico en Sistemas Microinformáticos y Redes como requisito previo al nivel de las FP de Grado Superior
-
Realización de una FP de Grado Superior de Técnico Superior en Desarrollo de Aplicaciones Multiplataforma o de Técnico Superior en Desarrollo de Aplicaciones Web.
-
Por la vía del Bachillerato, con la opción de Bachillerato de Ciencias y Tecnología como requisito previo a las FP de Grado Superior y educación universitaria.
Educación universitaria
Los itinerarios más adecuados son los grados en ingeniería informática ofertados en cualquiera de sus variantes, pero los más interesantes son sin duda el Grado en Ingeniería Informática y el Grado en Ingeniería del Software.
Cualquiera de estos grados incluye las competencias necesarias para el diseño y desarrollo de software en todas sus posibles variantes. No obstante, el primero capacita de manera más general dentro del mundo de la informática, mientras que el segundo se centra en el ámbito estricto del desarrollo de software.
Fuera de las vías académicas también tenemos muchos recursos a nuestro alcance. Plataformas online como ToolboX.Academy están pensadas para una primera introducción a este mundo de la programación y el pensamiento computacional.
En inglés encontramos comunidades como StackOverflow (también en castellano) y diversas comunidades en Reddit (r/learnprogramming, r/cpp_questions, específica para C++). Las búsquedas genéricas en Google son también el día a día del programador de cualquier nivel, no solo del principiante.
Por supuesto, existe una ingente cantidad de tutoriales bien estructurados (por ejemplo, en la web de referencia de C++) con los que nos podemos iniciar con los lenguajes C/C++, así como libros de iniciación de referencia en las asignaturas universitarias de grado.
La programación, hoy más que nunca, está al alcance de todos. Sin embargo, la alfabetización computacional sólo tendrá lugar cuando se incluya oficiamente en el currículo de la educación Primaria y Secundaria. Es, por tanto, una responsabilidad política.
Alberto Zamora Jiménez trabaja para DIGITOMICA S.L, spin-off académica de la Universidad de Málaga para el desarrollo y sostenibilidad de ToolboX.Academy.
Francisco Vico es catedrático en el área de Ciencias de la computación e Inteligencia artificial de la Universidad de Málaga
José Alberto Álvarez Manoja trabaja para DIGITOMICA S.L, spin-off académica de la Universidad de Málaga para el desarrollo y sostenibilidad de ToolboX.Academy.
Raimon Segura Morera trabaja para DIGITOMICA S.L, spin-off académica de la Universidad de Málaga para el desarrollo y sostenibilidad de ToolboX.