El pensamiento computacional

¿Es posible definir una forma específica de pensar sobre las computadoras? El pensamiento computacional se presenta aquí como un conjunto de actitudes y conocimientos universalmente aplicables, que todos nos beneficiaríamos de aprender y dominar.

El pensamiento computacional se ha desarrollado a partir del análisis del poder y las limitaciones de los procesos computacionales, ya sean realizados por humanos o por máquinas. De hecho, a través de los métodos y modelos de la informática, nos atrevemos a abordar problemas y diseñar sistemas que ningún ser humano sería capaz de manejar por sí mismo. El pensamiento computacional nos confronta con el enigma de la inteligencia que una máquina podría tener. ¿Qué puede hacer un humano mejor que una máquina, y viceversa? Desde un punto de vista más teórico, busca responder a la pregunta: ¿qué es calculable? Hoy en día, sólo podemos dar respuestas parciales a tales preguntas.

El pensamiento computacional es fundamental

El pensamiento computacional es un conocimiento fundamental para todos nosotros, no sólo para los informáticos. Como la lectura, la escritura o la aritmética, deberíamos pasárselo a nuestros hijos. Si bien la imprenta ha permitido difundir las tres primeras habilidades (lectura-escritura-contabilidad), las tecnologías digitales transmitirán este pensamiento informático. Pero la situación es peculiar porque es precisamente este pensamiento informático el que se ha utilizado para desarrollar estas tecnologías.

La adopción del pensamiento informático conduce a la resolución de problemas, al diseño de sistemas y a la comprensión del comportamiento humano de forma diferente, basándose en los conceptos fundamentales de la disciplina informática e incluyendo una gama de herramientas intelectuales que reflejan la amplitud de la ciencia de la informática.

Concretamente, ante un problema determinado, surgen las siguientes preguntas: ¿qué tan difícil es? y ¿cuál es la mejor manera de resolverlo? La informática, al estar basada en sólidos fundamentos teóricos, nos proporciona herramientas para responder a estas preguntas. Para determinar la dificultad de un problema, debemos entonces tener en cuenta la potencia de la máquina, del dispositivo informático que se utilizará para encontrar la solución. Por lo tanto, dependerá del conjunto de instrucciones que la máquina pueda ejecutar, sus recursos disponibles y su entorno operativo.

Para resolver un problema de manera efectiva, hay que preguntarse cuál es el margen de error aceptable. Por ejemplo, si una solución aproximada es suficiente (sin necesidad de encontrar una solución exacta), si es ventajoso utilizar el azar para explorar las posibilidades, o si es permisible obtener falsos positivos o falsos negativos (encontrando las soluciones equivocadas u omitiendo ciertas soluciones). El pensamiento informático es el proceso de reformular un problema que nos parece difícil en un problema que sabemos cómo resolver. Podemos, por ejemplo, reducir primero el problema a un sub-problema más simple, o por el contrario englobarlo en un problema más general, o reducirlo a un problema equivalente pero formulado de forma diferente, o intentar simular soluciones antes de aplicarlas.

El pensamiento computacional significa usar el razonamiento recursivo. También significa utilizar las posibilidades que ofrece la computación paralela.

El pensamiento computacional significa tratar de nombrar correctamente los objetos que manipulamos, clasificarlos según sus tipos, definir sus propiedades antes de tratar de manipularlos. Significa sopesar los pros y los contras antes de, por ejemplo, dar varios nombres diferentes al mismo objeto.

Pensar en términos de computadoras significa manipular conjuntamente información estática, como datos, e información dinámica, como acciones e instrucciones. Significa juzgar un método o programa no sólo por su exactitud y eficacia, sino también por su elegancia.

El pensamiento computacional utiliza la abstracción y la descomposición cuando se trata de una tarea altamente compleja o el diseño de un sistema altamente complejo. Significa ser capaz de hacer una separación juiciosa entre lo que es más o menos difícil de resolver, de elegir una representación apropiada para un problema determinado, o de modelar los aspectos pertinentes de un problema para hacerlo asequible. Es presentar propiedades estables para describir de manera sintética el comportamiento de un sistema.

El pensamiento computacional implica creer que es seguro usar, modificar e influenciar un sistema enorme y complejo, incluso si no se entienden todos los detalles.

El pensamiento computacional implica anticipar el uso en la etapa de diseño: planear una estructura modular adecuada para muchos usuarios, planear el almacenamiento de información en una memoria cache para hacer más rápido el acceso futuro…

El pensamiento informático significa prever el peor acontecimiento, basándose en él para proporcionar medios de prevención, protección y restauración, y proponiendo la redundancia, el control de daños y la corrección de errores como soluciones.

Pensar en términos informáticos significa encontrar para cada situación un equivalente en el campo de la informática: un cuello de botella se ve como un interbloqueo, cuando dos procesos que se esperan mutuamente bloquean el sistema, un contrato se ve como una interfaz, que permite que dos entidades interactúen… En la organización de sus nombramientos, significa aprender a evitar situaciones competitivas, como cuando dos procesos tratan de acceder al mismo recurso simultáneamente.

El pensamiento computacional significa usar el razonamiento heurístico para encontrar soluciones. Tener en cuenta en todo momento la incertidumbre. Incansablemente buscando, explorando, inventariando, clasificando, para encontrar las mejores estrategias o para actualizar los contra-ejemplos. También significa hacer compromisos: entre el tiempo y el espacio, entre la potencia de los ordenadores y la capacidad de almacenamiento.

El pensamiento computacional significa mucho más que la programación, nos da la oportunidad de usar varios niveles de abstracción.

El pensamiento computacional es útil en el día a día

Veamos algunos ejemplos de la vida cotidiana. Cuando su hija va a la escuela, pone los libros que necesita en su mochila, esto es «almacenamiento de información predictiva». Cuando su hijo pierde los guantes y usted le sugiere que vuelva sobre sus pasos, esto es «retroceder».

Backtracking

Traducido es algo así como «retroceso» (un término poco usado), «backtracking» es un esquema para encontrar soluciones a problemas combinatorios. En su forma más simple, consiste en explorar, de manera limitada pero sin embargo sistemática, el espacio de las posibles soluciones.

¿Su principio? Construir la solución de manera progresiva y «retroceder» cada vez que parezca que la solución parcial obtenida no conducirá a una solución completa del problema. «Invertir los pasos» significa aquí cuestionar la última elección hecha durante la elaboración de la solución parcial, hacer otra elección entre la lista de las que todavía son posibles en esta fase de resolución de problemas, y luego reanudar la construcción de la solución. Si otra elección es inviable, porque la lista de posibles opciones en esta fase se ha agotado, hay que retroceder aún más, para cuestionar la elección anterior, y así sucesivamente.

El esquema de retroceso puede aplicarse cuando la solución de un problema se elabora de manera progresiva, construyendo soluciones parciales de tamaño creciente.

El ejemplo clásico utilizado para mostrar cómo funciona un esquema de retroceso es el problema de las «ocho damas». Se obtiene una solución parcial de tamaño n cuando se han colocado n damas en el tablero de ajedrez sin estar en control mutuo. Cuando n llega a 8, el problema está resuelto.

¿En qué momento debes dejar de alquilar los esquís y decidirte a comprarlos? La «optimización predictiva» permite determinar esto. Cuando calculas qué línea elegir en la caja del supermercado, es «modelado de rendimiento del sistema multiservidor».

¿Por qué tu teléfono sigue funcionando durante un corte de energía? Es porque se autoalimenta con los propios cables de teléfono: ¡un buen ejemplo de tolerancia a las fallas y redundancia de diseño! ¿Cómo se las arreglan los tests de Turing para discriminar entre los ordenadores humanos? En particular, ¿por qué el análisis de la escritura en las formas CAPTCHA es una excelente manera de identificar a un humano? Es porque estas pruebas explotan la dificultad que tienen los agentes informáticos para resolver problemas que requieren habilidades cognitivas.

El pensamiento computacional se convertirá en parte de la vida cotidiana, cuando los términos «algoritmo» y «precondición» pasen a formar parte del vocabulario cotidiano, cuando el no determinismo y la recogida de migas tengan el significado común entre los informáticos. Los niños dibujarán los árboles con las raíces en la parte superior y las ramas en la parte inferior, como en los algoritmos.

Ya estamos siendo testigos de la influencia del pensamiento informático en otras disciplinas científicas. Por ejemplo, los métodos de aprendizaje de las máquinas han transformado las estadísticas. De hecho, el aprendizaje estadístico se está utilizando para resolver problemas de un orden de magnitud inimaginable hace sólo unos pocos años. De hecho, los departamentos de estadística de todo tipo de organizaciones contratan a informáticos y acaban fusionándose con institutos de informática teórica.

El interés de los científicos informáticos en la biología proviene de su confianza en los beneficios que los biólogos pueden obtener del pensamiento informático. La contribución de la informática a la biología va mucho más allá de la capacidad de buscar patrones en cantidades muy grandes de datos. La esperanza es que las estructuras de datos y los algoritmos – nuestras abstracciones y métodos computacionales – puedan representar la estructura de las proteínas de una manera que permita elucidar su función. De esta manera, la biología computacional está cambiando la forma en que los biólogos ven su disciplina.

De forma similar, la teoría de juegos computacionales está cambiando la forma en que los economistas abordan su disciplina, la simulación a nanoescala está cambiando la forma de pensar de los químicos, y la modelización numérica de los fenómenos físicos está cambiando la forma de pensar de los físicos.

Pronto, esta forma de pensar se convertirá en parte de los antecedentes no sólo de los científicos, sino de todos. El pensamiento informático estará en la misma etapa mañana que la computación ubicua lo está hoy. La computación ubicua que era el sueño de ayer se convierte en la realidad de hoy, así como el pensamiento informático será la realidad de mañana.

Lo que las computadoras realmente son y lo que no son…

La informática es el estudio del cálculo, es decir, de lo que se puede calcular mecánicamente. Por lo tanto, le da al pensamiento informático las siguientes características:

Conceptualizar no es programar

La programación es una forma de implementar el pensamiento informático, pero no se limita a ello. Pensar como un informático va mucho más allá de la capacidad de programar, requiere pensar en diferentes niveles de abstracción.

La mecánica no significa rutina

El pensamiento informático es un conocimiento fundamental que debe ser compartido por todos para vivir en nuestras sociedades modernas. Es, en efecto, un pensamiento, no sólo un cálculo mecánico en el sentido de la rutina. Paradójicamente, el pensamiento se convertirá en rutina el día en que la informática supere el gran reto que supone la inteligencia artificial y produzca ordenadores capaces de pensar como los humanos. Asumiendo que ese día llegue…

Los humanos para pensar, las computadoras para calcular

El pensamiento informático es una forma mecánica para que los humanos resuelvan problemas. Las computadoras son aburridas y repetitivas. Para los humanos las ideas inteligentes e imaginativas. Depende de nosotros los humanos, gracias a las computadoras, usar nuestra inteligencia para enfrentar los problemas que hubiéramos dejado atrás antes de la era de la computación y construir sistemas que estén limitados sólo por nuestra imaginación.

Un complemento al pensamiento matemático y tecnológico

La informática se basa en las matemáticas, ya que, como todas las ciencias, se basa formalmente en las matemáticas. La ciencia de la computación también se basa en el pensamiento tecnológico, ya que construimos sistemas que interactúan con el mundo real.

Un mundo de restricciones y libertad

Las limitaciones de las calculadoras nos obligan a pensar en términos de cálculo, es decir, informáticamente, y no sólo matemáticamente. Pero la libertad de construir un mundo virtual permite a nuestros ingenieros construir sistemas que van mucho más allá del mundo físico.

Nuevas ideas, no sólo avatares

Nuestra vida diaria no sólo estará poblada por los avatares de software y hardware que producimos. Los conceptos informáticos que utilizamos para afrontar y resolver problemas, organizar nuestra vida cotidiana, comunicarnos e interactuar con los demás, nos llevarán a cambiar nuestra forma de pensar.

¡Vamos a enseñar a nuestros hijos a pensar con el ordenador!

El pensamiento computacional será nuestra realidad cuando sea realmente compartido por todos, diariamente, integrado en la aventura humana para que todos juntos seamos los constructores de la sociedad digital del mañana. Mucha gente todavía equipara la computación con la programación, con un estrecho espectro de oportunidades de trabajo. Mucha gente piensa que la investigación básica en informática ha terminado y que sólo queda la ingeniería.

Sin embargo, el pensamiento computacional es una perspectiva que puede guiar a los educadores, investigadores y profesionales. En particular, debemos dar prioridad a llegar a los estudiantes de secundaria, así como a sus profesores y padres, para enviarles el doble mensaje de que la informática es un mundo de problemas lúdicos, intelectualmente atractivos y científicamente estimulantes para explorar, con los únicos límites de nuestra curiosidad y creatividad, no sin antes señalar que después de estudiar informática se puede hacer lo que se quiera, pasar a diferentes ramas profesionales.