Pid 00276817

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 32

Pensamiento

computacional para
aprender a programar
PID_00276817

Maria Jesús Marco Galindo


Julià Minguillón Alfonso
© FUOC • PID_00276817 Pensamiento computacional para aprender a programar

Maria Jesús Marco Galindo Julià Minguillón Alfonso

Licenciada en Informática por la Doctor ingeniero en Informática por


Universitat Politècnica de Catalun- la Universitat Autònoma de Barcelo-
ya (UPC) y doctora en Educación na (UAB). Profesor agregado de los
y TIC por la Universitat Oberta de Estudios de Informática, Multimedia
Catalunya (UOC). Profesora de pro- y Telecomunicación de la Universi-
gramación y de competencias trans- tat Oberta de Catalunya (UOC) en
versales en los Estudios de Informá- el ámbito de la ciencia de datos. Sus
tica, Multimedia y Telecomunica- intereses docentes incluyen la pro-
ción de la UOC. Investigadora en los gramación, la minería de datos y la
ámbitos de la algorítmica, el pensa- visualización, entre otros. En investi-
miento computacional y la enseñan- gación, se dedica a analizar el com-
za-aprendizaje de la programación portamiento de los usuarios en en-
y de las competencias transversales, tornos virtuales de aprendizaje y re-
especialmente de la competencia des sociales, como por ejemplo Wi-
comunicativa escrita. kipedia, con el objetivo de mejorar
los procesos de apoyo al aprendizaje
y la interacción con el entorno.

Primera edición: septiembre 2020


© de esta edición, Fundació Universitat Oberta de Catalunya (FUOC)
Av. Tibidabo, 39-43, 08035 Barcelona
Autoría: Maria Jesús Marco Galindo, Julià Minguillón Alfonso
Producción: FUOC
Todos los derechos reservados

Ninguna parte de esta publicación, incluido el diseño general y la cubierta, puede ser copiada,
reproducida, almacenada o transmitida de ninguna forma, ni por ningún medio, sea este eléctrico,
mecánico, óptico, grabación, fotocopia, o cualquier otro, sin la previa autorización escrita
del titular de los derechos.
© FUOC • PID_00276817 Pensamiento computacional para aprender a programar

Índice

1. Introducción........................................................................................ 5

2. El pensamiento computacional...................................................... 14
2.1. Lecturas sobre pensamiento computacional ............................... 16

3. Los lenguajes de programación...................................................... 19


3.1. ¿Cómo funciona un ordenador? ................................................. 21
3.2. ¿Cómo se crea un programa? ..................................................... 24
3.3. Lecturas sobre lenguajes de programación ................................. 25

4. El lenguaje Processing...................................................................... 27
4.1. Lecturas sobre Processing ............................................................ 29

Resumen....................................................................................................... 31
© FUOC • PID_00276817 5 Pensamiento computacional para aprender a programar

1. Introducción

Hoy en día los ordenadores están presentes en todos los ámbitos de nuestra
vida cotidiana. Desde los microordenadores que gestionan el funcionamien-
to de un ascensor hasta los superordenadores utilizados para diseñar medica-
mentos que luchan contra nuevos virus y bacterias; los encontramos en casi
todas partes de manera más o menos visible. Excepto si lees este módulo en
formato papel, hay un ordenador por el medio que te permite acceder a este
recurso docente, sea un teléfono del tipo inteligente, un ordenador portátil o
un dispositivo del tipo tableta. De hecho, como estudiante de la UOC tendrás
que usar el ordenador continuamente para acceder al Campus Virtual, para
participar en los espacios de comunicación, para preparar los trabajos y acti-
vidades que hay que entregar, etc.

La evolución de la tecnología ha sido clave en esta incorporación de los orde-


nadores en nuestro día a día. Los ordenadores cada vez son más pequeños,
más potentes, consumen menos energía y, sobre todo, son más económicos.
Varios hechos corroboran este ascenso imparable. Por ejemplo, la ley de Moore
nos dice que cada dos años, aproximadamente, el número de transistores en
un microchip se multiplica por dos. Los microchips o microprocesadores son
los elementos que hacen que un ordenador ejecute las instrucciones que pe-
dimos, así que más transistores quiere decir microprocesadores más potentes
y, por lo tanto, ordenadores más potentes. En los años setenta del siglo XX, los
primeros microprocesadores estaban compuestos de pocos miles de transisto-
res, casi visibles a ojo, tal como muestra la figura 1. Actualmente, los últimos
microprocesadores fabricados en 2019 tienen casi 40.000 millones de transis-
tores; podríamos decir que esto es un número diez millones de veces superior
en solo cincuenta años.
© FUOC • PID_00276817 6 Pensamiento computacional para aprender a programar

Figura 1. Ejemplo de microprocesador de ocho bits de la década de los setenta

Fuente: <https://images.computerhistory.org/siliconengine/1971-2-1.jpg>

Antes de la aparición de los microchips, los pocos ordenadores existentes eran


sistemas electromecánicos o bien con válvulas de vacío, cosa que los hacía
unas máquinas enormes, lentas y sobre todo grandes consumidoras de ener-
gía. Por ejemplo, el ordenador ENIAC, creado en 1945, estaba compuesto de
casi 18.000 válvulas de vacío y consumía más de 150 kilovatios. El Cray CDC
6600, el primer supercomputador de la historia, creado en 1964, consumía 30
kilovatios y podía ejecutar dos millones de instrucciones por segundos. En la
actualidad, un ordenador de sobremesa típico consume entre 150 y 200 vatios
y tiene una capacidad de cálculo muy superior.

Disponer de microprocesadores más potentes ha hecho que los ordenadores


también sean más potentes y sobre todo versátiles. La potencia de un ordena-
dor se determina por diferentes parámetros, como por ejemplo la velocidad
a la cual se efectúan cálculos, el número de microprocesadores que pueden
trabajar en paralelo, la capacidad de memoria para hacer cálculos y la capaci-
dad de almacenamiento. Además, pensamos en un ordenador como una caja
negra que es capaz de ejecutar programas, pero de hecho cualquier ordenador
actual es una combinación de diferentes microprocesadores que gestionan los
diferentes aspectos que intervienen, como por ejemplo los dispositivos de en-
trada y salida, es decir, el teclado, el ratón, la pantalla y los sistemas de alma-
cenamiento y las redes de comunicación. Para poder comparar ordenadores,
hay dos parámetros básicos: la capacidad de cómputo (cuántos cálculos pue-
de hacer por unidad de tiempo) y la capacidad de almacenamiento (medida
normalmente en bytes). De hecho, la palabra computador viene de la palabra
© FUOC • PID_00276817 7 Pensamiento computacional para aprender a programar

latina computare que significa calcular y se empezó a usar hacia los años 40
del siglo pasado para designar a las trabajadoras (típicamente mujeres) que
se dedicaban a pesadas tareas de transcripción, conversión y cálculo de datos
en la NASA (figura 2), como muy bien explica la interesante película «Figuras
ocultas» de 2016.

Figura 2. Primeras computadoras humanas trabajando en la NASA High Speed Flight Station
(verano de 1949)

Fuente: https://www.dfrc.nasa.gov/Gallery/Photo/Places/HTML/E49-54.html

Como ejemplo de la evolución del hardware, en 1977 la NASA lanzó al espa-


cio las dos sondas Voyager (figura 3), dos artefactos que tienen varios récords,
como por ejemplo la distancia recorrida, dado que están a más de 21.000 mi-
llones de kilómetros del Sol. La capacidad de estas sondas, producto del esta-
do de la ciencia y la tecnología en su momento, no llegaba a 70 kilobytes y
su procesador era (¡es!) capaz de hacer 81.000 operaciones por segundo. Su
velocidad de transmisión hacia la Tierra es de unos 160 bits por segundo. Sin
embargo, las dos sondas han superado con creces su vida útil y se espera que
sigan operativas hasta el año 2025, teniendo en cuenta que fueron construidas
para durar en un entorno muy hostil y donde cualquier problema es fatal. En
cambio, un teléfono móvil del tipo inteligente estándar, que hay que renovar
cada poco tiempo porque se echa a perder enseguida, tiene una capacidad de
70 gigabytes (6 GB de memoria interna más 64 GB con una tarjeta SD), es de-
cir, un millón de veces más de memoria que las sondas Voyager, y lleva un
procesador que es capaz de ejecutar cerca de 2.000 millones de operaciones
por segundo, es decir, es entre cien mil y un millón de veces más potente que
las sondas Voyager.
© FUOC • PID_00276817 8 Pensamiento computacional para aprender a programar

Figura 3. Hardware con el sistema de vuelo de la sonda Voyager

Fuente: https://history.nasa.gov/computers/Ch6-2.html

Ahora bien, no hay ningún otro ámbito de la tecnología que haya avanzado
tanto como el de los ordenadores. Si el sector del automóvil hubiera evolu-
cionado del mismo modo, los coches actuales tendrían motores de casi 1.000
millones de caballos de potencia, acelerarían de 0 a 100 kilómetros por hora
en milésimas de segundo y costarían una fracción del coste actual. Además,
tenemos automóviles desde los últimos años del siglo XIX, con lo cual la evo-
lución del sector ha sido claramente más lenta. Obviamente, la comparación
es injusta, pero ejemplifica el elevado grado de desarrollo del hardware que
incorporan los ordenadores que podemos encontrar por todas partes. En los
próximos años la innovación más importante que veremos en los automóviles
será la conducción automática, basada absolutamente en el uso intensivo de
ordenadores, redes de comunicación e inteligencia artificial.

Pero no se trata solamente de un tema de hardware. Los primeros ordenadores


eran máquinas caras, muy limitadas y, sobre todo, solo accesibles por un grupo
reducido de expertos programadores (¡de hecho, programadoras!), que eran las
únicas personas capaces de utilizarlos. La figura 4 nos muestra una situación
típica en aquella época. Los ordenadores se programaban en código máquina,
el único lenguaje que entendían, equivalente a las instrucciones básicas que
ejecutan los microprocesadores. Es un lenguaje de muy bajo nivel, dado que es
muy próximo al hardware, y es muy complicado y extraño para los usuarios.
Además, cuando aparecía un nuevo ordenador con un nuevo microprocesador
más potente, los programas se tenían que reescribir, principalmente porque
el código máquina del nuevo microprocesador también era diferente o bien
lo era su configuración de dispositivos. En muchos casos, los programas eran
realmente conexiones eléctricas entre diferentes componentes del ordenador.
No había ninguna separación o abstracción entre el problema que había que
resolver y el programa que lo resolvía. Esto hacía que el proceso de programar
© FUOC • PID_00276817 9 Pensamiento computacional para aprender a programar

estos primeros ordenadores fuera muy lento y costoso, de manera que era un
lujo que pocas organizaciones y administraciones se podían permitir, además
del coste del mismo ordenador y el coste de tenerlo funcionando.

Figura 4. Las primeras programadoras del ordenador ENIAC

Fuente: <https://es.wikipedia.org/wiki/eniac#/media/Archivo:Two_women_operating_ENIAC.gif>

Esta necesidad de optimizar el uso de los ordenadores existentes, junto con la


evolución paralela del hardware, hicieron pensar que estaría bien poder repre-
sentar los programas en algún lenguaje no tan próximo al lenguaje máquina
del microprocesador, sino en un lenguaje intermedio que no fuera tan depen-
diente, de manera que hacer cambios y mejoras fuera más sencillo. Dado que
los primeros programas que se crearon iban orientados a resolver problemas
numéricos, en la década de los cincuenta se desarrolló el lenguaje Fortran,
nombre que proviene del acrónimo de Formula Translation. El equipo de IBM
que lo creó quería poder expresar fórmulas y ecuaciones de una manera más
sencilla, cosa que dio pie al lenguaje y al primer compilador optimizado que
era capaz de generar un código máquina eficiente a partir del código Fortran.
El lenguaje Fortran ha ido evolucionando con el tiempo y en la actualidad,
aprovechando la gran cantidad de código existente, todavía se utiliza en ám-
bitos científicos y tecnológicos. Además, Fortran ha servido como ejemplo pa-
ra desarrollar otros muchos lenguajes de programación, especialmente los que
aparecieron durante la década de los sesenta y setenta.

Por otro lado, en la década de los ochenta del siglo XX hubo un verdadero
boom de la informática con la llegada masiva del ordenador personal. Los or-
denadores ya no eran exclusivos de grandes corporaciones o de la Adminis-
tración, sino que, por relativamente poco dinero, era posible tener uno con
unas prestaciones más o menos limitadas pero que permitía crear pequeños
programas aprovechando al máximo las capacidades de hardware disponible.
La mayoría de estos ordenadores proporcionaban un intérprete de BASIC, un
lenguaje de programación pensado para que cualquier persona pudiera crear
© FUOC • PID_00276817 10 Pensamiento computacional para aprender a programar

pequeños programas de manera sencilla. De hecho, BASIC es el acrónimo de


Beginner's All-purpose Symbolic Instruction Code, es decir, ‘código simbólico de
propósito general para principiantes’. Así, el lenguaje de programación BASIC
se posicionó como «estándar» en los ordenadores personales y sirvió para que
mucha gente hiciera sus primeros pasos en el mundo de la programación. La
mayoría de ordenadores personales eran usados seguramente solo como con-
solas de videojuegos, pero es cierto que disponer de un ordenador capaz de
ejecutar programas escritos en lenguaje BASIC hizo que mucha gente se ini-
ciara en el mundo de la programación de manera completamente autodidacta,
con el único apoyo de las revistas de informática que inundaban los quioscos
de la época, tal como muestra la figura 5.

Figura 5. Ejemplos de revistas de informática de los años ochenta: cubierta del primer número
de Dr. Dobb's Journal (izquierda) y oferta de suscripción a Byte, de Carl Helmers, de junio de
1975 (derecha)

Fuente: <https://upload.wikimedia.org/wikipedia/en/3/39/drdobbs_first.png> (izquierda); <https://es.wikipedia.org/wiki/


byte_(revista)#/media/Archivo:ECS_BYTE_Offer_Letter_June_1975_pg1.jpg> (derecha)

Como lenguaje de programación interpretado, BASIC permite ir construyendo


los programas línea a línea, usando números para identificar cada sentencia
y establecer la orden de ejecución. Esto permite al programador en BASIC ir
creando el programa a trocitos y usar una sentencia llamada GOTO para saltar
de un bloque de líneas a otro. Esto puede causar que los programas escritos en
BASIC que abusan del uso de la sentencia GOTO sean difíciles de leer y man-
tener, cosa que ha dado lugar al término código espagueti. Así, el lenguaje BASIC
permitió que mucha gente se iniciara en el mundo de la programación, pero a
la vez permitió que adquirieran malos hábitos como programadores, dado que
no era un lenguaje pensado para programar de manera estructurada, como por
ejemplo el lenguaje Pascal, que era un lenguaje que obligaba el programador
a pensar el programa antes de implementarlo y ejecutarlo. De hecho, Pascal
era el lenguaje habitual que se usaba en las asignaturas introductorias de pro-
gramación de la mayoría de carreras técnicas (ingenierías, informática, etc.),
donde BASIC siempre ha sido un lenguaje proscrito.
© FUOC • PID_00276817 11 Pensamiento computacional para aprender a programar

En este sentido, el lenguaje de programación BASIC era una puerta de entrada


al mundo de la programación muy accesible, dado que desde el primer mo-
mento era posible escribir programas y ejecutarlos. Además, la gran cantidad
de revistas y documentación disponible en una era preinternet comportaba
que mucha gente fuera aprendiendo por su cuenta, sin una formación oficial.
Hay que pensar que las primeras facultades de informática en España se es-
tablecieron en 1976, y antes solo era posible estudiar informática en institu-
tos de investigación y a veces como parte de otras carreras, como por ejem-
plo matemáticas, ingeniería o física. Durante los años ochenta se vivió esta
contradicción: por un lado, había unos estudios oficiales de informática muy
teóricos y formales, y, por el otro, un lenguaje de programación como BASIC,
presente en la mayoría de ordenadores y microordenadores, que era ignorado
por la academia porque no potenciaba la adquisición de buenas prácticas, a
pesar de que permitía aprender a programar a mucha gente que llegaba por
primera vez al ámbito de la programación. En un artículo publicado en 1981,
Richard Wexelblat ya se plantea esta reflexión y se pregunta si BASIC es un
buen lenguaje para aprender a programar «bien», no solamente para hacer
pequeños programas de juguete, sino para desarrollar un modelo mental que
permita aprender otros lenguajes de programación más avanzados para resol-
ver problemas más complejos. En sus conclusiones, Wexelblat planteaba que
el lenguaje de programación usado crea unas estructuras mentales que pueden
limitar el desarrollo de un programador si este no recibe formación más am-
plia sobre programación. Esta idea de modelo mental es una parte de lo que
denominamos pensamiento computacional.

En su artículo sobre pensamiento computacional del año 2006, Jeannette


Wing intenta responder «qué hacen los ordenadores mejor que los humanos»
y «qué hacen los humanos mejor que los ordenadores», de forma que estable-
ce un diálogo entre ambas cuestiones. El pensamiento computacional es mu-
cho más que una manera de pensar para escribir programas. Es una manera
de pensar para resolver problemas utilizando diferentes competencias desde
diferentes perspectivas para afrontar un problema, tal como desarrollaremos
posteriormente. De hecho, la autora deja claro que pensamiento computacio-
nal no es «saber usar el ordenador» y tampoco «saber programar», sino que es
el proceso mental implicado en la formulación de un problema, la solución
del cual se expresa de forma que un computador (un ordenador, pero también
un humano) pueda resolverlo. De hecho, el pensamiento computacional es
algo previo a la programación con el objetivo de automatizar la abstracción
(usando las palabras de la autora).
© FUOC • PID_00276817 12 Pensamiento computacional para aprender a programar

Así, el pensamiento computacional y el aprendizaje de programación


son dos conceptos diferentes, pero, de alguna manera, muy relaciona-
dos. Como veremos, el pensamiento�computacional es un conjunto
de herramientas que nos permite resolver problemas de manera siste-
mática y obviamente aplicarlas a la creación de programas. Por otro la-
do, la programación es un ejercicio que desarrolla habilidades propias
del pensamiento computacional, así que ambos conceptos se retroali-
mentan.

A continuación, en este material docente hacemos un repaso de los temas cla-


ve que definen el ámbito de la programación y presentamos los conceptos
básicos que trabajaremos con diferentes recursos. El propósito de este mate-
rial docente es introducir el resto de recursos que encontraréis en el aula pa-
ra trabajar con más profundidad cada uno de los conceptos mencionados y,
también, presentar otras lecturas y referencias adicionales que os ayudarán a
ampliar los conocimientos.

Empezaremos definiendo pensamiento computacional, dos palabras que pueden


sonar extrañas una detrás de la otra, dado que todavía no tenemos ningún
computador que piense con el significado que damos a la palabra pensar. Pre-
cisamente, se trata más bien de lo contrario, que nosotros pensamos de una
determinada manera para que un ordenador nos pueda entender, de manera
que seamos capaces de resolver problemas detallando las acciones minuciosa-
mente y no ambiguamente. Después introduciremos los lenguajes de progra-
mación, que es la manera que tenemos de explicar a los ordenadores las ins-
trucciones esperadas para que hagan lo que esperamos, como una herramienta
que resuelve un problema paso a paso por complejo que sea. Finalmente, pre-
sentaremos el lenguaje de programación Processing, que usaremos para hacer
los ejercicios prácticos que nos permitirán resolver pequeños problemas de
manera incremental hasta llegar a desarrollar un proyecto de programación
personal. Para cada uno de estos bloques, repasaremos también unas cuantas
lecturas que nos permiten tener un contexto más amplio, adecuado para en-
tender mejor sus orígenes y la evolución que nos ha llevado hasta donde es-
tamos hoy en día.

Enlaces relacionados

La ley de Moore: <https://ca.wikipedia.org/wiki/llei_de_moore>.

Definición de byte: <https://ca.wikipedia.org/wiki/byte>.

Las sondas Voyager: <https://blogs.scientificamerican.com/life-unbounded/voyager-de-


constructed/>.

Revista El Ordenador Personal: <https://archive.org/details/ordenadorpersonalmagazi-


ne/mode/2up>.

R.�L.�Wexelblat (1981). «The consequences of one's first programming language». Soft-


ware: Practice and Experience (vol. 11, n.º 7, págs. 733-740). <https://dl.acm.org/doi/
pdf/10.1145/800088.802823>.
© FUOC • PID_00276817 13 Pensamiento computacional para aprender a programar

J.�M.�Wing (2006). «Computational thinking». Communications of the ACM (vol. 49, n.º
3, págs. 33-35). <https://dl.acm.org/doi/pdf/10.1145/1118178.1118215>.
© FUOC • PID_00276817 14 Pensamiento computacional para aprender a programar

2. El pensamiento computacional

Cuando hablamos del pensamiento computacional puede parecer que nos re-
ferimos a la manera como piensa un ordenador. Pero ¿los ordenadores pien-
san? Es una buena pregunta para empezar y es muy importante que lo aclare-
mos. Pues no, los ordenadores no piensan en el sentido que damos general-
mente al término pensar. Los ordenadores no saben pensar, solo saben ejecutar
órdenes, sin entender qué significa lo que hacen, órdenes que alguien, una
persona, el programador, les ha dado previamente. Eso sí, lo hacen muy rápi-
damente y de manera muy precisa, sin cometer errores. Esta es su fortaleza, y
es por eso que nos son tan útiles.

Las personas, en cambio, podemos pensar cómo resolver un problema o hacer


una tarea cualquiera, pero muchas no las podemos hacer ni tan rápido ni de
manera tan precisa como lo hace una máquina. Los ordenadores son extrema-
damente más rápidos que nosotros ejecutando órdenes, y además no come-
ten errores, puesto que no tienen la capacidad de distraerse o despistarse, que,
por otro lado, son unas condiciones muy humanas. Pero los ordenadores no
entienden lo que hacen. Son máquinas (complejas, eso sí) que nos permiten
hacer ciertas tareas de forma más eficiente. Así, como veis, podemos decir que
ordenadores y personas somos complementarios de alguna manera.

Aclarado este punto, ¿qué es, pues, el pensamiento computacional? Po-


demos decir que es una manera común de pensar que utilizamos para
entender�y�encontrar�soluciones�eficientes�a�problemas�complica-
dos, y también para expresar estas soluciones paso a paso de forma que
se puedan interpretar y ejecutar claramente tanto por una persona co-
mo por un ordenador.

No es, pues, ni pensar como un ordenador ni tampoco programar. Pero se tra-


ta de una competencia indispensable para programar ordenadores y también
para poder determinar qué problemas podemos resolver con un ordenador y
qué no.

Por lo tanto, el pensamiento computacional no está relacionado solo con la


programación, sino que lo utilizamos en muchas facetas de nuestra vida. Y es
importante en prácticamente todas las profesiones, porque es nuestra manera
de afrontar problemas complejos, de buscar posibles soluciones y también de
decidir cuándo podemos o necesitamos automatizar estas soluciones con el
uso de ordenadores y cuándo no. Además, nos ayuda a entender el mundo
digital y a utilizarlo a nuestro favor y también a evitar las amenazas e incon-
venientes que desgraciadamente nos plantea. ¿Os habéis preguntado alguna
© FUOC • PID_00276817 15 Pensamiento computacional para aprender a programar

vez cómo sabe Google tantas cosas de nosotros, o cómo es que Netflix nos re-
comienda justamente las series que nos gustan? Básicamente, porque recogen
datos de nuestra actividad y un algoritmo los analiza para determinar otras
acciones coherentes con lo que han hecho otros usuarios con un perfil simi-
lar al nuestro. Cada vez más el mundo utiliza algoritmos para determinar el
funcionamiento de muchos elementos de la vida cotidiana, y entenderlo nos
hará más conscientes y también más cuidadosos respecto a esto. Tú decides:
o programas o te programan.

Sobre pensamiento computacional habló por primera vez Seymour Papert en


1980. Papert era matemático y uno de los creadores del lenguaje de programa-
ción Logo, diseñado para aprender a programar a partir de órdenes sencillas
que se daban a una tortuga, que las ejecutaba. La metáfora de la tortuga era
muy interesante porque representaba pensar en el ordenador como un ser vi-
vo, en este caso muy lento, que reacciona a nuestras órdenes solo si son pre-
cisas. No fue hasta el año 2006 que el término pensamiento computacional se
popularizó de la mano de la ingeniera informática y profesora Jeannette Wing,
que introdujo la idea que esta manera de pensar que utilizan los programado-
res es una competencia importante para todo el mundo.

El pensamiento computacional ha sido estudiado ampliamente desde enton-


ces, y a pesar de que todavía no hay un consenso sobre su alcance ni una defi-
nición única, sí que parece que hay un acuerdo general sobre los cuatro pilares
en que se fundamenta: descomposición, reconocimiento de patrones, abstrac-
ción y algorítmica, los cuales están relacionados fuertemente entre ellos, tal
como muestra la figura 6.

Figura 6. Los cuatro pilares del pensamiento computacional

Fuente: <https://bam.files.bbci.co.uk/bam/live/content/zg6bgk7/large>

Estos cuatro pilares nos permiten enfocar «cualquier» problema mediante la


combinación de cuatro procesos mentales complementarios. La descomposi-
ción nos permite fragmentar un problema grande en varios problemas más
pequeños de forma que sea más fácil enfocarlos por separado. Además, el re-
© FUOC • PID_00276817 16 Pensamiento computacional para aprender a programar

conocimiento�de�patrones nos permite reutilizar soluciones para problemas


similares detectando las similitudes y las diferencias. La abstracción nos per-
mite obviar los detalles innecesarios y centrarnos en los importantes e impres-
cindibles, de manera que todo aquello que es importante para resolver el pro-
blema esté bien identificado. Finalmente, la algorítmica nos permite descri-
bir la secuencia de pasos necesaria para resolver el problema planteado. No se
trata de «recetas», son técnicas para pensar cómo resolver problemas comple-
jos, y dependiendo del caso, usaremos unas, otras o todas simultáneamente,
según cuál sea el problema.

Pensad en el problema «cocinar una tortilla de patatas» y cómo lo resolveríais.


¿En qué subproblemas lo descompondríais (pelar las patatas, batir los hue-
vos…)? ¿Qué patrones hay (si sabemos pelar una patata y batir un huevo, sa-
bemos pelarlas a pesar de batirlos todos, ¿verdad?)? ¿De qué detalles podemos
hacer abstracción (quizás no importa si los huevos son blancos o amarillos)?
¿Cuál es la secuencia detallada de pasos para llegar a la solución?

2.1. Lecturas sobre pensamiento computacional

A continuación resumimos varios trabajos adecuados para profundizar un po-


co más en el concepto de pensamiento computacional. Estas lecturas son reco-
mendadas para entender mejor el concepto en cuestión, pero también para
tener un contexto de varios trabajos relacionados con el tema. En el año 2015,
la Revista�de�Educación�a�Distancia�dedicó�un�monográfico�al�tema (el nú-
mero 46), y hemos seleccionado dos lecturas para comentarlas, a pesar de que
el resto también son interesantes.

La primera lectura es «Pensamiento�computacional:�una�nueva�alfabetiza-


ción�digital», del autor Miguel Zapata Ros. Este trabajo hace un repaso muy
completo de las diferentes maneras de pensar para resolver problemas relacio-
nados con el desarrollo de competencias digitales, pero no solamente con el
objetivo de crear programas, sino con otro más general: ser capaces de pensar
de manera diferente para abordar la resolución de problemas complejos. El
autor hace énfasis en el hecho de que para desarrollar futuros programadores,
los niños y las niñas que utilizan un ordenador por primera vez no pueden
ser iniciados en la programación per se, solo creando pequeños programas. Es
necesario adquirir un conjunto de competencias asociadas a la resolución de
problemas, que desarrollarán el llamado pensamiento computacional. Haciendo
una extensa revisión de la literatura (el artículo cita más de ochenta trabajos),
el autor identifica estas competencias que acontecen componentes clave del
pensamiento computacional, como por ejemplo la creatividad, el pensamien-
to lateral, la resolución de problemas, la iteración, etc., hasta un total de ca-
torce, mostradas en la figura 7, de forma que amplía el grupo de cuatro pila-
res mencionados antes. El autor define cada componente y lo conecta con la
literatura existente del ámbito educativo y otros afines, como la psicología,
lo cual representa el grueso del artículo. También los relaciona entre ellos, da-
do que los componentes identificados son muy amplios y hacen referencia a
© FUOC • PID_00276817 17 Pensamiento computacional para aprender a programar

procesos mentales relacionados con el pensamiento y la resolución de proble-


mas. En una segunda parte, el autor describe las fases para crear un programa
y las relaciona con los catorce componentes identificados anteriormente, con
el objetivo de demostrar que la programación no es una competencia más,
sino que es realmente bastante compleja para ser descompuesta en otros que
se combinan para lograr los objetivos deseados.

Figura 7. Competencias propias del pensamiento computacional

Por su parte, el trabajo de Patricia Compañ y otros autores «Enseñando�a�pro-


gramar:�un�camino�directo�para�desarrollar�el�pensamiento�computacio-
nal» se centra en el aprendizaje de la programación y cómo abordarlo desde la
perspectiva del pensamiento computacional. De hecho, los autores defienden
que, para desarrollar las competencias propias del pensamiento computacio-
nal, una asignatura introductoria a la programación puede ser una muy buena
opción. Para hacerlo correctamente, se tiene que huir de la manera tradicional
de enseñar a programar con un lenguaje de programación introduciendo las
© FUOC • PID_00276817 18 Pensamiento computacional para aprender a programar

operaciones, sentencias, estructuras, etc. e indicando para qué sirve cada una.
Al contrario, se trata de plantear problemas y pensar cómo resolverlos sin usar
directamente el lenguaje de programación. Esta reflexión sobre el problema
y su naturaleza permite desarrollar las competencias del pensamiento compu-
tacional, que serán finalmente las que nos permitirán crear el programa que
resolverá el problema propuesto.

Los dos trabajos, pues, coinciden en un mismo punto. Para crear programas
que resuelven problemas, antes es necesario entender bien la naturaleza del
problema que se tiene que resolver y analizarlo usando las competencias pro-
pias del pensamiento computacional. Los conceptos abstracción y automatiza-
ción son clave, porque son los que posteriormente permitirán convertir una
solución en un programa que pueda ser ejecutado por un ordenador, una má-
quina que es muy eficiente para resolver problemas repetitivos y muy defini-
dos, sin ambigüedades.

Enlaces relacionados

Monográfico de la Revista de Educación a Distancia sobre pensamiento computacional:


<https://www.um.es/ead/red/46/>.

Pensamiento computacional en la BBC: <https://www.bbc.co.uk/bitesize/gui-


des/zp92mp3/revision/1>.

P.�J.�Denning;�M.�Tedre (2019). Computational thinking. MIT Press.

S.�Papert (1980). Mindstorms: computers, children, and powerful ideas. Nueva York: Basic
Books.

J.�M.�Wing (2006). «Computational thinking». Communications of the ACM (vol. 49, n.º
3, págs. 33-35). <https://dl.acm.org/doi/pdf/10.1145/1118178.1118215>.
© FUOC • PID_00276817 19 Pensamiento computacional para aprender a programar

3. Los lenguajes de programación

Tal como hemos comentado, un lenguaje�de�programación sirve para


describir los pasos que hay que seguir para resolver un problema con
el que se podrá escribir un programa que sabrá ejecutar un ordenador.
Como hemos dicho, los ordenadores están presentes en todos los ámbi-
tos de nuestra vida cotidiana, así que es razonable pensar que son como
máquinas polivalentes que permiten resolver cualquier tipo de proble-
mas siempre que sean lo que se conoce como computables.

De hecho, podemos definir un problema computable como aquel para el que se


puede diseñar un algoritmo que lo resuelva. En otras palabras, hay un algorit-
mo para resolver el problema, y podemos añadir que este algoritmo lo hace
en un número finito de pasos (es decir, acaba en algún momento). Desde el
punto de vista teórico, la computabilidad es un área que analiza los límites
de lo que puede ser resuelto por un ordenador y lo que no. Hay problemas
que, por su naturaleza, no pueden ser resueltos por un ordenador, como por
ejemplo algunos problemas teóricos y complejos de la matemática o la lógica
que no tienen una solución computable, es decir, que no se puede describir
un algoritmo que los resuelva. En la práctica, pero, consideraremos que los
ordenadores pueden resolver «cualquier» problema de los que habitualmente
nos planteamos. De hecho, la mayoría de las veces lo hacen mejor que no-
sotros, más que nada por la rapidez a la hora de efectuar los cálculos necesa-
rios y por la ausencia de errores. Un ordenador no sabe resolver un problema
que nosotros tampoco sabemos resolver, en el sentido que no conocemos la
secuencia de pasos necesaria. Pero si podemos «explicar» al ordenador como
resolver un problema, lo hará de manera incansable. Así, identificar personas
en imágenes, recomendar una película a partir del historial, traducir textos,
etc. son actividades que los ordenadores hacen de manera muy eficiente. Lo
único necesario es conocer la secuencia de pasos y disponer de capacidad de
cómputo y de almacenamiento suficientes. Pensad cómo Google os devuelve
las páginas a partir de vuestra búsqueda y os haréis una idea de la dimensión
de los problemas que podemos resolver con los recursos suficientes.

Igual que las personas nos comunicamos en diferentes idiomas, los programas
se escriben usando diferentes lenguajes de programación. Una visita rápida a
la Wikipedia nos dice que hay más de setecientos lenguajes de programación,
la mayoría todavía en uso, sin tener en cuenta dialectos, lenguajes esotéricos
(para hacer broma o para demostrar algún concepto) y otros lenguajes usados
para describir datos más que no programas. Pero, igual que pasa con los idio-
mas, el mundo de la programación está dominado por pocos lenguajes, los
cuales evolucionan hasta que un día desaparecen, y entonces aparecen otros
© FUOC • PID_00276817 20 Pensamiento computacional para aprender a programar

de nuevos que aprovechan las nuevas capacidades, como pasó, por ejemplo,
cuando apareció la web y fue necesario desarrollar nuevos lenguajes de pro-
gramación adecuados (figura 8).

Figura 8. Ejemplos de lenguajes de programación

Fuente: https://nickjanetakis.com/blog/how-to-quickly-learn-a-new-programming-language-or-framework

Algunos de los lenguajes más populares en el ámbito de la programación de


este año 2020 son los siguientes:

• Python. Se trata de un lenguaje de propósito general, pero con muchas


librerías (módulos) que le permiten hacer casi cualquier cosa. Es muy usa-
do en el ámbito de la ciencia de datos y otras áreas afines.

• JavaScript. Es un lenguaje orientado a crear páginas y aplicaciones web


interactivas. De JavaScript se deriva JSON, un formato estándar para inter-
cambiar datos entre aplicaciones.

• Java. Es otro lenguaje de propósito general que apareció con la idea de


«escribir una vez, ejecutar muchas veces, en el sentido que el mismo código
se podía ejecutar en cualquier plataforma (hardware y sistema operativo)
sin ningún cambio.

• C�/�C++�/�C#. La «familia» de lenguajes derivados del originario lenguaje


C (que data del año 1972) sigue muy presente, dado que se trata de un
lenguaje que permite acceder a detalles próximos al hardware y al sistema
operativo, característica que lo hace muy eficiente.

• Go. Es un lenguaje relativamente reciente desarrollado por Google con


el objetivo de incrementar la productividad a la época actual de sistemas
masivos y paralelos para aprovechar al máximo el hardware disponible.

• R. Es un entorno que funciona como una calculadora científica programa-


ble, que incorpora un lenguaje de programación para desarrollar módulos.
© FUOC • PID_00276817 21 Pensamiento computacional para aprender a programar

Es muy usado en el ámbito científico, especialmente para la estadística y


la ciencia de datos, y compite con Python en este sentido.

• PHP. Es otro lenguaje de propósito general para programar aplicaciones


web, pensado para ejecutarse en el lado del servidor, a diferencia del len-
guaje JavaScript, pensado más para ejecutarse en el lado del cliente (el na-
vegador del usuario).

Hay muchos más lenguajes de programación. Algunos ya no se usan, otros


continúan siendo un pilar en algunos sectores (como por ejemplo COBOL en
la banca y los seguros, o Fortran en entornos científicos), y aparecerán más
conforme se desarrollen nuevas tecnologías. No se trata de conocerlos todos,
igual que no se trata de practicar todos los deportes o tocar todos los instru-
mentos musicales, pero sí que hay un conjunto de competencias básicas que
nos permitirán programar sea cual sea el lenguaje de programación, como por
ejemplo la abstracción, la descomposición de problemas, etc. Estamos hablan-
do, una vez más, de las competencias propias del pensamiento computacional.

3.1. ¿Cómo funciona un ordenador?

Pero ¿cómo es capaz, un ordenador, de entender un programa y hacer las ope-


raciones que están descritas? No es un proceso sencillo, realmente, e involucra
muchos elementos diferentes que están completamente fuera del alcance de
estos materiales docentes. Primero tendríamos que entender qué elementos
componen un ordenador, tema también fuera del alcance de estos materiales
docentes. Pero podemos hacer una simplificación que nos resultará útil para
centrarnos después solo a entender qué es un programa.

De manera muy resumida, un ordenador es la suma de un hardware,


un sistema operativo y un conjunto de programas o aplicaciones que
dan servicio al usuario, tal como muestra la figura 9. Podemos hacer
una analogía con un teléfono móvil del tipo inteligente, el cual tiene un
sistema operativo (simplificando, sería Android, o iOS para los teléfonos
de la marca Apple) y un conjunto de aplicaciones que nos permiten
hacer diferentes cosas.
© FUOC • PID_00276817 22 Pensamiento computacional para aprender a programar

Figura 9. Estructura de capas de los


elementos que componen un ordenador

Fuente: <https://upload.wikimedia.org/
wikipedia/commons/thumb/e/e1/
operating_system_placement.svg/1200px-
operating_system_placement.svg.png>

El hardware es la suma de los diferentes elementos físicos que componen un


ordenador, como por ejemplo el microprocesador, la memoria RAM, el dis-
co duro, el teclado, la pantalla, etc. La figura 10 muestra un ejemplo de los
componentes de un ordenador. De hecho, hoy en día estos elementos son tan
complejos que se pueden considerar por sí mismos «pequeños» ordenadores
dedicados a hacer una tarea concreta. Por ejemplo, todo lo que aparece en la
pantalla de un ordenador se gestiona desde una tarjeta gráfica, que es como
un ordenador que se dedica solo a convertir en píxeles la información que se
quiere representar en pantalla. De la misma manera que los microprocesado-
res son cada vez más potentes, hay también una evolución constante de todos
los dispositivos que componen un ordenador, cosa que permite configurarlo
según las necesidades de cada usuario, especialmente en el caso de los orde-
nadores personales. Así, cuando uno compra un ordenador, puede elegir una
infinidad de detalles para personalizarlo y hacerlo más adecuado a las necesi-
dades concretas, en función de las tareas que hará con él.
© FUOC • PID_00276817 23 Pensamiento computacional para aprender a programar

Figura 10. Componentes del hardware de un ordenador

Fuente: <https://miro.medium.com/max/680/1*g-stzguje37m6huchxy6qa.jpeg>

El sistema� operativo es el elemento que nos permite acceder a todos estos


recursos de hardware de manera transparente, escondiendo muchos de los
detalles necesarios para hacerlos funcionar. Es una capa que aísla el usuario
de todos los detalles necesarios para hacer operaciones sencillas, como por
ejemplo copiar un fichero sin importar la estructura del sistema de ficheros
subyacente u otros parámetros relacionados con la geometría de los discos.
El sistema operativo es un software especial que permite al usuario ejecutar
otros programas mientras le proporciona servicios básicos para acceder a todo
el hardware disponible. De hecho, el sistema operativo es una colección de
programas «pequeños» (en comparación con las aplicaciones) que se ejecutan
para hacer tareas como por ejemplo leer o escribir en un disco duro, escribir
un texto en pantalla, etc. En realidad, todo hardware, como por ejemplo el
teléfono inteligente, la consola de videojuegos, el automóvil, etc., contiene de
una manera u otra un sistema operativo que lo hace funcionar.

Finalmente, las aplicaciones son programas (o conjuntos�de�programas) que


hacen una tarea concreta, como por ejemplo editar textos, reproducir vídeos,
navegar por la web, etc., pero también calcular un interés compuesto o contar
las palabras de un texto, para mencionar ejemplos más sencillos y concretos.
Las aplicaciones utilizan los servicios que ofrece el sistema operativo para sim-
plificar las tareas que hay que hacer, como por ejemplo enviar información por
la red, de forma que usan una abstracción de este concepto para hacerlo, sin
depender del hardware específico donde se ejecuta. De este modo, el mismo
programa se puede ejecutar (sin muchos cambios) idealmente en diferentes
ordenadores con diferentes sistemas operativos.
© FUOC • PID_00276817 24 Pensamiento computacional para aprender a programar

Resumiendo, todo lo que se ejecuta es un programa, ya sea dentro de un mi-


croprocesador, un servicio del sistema operativo o una aplicación. Pero cuan-
do uno empieza a programar, se queda en el nivel de las aplicaciones, el más
próximo al usuario final.

3.2. ¿Cómo se crea un programa?

Hemos visto que para hacer que un ordenador haga una cosa concreta nece-
sitamos un programa que se ejecute en el ordenador que queremos hacer fun-
cionar. Este proceso es generalmente bastante complejo, pero para programas
pequeños se puede simplificar con el objetivo de entenderlo mejor:

• Antes que nada, hay que escribir�el�programa usando un lenguaje de pro-


gramación concreto. Es lo que se conoce como código fuente. Usaremos
un editor de textos cualquiera o, mejor todavía, un entorno de programa-
ción integrado. Estos entornos proporcionan herramientas que facilitan el
desarrollo de programas porque nos ayudan con la sintaxis y la semántica
de las sentencias que componen un programa, de manera que facilitan la
lectura y la escritura.

• Después hay que convertir�el�programa a un formato adecuado para ser


ejecutado por un ordenador. Dependiendo del lenguaje de programación,
esto no será necesario, pero en la mayoría de casos hay que convertir el
código fuente a un código máquina que se pueda ejecutar. Este proceso es
el que se conoce como compilación.

• Finalmente, el programa�se�ejecuta haciendo su tarea. Esto quiere decir


que el sistema operativo lo carga en memoria y lo ejecuta paso a paso si-
guiendo la secuencia de pasos descrita en el programa. Si el programa fun-
ciona correctamente, perfecto, pero en caso contrario habrá que averiguar
dónde está el error, proceso que se conoce como depuración, así será ne-
cesario volver al primer punto y editar de nuevo el programa para hacer
las modificaciones necesarias.

Obviamente, hay un paso previo muy importante, que es pensar la solución


del problema que queremos resolver con un programa. Uno no se pone a coci-
nar sin saber qué quiere cocinar y qué necesita para hacerlo. Igualmente, uno
no se pone a programar directamente esperando que resulte algo interesante.
En este sentido el proceso creativo que representa programar es diferente del
de pintar un cuadro o tocar un instrumento musical, por ejemplo, en los cuales
sí que es posible experimentar e improvisar. Programar requiere un ejercicio
previo en el cual se detallan las instrucciones que compondrán el programa
para poder llegar a la solución deseada.

Por otro lado, programar sí que es un ejercicio iterativo, dado que, excepto en
el caso de programas muy pequeños, uno no escribe todo el programa en una
única iteración y después lo ejecuta, sino que normalmente los programas se
© FUOC • PID_00276817 25 Pensamiento computacional para aprender a programar

van desarrollando por trozos o, en lenguaje informático, en módulos o sub-


programas, que se van probando y asemejando hasta llegar al programa final.
De hecho, dividir un problema en subproblemas es una estrategia propia del
pensamiento computacional. Así, cada uno de los subproblemas se piensa, se
escribe y se comprueba que funciona correctamente, de forma que se avanza
hasta el programa completo.

En este apartado no podemos introducir todos los conceptos que forman par-
te del ámbito de la programación. Cuando se empieza a programar se hace
habitualmente con el paradigma de la programación� estructurada, que se
fundamenta en unas estructuras de control que permiten controlar el flujo o
secuencia de pasos que el programa sigue, a partir del valor que toman cier-
tas condiciones. Estas condiciones son expresiones matemáticas o lógicas que
comparan variables y constantes para poder responder preguntas básicas, que
son las que determinan qué camino se tiene que coger, si hay que volver atrás
o no, etc. Estos conceptos los iréis aprendiendo conforme vayáis haciendo pe-
queños ejercicios prácticos que los incluyen de manera incremental. Lo que es
importante es entender que un lenguaje de programación no es más que un
conjunto de herramientas que tenemos a disposición para hacer funcionar el
ordenador de forma que haga lo que nosotros queremos.

3.3. Lecturas sobre lenguajes de programación

En este caso hemos seleccionado una primera lectura llamada «Historia�y�evo-


lución�de�los�lenguajes�de�programación», de Vicente Tardo Aranda, que,
a pesar de ser antigua (del año 2004), introduce muy bien la mayoría de len-
guajes de programación típicos todavía en uso hoy en día, siguiendo una línea
temporal que empieza con el lenguaje ensamblador y finaliza con Java. Para
cada uno de los lenguajes de programación analizados, el autor describe los
orígenes, las personas y organismos relacionados con su creación y las carac-
terísticas básicas que lo diferencian de los otros. El artículo finaliza con una
lista de otros lenguajes de programación no tan populares pero que por una
razón u otra también han ocupado un lugar en la historia.

La segunda lectura, Un�viaje�a�la�historia�de�la�informática, de Xavier Molero


y otros autores invitados, es un repaso más extenso de todo el ámbito de la
informática, más allá del alcance de este material docente. Por lo tanto, nos
quedaremos con un subconjunto de capítulos interesantes, que son los tres
primeros, los cuales presentan respectivamente los antecedentes históricos, la
estructura del ordenador tal como lo conocemos hoy en día y una evolución
de los lenguajes de programación. Los tres autores son, por orden de capítu-
lo, Álvaro Doménech, el mencionado Xavier Molero y Jon Ander Gómez. En
este caso, se trata de un recurso del 2016, cosa que lo hace ser plenamente
vigente y actualizado. Los tres juntos permiten hacerse una muy buena idea
de por qué los ordenadores son como son hoy en día y cómo se programan
© FUOC • PID_00276817 26 Pensamiento computacional para aprender a programar

usando diferentes lenguajes de programación. El libro es, además, un recurso


que complementa el Museo de Informática de la Universidad Politécnica de
Valencia, cosa que lo hace todavía más interesante.

El tercer capítulo es de un nivel relativamente avanzado, dado que también


presenta las diferentes maneras de clasificar los lenguajes de programación
en función de su nivel, generación, paradigma de programación, etc. A pesar
de que algunos de los conceptos mencionados están fuera del alcance de un
curso de introducción a la programación, permiten hacerse una idea de la
complejidad actual de lo que representa responder a la pregunta «¿Cómo se
programa un ordenador?».

Enlaces relacionados

Lista de lenguajes de programación: <https://bit.ly/31aosen>.

The Hello Word Collection: <http://helloworldcollection.de/>.

Entornos integrados de programación: <https://bit.ly/316uh1i>.

Programación estructurada en Wikipedia: <https://bit.ly/31b7lmg>.

Museo de Informática de la UPV: <http://museo.inf.upv.es/va/>.

V.� T.� Aranda (2004). «Historia y evolución de los lenguajes de programación». Ma-
nual Formativo de ACTA (n.º 34, págs. 85-95). <https://www.acta.es/recursos/revista-digi-
tal-manuales-formativos/284-034>.

X.�Molero�Prieto (2016). Un viaje a la historia de la informática. Valencia: Editorial Uni-


versitat Politècnica de València. <http://hdl.handle.net/10251/67745>.
© FUOC • PID_00276817 27 Pensamiento computacional para aprender a programar

4. El lenguaje Processing

Nos podríamos preguntar si hay un lenguaje de programación «ideal». La res-


puesta es que no: cada escenario, tipo de problema y contexto requieren un
lenguaje de programación específico que sea el más adecuado. De hecho, la
gran cantidad de lenguajes de programación existentes se dirige, en parte, a
un tipo de problemas en particular o bien a la explotación de las características
de un ámbito dado. No hay un lenguaje de programación universal, a pesar
de que hay muchos de propósito general que se usan en muchos ámbitos.

Y, para aprender a programar, ¿hay un lenguaje de programación ideal? Pues


seguramente tampoco, por desgracia. Como hemos comentado anteriormen-
te, muchos de los programadores veteranos que hay hoy en día seguramente
aprendieron a programar de manera autodidacta en lenguaje BASIC, un len-
guaje que en la actualidad no se utiliza tal como se concibió originariamen-
te. Durante mucho tiempo, en las asignaturas de programación de las faculta-
des de informática se aprendían lenguajes como Pascal o Modula-2, porque se
pensaba que potenciaban la adquisición de buenos hábitos relacionados con
la programación estructurada como contrapunto de todas las malas prácticas
que permitían lenguajes como BASIC. De hecho, muchas de las dificultades
del proceso de aprender a programar aparecen por las características de cada
lenguaje, que son más o menos complejas, como por ejemplo el requisito de
declarar cada variable antes de poder utilizarla o el de especificar qué tipo
de datos almacenará cada variable. En un extremo tenemos lenguajes como
BASIC, en el cual el programador va tirando sin ninguna declaración previa;
en el otro, lenguajes como Pascal, que obligan al programador a declararlo
a pesar de ser estricto con los tipos de datos y las operaciones relacionadas.
La libertad de BASIC acababa siendo un problema, dado que no hay ningún
control sobre los posibles errores que el programador podía cometer, mientras
que Pascal permite asegurar al menos que ciertos errores típicos pueden ser
detectados y resueltos fácilmente. Los lenguajes modernos son más próximos
a Pascal, pero con ciertas complejidades, en algunos casos.

Uno de estos lenguajes de programación es Processing. Fue creado en 2001


por Ben Fry y Casey Reas cuando estaban en el MIT, con el objetivo de tener
un lenguaje de programación para crear contenido audiovisual para diseña-
dores, artistas digitales, etc., gente que habitualmente no usa la programación
como herramienta. Processing tiene unas características muy interesantes que
lo hacen adecuado para aprender a programar en un contexto más lúdico:

• Es un lenguaje imperativo: el programador describe los pasos que hay que


seguir para llegar a un objetivo concreto. Esto es muy habitual, pero no
es exclusivo de Processing.
© FUOC • PID_00276817 28 Pensamiento computacional para aprender a programar

• Incorpora un entorno de programación con un editor que facilita la lec-


tura y escritura de programas, vigilando la sintaxis mientras se programa
y controlando una parte de la semántica, esconde los detalles del proceso
de compilación y también es capaz de detectar ciertos errores en tiempos
de ejecución.

• Incluye un montón de bibliotecas adicionales de código abierto para apo-


yar las operaciones básicas relacionadas con su objetivo: ser capaces de di-
bujar y animar elementos gráficos de manera sencilla.

• Su punto fuerte es que permite convertir fácilmente una idea, con unas
pocas líneas de código, en algo que aparece en pantalla. Otros lenguajes
de programación necesitan descripciones más complejas para llegar a re-
sultados similares.

• Además, facilita pensar en clave de «escena»: se construyen los elementos


gráficos que la componen, se sitúan en su lugar con el color y otras carac-
terísticas deseadas, y el lenguaje de programación se encarga de dibujar-
los, en un proceso continuo que permite hacer animaciones de manera
sencilla.

• Finalmente, hay una gran comunidad de programadores en línea que com-


parten código con ejemplos, bibliotecas, tutoriales, etc., siguiendo el espí-
ritu inicial de sus creadores.

Lo mejor es echar un vistazo a la infinidad de ejemplos que hay hechos con


Processing, especialmente en su web, los cuales describen el uso del lenguaje
de manera sencilla pero también en forma de proyectos (tutoriales) que mues-
tran las posibilidades reales del lenguaje (figura 11). Y, obviamente, el paso
siguiente es instalar Processing y empezar a hacer pruebas uno mismo, aunque
sea solo para dibujar un círculo en pantalla. ¡Os animamos a hacerlo!
© FUOC • PID_00276817 29 Pensamiento computacional para aprender a programar

Figura 11. Portada de un manual para Processing

Fuente: https://mitpress.mit.edu/sites/default/files/styles/large_book_cover/http/mitp-
content-server.mit.edu%3A18180/books/covers/cover/%3Fcollid%3Dbooks_covers_0%26isbn
%3D9780262028288%26type%3D.jpg

4.1. Lecturas sobre Processing

El año 2006, los creadores de Processing publicaron un artículo llamado «Pro-


cessing:�programming�for�the�media�arts», en el cual describen los princi-
pios del lenguaje y también el razonamiento seguido para crearlo, el cual en-
caja perfectamente con los objetivos del pensamiento computacional. Básica-
mente, los autores empiezan describiendo cómo conciben el software: se trata
de un medio nuevo con unas calidades únicas que hay que aprovechar; cada
lenguaje de programación es, análogamente, un material de trabajo diferente;
el software potencia el prototipado rápido para desarrollar ideas, y, especial-
mente, programar no tiene que ser solamente para ingenieros, y por lo tanto
hacen falta lenguajes de programación como Processing que estén pensados
para personas con un pensamiento más visual o creativo, no abstracto sola-
mente. Los autores hacen también un repaso de diferentes usos de Processing
en contextos educativos haciendo énfasis en su utilización como herramien-
ta para promover la creatividad y el aprendizaje de los conceptos básicos de
programación.
© FUOC • PID_00276817 30 Pensamiento computacional para aprender a programar

De hecho, la web está llena de recursos sobre Processing, los cuales quedan
obsoletos rápidamente y hay que actualizar para seguir el desarrollo del len-
guaje, que se va adaptando a nuevas tecnologías relacionadas con la web y los
dispositivos móviles. Sin embargo, en un artículo en la revista Mosaic, Quelic
Berga nos hace una presentación de Processing, de sus antecedentes históri-
cos y del contexto en el cual apareció, y también una relación de recursos en
línea, tutoriales y libros que muestran la gran comunidad de práctica que se
ha generado alrededor de Processing. A pesar de que algunos de los recursos
pueden haber quedado obsoletos, se trata de una buena colección que puede
servir como punto de entrada para dar un paseo por el mundo de Processing.

Finalmente, os proponemos usar un libro llamado Hola�Mundo�con�Proces-


sing como posible referencia para introduciros en el lenguaje Processing. Es
un recurso del 2015 y, por lo tanto, no está actualizado en cuanto a las últi-
mas versiones de Processing, pero es muy interesante por su enfoque didácti-
co y los ejercicios planteados. El libro va introduciendo todos los conceptos
básicos de la programación estructurada y también presenta, sin mencionarlas
explícitamente, algunas de las ideas propias del pensamiento computacional,
como por ejemplo el proceso mental que hay que seguir antes de ponerse a
programar directamente.

Enlaces relacionados

Processing: <https://processing.org/>.

Processing en línea: <https://www.openprocessing.org/sketch/create>.

OpenProcessing: <https://www.openprocessing.org/>.

C.�Reas;�B.�Fry (2006). «Processing: programming for the media arts». AI & Society (vol. 20,
n.º 4, págs. 526-538). <https://link.springer.com/article/10.1007/s00146-006-0050-9>.

Q.�Berga (30 de abril de 2012). «Introducción a Processing» [en línea]. Mosaic, 96. ISSN:
1696-3296. <https://doi.org/10.7238/m.n96.1217>.

R.� Abascal� Mena;� E.� de� J.� López� Ornelas;� J.� S.� Zepeda� Hernández (2015).
Hola Mundo con Processing. México, DF: Universidad Autónoma Metropolita-
na. <http://hermes.cua.uam.mx/repositorio/libros.php?libro=abascalzepedalopez-hola-
mundoprocessing>.
© FUOC • PID_00276817 31 Pensamiento computacional para aprender a programar

Resumen

Aprender a programar no es sencillo, pero tampoco es imposible ni mucho


menos. Es una habilidad que combina entender bien los conceptos abstrac-
tos que fundamentan la programación con su puesta en práctica mediante el
desarrollo continuo de pequeños programas que van reforzando los conoci-
mientos adquiridos. Igual que practicar un deporte o cocinar, programar re-
quiere una práctica constante que permita ir consolidando conocimientos y
adquiriendo de nuevos, en un proceso de mejora continua. Y, como pasa con
los deportes o la cocina, los primeros pasos pueden ser frustrantes y es fácil
cansarse pronto, especialmente porque querríamos hacer cosas mucho más
avanzadas que seguramente están fuera de nuestro nivel.

Por ejemplo, la tenista Monica Seles fue una niña prodigio del tenis y llegó a ser
la número uno del mundo más joven de la historia en 1991. Era famosa por la
fuerza con que golpeaba la pelota, habilidad que trabajó desde muy pequeña,
cuando entrenaba con su padre y se dedicaba básicamente solo a esto, a golpear
la pelota lo más fuerte posible. Si entraba o no entraba, ya lo aprendería más
adelante: lo importante era desarrollar fuerza y habilidad a base de repetir los
mismos movimientos una y otra vez. De hecho, en su biografía, Monica Seles
explica que era conocida como «la niña que solo quería golpear la pelota».
Obviamente, un talento natural y un trabajo constante la llevaron en lo alto
del tenis mundial femenino, pero ella destaca aquellos golpes iniciales como
una cosa divertida.

Desgraciadamente, aprender a programar en el contexto de una carrera uni-


versitaria nunca ha sido una cosa divertida. La programación siempre se ha
enfocado como un instrumento necesario para otros muchos ámbitos, y se
ha elegido el lenguaje de programación en función de estos ámbitos, como
por ejemplo el lenguaje C para poder aprender después el diseño y funciona-
miento de sistemas operativos o redes de comunicación. Por sus característi-
cas, aprender a programar en lenguaje C no es ideal. Por otro lado, cuando
la programación pasa a ser el objetivo por sí mismo, entra en terrenos muy
teóricos y abstractos que asustan a la mayoría de estudiantes, que solo quieren
saber programar de manera práctica. Como ya hemos dicho, la literatura aca-
démica sobre la elección del primer lenguaje de programación para aprender a
programar incluye trabajos con resultados contradictorios a priori, puesto que
algunos trabajos indican que el primer lenguaje de programación aprendido
tiene influencia sobre el desarrollo posterior de los futuros programadores,
mientras que otros dicen que es irrelevante.

Seguramente, esto es así en parte porque programar es mucho más que cono-
cer la sintaxis y semántica de un lenguaje de programación. En este sentido, el
pensamiento computacional es clave para ser capaces de analizar un problema
© FUOC • PID_00276817 32 Pensamiento computacional para aprender a programar

de manera adecuada y determinar la secuencia de pasos que hay que seguir


para resolverlo correctamente. El primer lenguaje de programación es impor-
tante hasta cierto punto, porque, sin trabajar las competencias necesarias para
pensar adecuadamente al escribir programas, aprender a programar puede re-
sultar muy difícil, y todavía más si el lenguaje no lo facilita. Lenguajes como
Processing, que combinan la potencia de los lenguajes de programación tra-
dicionales con uno entorno de trabajo que favorece la creatividad y el regreso
instantáneo, pueden ser una buena opción para iniciarse en el mundo de la
programación. Esperamos que, con la colección de recursos mencionados en
este material docente y con otros que podréis encontrar en el aula, se os haga
bastante ameno iniciaros en el mundo de la programación.

También podría gustarte