Software libre, ¿qué es? y ¿cuál es su importancia?

Iniciemos con el ejemplo clásico de la receta de cocina para entender qué es el software libre: imaginemos que nuestra abuela nos hace un pastel que queda riquísimo. Luego de comerlo, le pedimos que nos comparta su receta y ella lo hace con mucho gusto. Días después, para una reunión de amigos, hacemos el pastel, pero le agregamos un ingrediente nuevo a la receta y compartimos el resultado. A nuestros amigos también les gusta mucho y nos piden que compartamos la receta, lo cual hacemos. A medida que preparan el pastel, cada uno de ellos le agrega o quita materiales a la receta, creando una propia.

Ahora, imaginemos que al momento de comprar nuestra lavadora (pastel), el fabricante nos hubiese entregado el código fuente que hace que esa funcione (receta), y nosotros lo modifiquemos para que, al momento de terminar el proceso de lavado, nos envíe una notificación a nuestros celulares (ingredientes de más).

Esto que acabamos de leer es la filosofía sobre la que se fundamenta el movimiento del Software Libre que, si bien el término podría no ser familiar para muchas personas, convivimos con software de este tipo todo el tiempo. Veamos algunos ejemplos:

  • Moodle: la herramienta que usamos en Ude@ para nuestros cursos virtuales.
  • Android: uno de los sistemas operativos móviles más populares en la actualidad.
  • Firefox: uno de los navegadores más importantes y populares.
  • Qt framework: Tal vez sea poco conocido, sin embargo, las aplicaciones que usa este como base de su funcionamiento son muy populares, entre ellas tenemos: la suite de Adobe, Skype, Teamviewer, Mathematica, Autodesk Maya, Telegram, Virtualbox, etc.

Como podemos ver, el software libre nos rodea, pero ¿cuál es su importancia en la educación? Antes de responder esta pregunta, revisemos cuándo se considera que un software es libre y cuándo no.

Existe una idea popularizada que indica que el software libre es gratuito, lo cual no es cierto. Tal vez la confusión se debe a que el nombre proviene del término en inglés Free Software, cuya primera palabra la podemos traducir como ‘libre’ o ‘gratis’. Sin embargo, en este contexto, la traducción correcta es la primera acepción, esto significa que el software libre puede ser comercializado. Las siguientes características son las que determinan que un programa sea considerado dentro de esta catalogación:

  1. Poder usar el programa con cualquier propósito: retomando el primer ejemplo, poder hacer nuestro pastel siempre que queramos y para quienes queramos.
  2. Tener la posibilidad de estudiar cómo funciona el programa y poder modificarlo: conocer la receta y poder agregar o quitar ingredientes.
  3. Poder distribuir copias: compartir la receta de la abuela a nuestros amigos.
  4. Poder hacer modificaciones y compartirlas: cuando agregamos o quitamos ingredientes y lo compartimos con nuestros amigos.

El software libre nos da la posibilidad de obtener, ya sea gratis o pagando, una herramienta que nos permite hacer una tarea específica: editar una imagen, escribir un texto, comprimir un archivo, etc. Pero también nos da la posibilidad de estudiar cómo está construido, corregir errores, agregar características, entre otras opciones. Esto supone, por un lado, un gran potencial de avance tecnológico al no estar supeditados a lo que una empresa desarrolle, sino que muchas personas en el mundo contribuyen con sus conocimientos a la mejora o corrección de los programas. Por otro lado, existe un gran aporte a la democratización del conocimiento, pues el software deja de ser una “caja negra” y el conocimiento detrás de su construcción es de acceso libre.

Para quienes no son desarrolladores, también existen ventajas en el uso de estos softwares. Entre ellas resalta que la mayoría de estos programas son gratis o de menor costo que su competencia privada. Hay otras no tan visibles y es que estos proyectos, al abrir la posibilidad de que cualquiera pueda aportar características o corregir fallas, definen tipos de softwares muy robustos. Como ejemplo tenemos a Firefox, el navegador con mejores características del mercado. Si bien Google Chrome —el segundo mejor navegador— es privado, está basado en el navegador Chromium que es libre. Como estos, podemos encontrar otros ejemplos en campos como ingenierías, comunicaciones, arte, lenguas, etc.

Queda claro que muchos de nosotros usamos en nuestro día a día software libre, ya sea para nuestro trabajo o nuestro estudio. Los invitamos a conocer un poco más sobre estos y reconocer las posibilidades de aporte que tenemos a la mano. Muchas veces no es necesario ser programador, basta con enviar un correo cuando algo va mal.

Sigifredo Escobar
Desarrollador Front-end – Ude@ Educación Virtual

Los videojuegos como herramienta para aprender programación

Software, variables, codificación, palabras que para muchos representan una verdadera tortura. En la Universidad de Antioquia hay una gran cantidad de carreras, además de las ingenierías, que incluyen dentro de sus planes de estudio uno o varios cursos de algoritmos y programación. Hablar con la máquina no es una tarea fácil, y mucho menos cuando las herramientas que se usan para esto son complejas, cargadas de texto, con menús llenos de opciones y largos mensajes de error. Parece que todo el conocimiento de la humanidad se centrara en la punta de un alfiler y esta se clavara en nuestro cerebro, provocándonos gran dolor y estrés.

Si bien la tecnología ha avanzado significativamente, pasando de codificar en placas perforadas a hacerlo en un computador personal, en las universidades la enseñanza no ha tenido la misma evolución. Los docentes enseñan programación de la misma forma en que ellos aprendieron, lo que cambia es el lenguaje o el paradigma; sin embargo, todos debemos ver los mismos temas (condicionales, ciclos, arreglos, matrices, etc.), e incluso, muchas veces, los mismos ejercicios.

Existen personas, organizaciones, y empresas que se han cuestionado por el uso de las nuevas tecnologías en el marco de la enseñanza, y es aquí donde nace la alternativa del uso de los videojuegos como herramienta de acercamiento a la programación. No obstante, esta estrategia no es del todo nueva, pues en el 2011, Valve Corporation empezaba a explorar la enseñanza de la física, las matemáticas, y la química usando su motor Source, a través del proyecto “Learn with Portals”.

A continuación, te presentamos dos ejemplos de videojuegos hechos para aprender sobre programación.

  1. Rabbids coding!

Nota: para empezar, es necesario aclarar que este videojuego no pretende enseñarnos un lenguaje concreto de programación (Java, C++, Python), sino acercarnos a la lógica que está detrás de estos y que es común en todos ellos. 

Creado por la empresa Ubisoft, en octubre del 2019, se trata de un personaje, en la mayoría de los casos un conejo, que debe resolver un problema de lógica para avanzar al siguiente nivel. En principio, los problemas son tan sencillos como hacer que el conejo avance o dé la vuelta. Sin embargo, poco a poco se van complejizando hasta llegar al punto donde es necesario sentarse a pensar en la solución.

Esta dinámica de avanzar y agregar complejidad, nos proporciona la experiencia de aprender la lógica de la codificación en una dimensión diferente. También nos enseña estructuras complejas de entender, como los ciclos, y hace especial énfasis en la utilización de estos para mejorar nuestros algoritmos.

Cuando iniciamos un nivel, en la parte izquierda de la pantalla tenemos la zona donde iremos desarrollando nuestro algoritmo. A diferencia de las interfaces tradicionales de texto, en este aplicativo las instrucciones se desarrollan uniendo cajas de forma secuencial. Cada caja representa una instrucción, y el objetivo es crear un conjunto de estas que den solución al problema. Las directrices son variadas, pues podemos tener, por ejemplo, “avanzar hacia adelante”, “recoger objetos”, “voltear a la izquierda”, etc.

La puntuación está basada en estrellas, donde tres representan una solución óptima; y una significa que el problema tuvo solución, pero esta pudo ser mejor. Lo anterior se traduce en un problema común en la programación y es que, si bien no existe algoritmo perfecto, hay soluciones más eficaces que otras, bien sea porque su tiempo de ejecución es más corto o porque tiene menos pasos.

2. Code combat

Este videojuego es un proyecto opensource, con un equipo base de 31 personas y más de 450 contribuyentes, y busca enseñarnos el lenguaje JavaScript y Python, dos de los más usados e importantes en la actualidad. A diferencia del anterior, este funciona a través del navegador. Hasta el momento de esta publicación, cuenta con nueve mundos, los cuales tienen entre 12 y 109 niveles cada uno y que abren la posibilidad de aprender desde sintaxis y variables, hasta técnicas avanzadas de interacción con la máquina.

Cuenta con un personaje, Hero, que a lo largo del juego —y de forma gradual— nos va introduciendo conceptos importantes como son cadenas de texto, métodos, parámetros, ciclos, entre otros. 

Al iniciar un nivel, nos aparece una ventana que indica los temas que vamos a aprender en este.

La metodología es similar a la de Rabbids coding!, pues en la parte derecha de la pantalla tenemos un editor de texto en el que escribiremos nuestro algoritmo. Una vez lo completemos, presionamos “Run” para ejecutarlo y visualizar, en la parte izquierda de la pantalla, a nuestro personaje realizar lo que le indicamos.

Por último, existe una sección en cada escenario donde podemos ver la teoría tras los algoritmos que estamos escribiendo. Lo cual es importante, dado que amplía y da fundamentos teóricos a las acciones que estamos tomando.

A manera de conclusión, es importante reconocer que vivimos en una era digital y, por tanto, debemos perder el miedo a explorar nuevos horizontes. Asimismo, en el ámbito educativo, más áreas del saber están integrando la programación en sus pensum, ya que herramientas como estas podrían ayudar a los estudiantes a aprender sobre algoritmos con mayor facilidad.

Sigifredo Escobar
Desarrollador Front-end de Ude@