Scratch (lenguaje de programación)
# Scratch (lenguaje de programación)

Scratch es un motor de videojuegos desarrollado por MIT Media Lab. Su principal característica consiste en que permite el desarrollo de habilidades mentales mediante el aprendizaje de la programación sin tener conocimientos profundos sobre el código. Sus características ligadas al fácil entendimiento del pensamiento computacional han hecho que sea muy difundido en la educación de niños, adolescentes y adultos.

## Origen del lenguaje

En el ámbito de la ingeniería informática, scratching quiere decir reutilizar código, el cual puede ser usado de forma beneficiosa y efectiva para otros propósitos y fácilmente combinado, compartido y adaptado a nuevos escenarios, lo cual es una característica clave de Scratch. De esta forma, cualquier usuario puede descargarse y trabajar sobre proyectos públicos subidos y desarrollados por otros usuarios. También se reconoce a los participantes que construyeron y crearon el programa original. El nombre es un derivado de la técnica de turntablism, scratching, es decir, mezclar sonidos, relacionando de este modo la facilidad de mezclar sonidos con la facilidad de mezclar proyectos creados con Scratch.

El uso de Scratch en estos clubes sirvió de modelo para otros centros post - educacionales demostrando cómo los entornos de aprendizaje pueden apoyar el desarrollo de la tecnología, permitiendo a los jóvenes diseñar y programar proyectos que son importantes para ellos y sus comunidades.

La primera versión de Scratch, disponible solo en versión de escritorio, fue desarrollada y publicada en 2003 conjuntamente por el MIT Media Lab, dirigido por Mitchel Resnick, y la compañía Playful Invention Company , con sede en Montreal y cofundada por él junto a Brian Silverman y Paula Bonta. El propósito fue ayudar a la gente joven, principalmente con edades a partir de los ocho años, a aprender a programar.

Scratch 2.0 se publicó en mayo de 2013. A partir de esta versión, se permite definir "bloques personalizados" dentro de los proyectos.

## Uso educativo

Scratch se volvió popular en Reino Unido a través de los Code Clubs. Estos empezaron a usar Scratch como lenguaje introductorio por su relativa facilidad para desarrollar programas y porque las habilidades adquiridas mediante Scratch, se pueden aplicar a otros lenguajes básicos de programación como Python y Java. Code Clubs, fundado en 2013, es una iniciativa formada por una extensa comunidad de voluntarios, profesores y compañeros, para el desarrollo de clubs de codificación gratuitos, donde los niños de entre 9 y 13 años pueden construir y compartir sus ideas, conocimientos importantes y creaciones, de manera extraescolar. La empresa ha acabado expandiéndose internacionalmente, existiendo más de 13,000 Code Clubs en todo el mundo. Además, la mayoría de sus proyectos han sido traducidos en 28 idiomas diferentes. Los voluntarios, ya sean programadores o desarrolladores de software, invierten su tiempo ejecutando sesiones de Code Clubs, transmitiendo sus habilidades de programación y asesorando a los jóvenes estudiantes,a través de un entrenamiento en línea. Los niños crean sus propios videojuegos, animaciones y sitios web, y además, aprenden a usar la tecnología de manera creativa y lúdica, para ampliar su conocimiento.

Una manera de empezar a usar el programa en clase, es aprender basándose en retos con juegos y pequeños proyectos, donde los niños puedan desarrollar su creatividad. A través de tutoriales del MIT (Instituto de Tecnología de Massachusetts), se puede aprender desde cero a programar con Scratch, utilizando la guía de iniciación creada por el mismo Instituto. También existen otros tutoriales de iniciación a la programación para niños como por ejemplo: Cartoon Network o CSfirst de Google. La edad ideal para iniciarse en su programación en niños es entre 8 y 16 años, aunque también hay una versión para los más pequeños de 5 a 8 años, llamada Scratch Junior, en formato tableta.

Con esta aplicación, los niños aprenden conceptos relacionados con los ordenadores y otras habilidades relacionadas con las nuevas tecnologías u otras asignaturas. Hay que tener en cuenta que Scratch no sirve solo para la creación de programas.Puesto que proporciona muchos componentes visuales, los programadores pueden crear historias animadas o minivideojuegos como por ejemplo The Pizza Dude Haiku, o Gemclan. Los estudiantes que quieren especializarse en matemáticas pueden usar Lemonade Stand, Dino Odd and Even, Data Workshop, o The Ellipserator el cual se orienta principalmente a la geometría.La flexibilidad que ofrece Scratch permite a los docentes crear lecciones conceptuales muy visuales, ya que es una herramienta para crear animaciones que ayudan a visualizar conceptos difíciles como podrían ser la mitosis celular, el ciclo del agua, el Termómetro de Galileo o un experimento sobre la Ley de elasticidad de Hook. En el ámbito de las ciencias sociales, los docentes pueden crear concursos, juegos y tutoriales que estimulen la mente e interactúen con el estudiante.El uso de Scratch permite a las personas jóvenes a entender la lógica básica de la programación, y colaborar y construir proyectos creativamente. Scratch también permite a los estudiantes desarrollar proyectos con carácter educativo y a la vez con interés personal para ellos, lo que les proporciona una herramienta práctica para auto expresarse después de aprender a usarlo.

El profesor David J. Malan de la Universidad de Harvard prefiere usar Scratch sobre los lenguajes de programación de uso general, como Java o C, en su curso introductorio de ciencias de la computación. Sin embargo, hay un beneficio limitado en una educación de nivel universitario. Malan cambia el lenguaje de su curso a C después de la primera semana.

Para trabajar con Scratch, hay dos formas de hacerlo: en línea y fuera de línea.

En la modalidad en línea, el usuario puede acceder desde el ordenador conectándose a Internet. Por su parte, en la versión fuera de línea se debe descargar el programa y se podrá usar sin conexión a Internet. Además, la página web permite compartir proyectos creados por uno mismo y también se pueden ver proyectos realizados por otras personas, lo que puede facilitar el desarrollo de nuevas ideas o contenidos. Respecto a cuál, la versión en línea se encuentra actualizada, además permite compartir y modificar los programas con otros usuarios.

Por otra parte, Scratch propone recursos tanto para los docentes como para los alumnos. Entre ellos destacan:

* Recursos para docentes: ofrece una guía donde se explica cómo programar las clases y talleres con Scratch así como actividades, estrategias y técnicas para incluir la programación en las aulas.
* Recursos para alumnado: proporciona diversos tutoriales para introducirse en el manejo de la plataforma, tarjetas de programación, así como páginas webs para el visionado de experiencias educativas con Scratch.

La comunidad de Scratched para docentes permite a estos seguir aprendiendo y colaborando con otros docentes de otras partes del mundo.

## Experiencia educativa con Scratch

Scratch con su lenguaje de programación visual nos permite desarrollar el pensamiento computacional (PC), cuya utilización ha ido creciendo en los últimos años, siendo cada vez de mayor interés para los jóvenes, debido a la motivación que supone el poder crear entre otras cosas, sus propios videojuegos o animaciones.

Un ejemplo de ello, se aprecia con la creación del Club de los Jóvenes Programadores de la universidad de Valladolid entre los que se encuentra Antonio García Vicente, un niño de 11 años que ha programado más de 100 videojuegos y realizado varias charlas sobre programación, como la de TEDxYouth Valladolid donde presenta algunas experiencias educativas para las que utiliza el programa Scratch, mostrando con ello cómo el programa permite desarrollar contenidos curriculares y experiencias educativas muy interesantes. Entre ellas se encuentra un juego de preguntas y respuestas con el que se pretenden trabajar los huesos del cuerpo humano; otro sobre los planetas del sistema solar con sensor de vídeo, con el que los alumnos (jugadores) pueden aprenden los nombres de estos, donde aparecen los aciertos y fallos que se suceden o incluso es posible la creación de instrumentos a gran escala que cobran vida.

## Beneficios del aprendizaje de programación con Scratch en los niños

La utilización de la aplicación Scratch mediante la programación, permite sobre todo desarrollar las habilidades mentales. Favorece la comprensión de los fundamentos de programación sin profundizar en el código y el pensamiento lógico y algorítmico.

Permite la construcción de proyectos creativos que conectan los intereses educativos y personales del alumnado. Por tanto, se trata de una herramienta muy efectiva para desarrollar la capacidad de expresión, una vez que saben utilizarlo. También consigue que se comparta, concepto fundamental en el ámbito de las redes sociales: aprenden a compartir sus producciones, programaciones y aplicaciones con el resto de compañeros y compañeras de clase.

Pero el uso de Scratch no se ciñe exclusivamente a contenidos informáticos, también permite al alumnado asimilar otro tipo de habilidades como son:

* Pensamiento crítico y solución de problemas: aprender a programar desarrolla el razonamiento crítico y el pensamiento sistémico. Así mismo, diseñar un proyecto consiste en partir de una idea, establecer unos pasos y ponerlo en marcha. En este camino se enfrentarán a diversos problemas que podrán solucionar de manera experimental.
* Expresión y comprensión oral y escrita: estas habilidades lingüísticas tan esenciales en todas las etapas de nuestros sistema educativo podrán ser desarrolladas con Scratch.
* Creatividad y autonomía: este lenguaje pone énfasis en el desarrollo de la creatividad permitiendo al alumnado crear sus propias historias y proyectos. Además, con el tiempo el alumnado será más autónomo en su aprendizaje.
* Regulación de las emociones: la programación con Scratch es efectiva para ayudar al estudiante a aprender a controlar diversas emociones. Durante el diseño de proyectos y su programación se desencadenan numerosas emociones como alegría, miedo, sorpresa o interés.

## Interfaz de usuario

De izquierda a derecha, en la zona superior izquierda de la pantalla hay un escenario, que muestra los resultados del proyecto actual (animaciones, gráficos tortuga, etc., en tamaño reducido o normal, estando también disponible un modo a pantalla completa) y todas la miniaturas de los sprites (llamados "objetos" en la versión en castellano de Scratch) listadas en la zona inferior. El escenario usa coordenadas x e y, siendo el punto (0,0) el centro del mismo.

Existen muchas formas de crear objetos y fondo personalizados. Por un lado, los usuarios pueden dibujar sus propios objetos manualmente con el propio editor de Scratch. Es posible también elegir un objeto desde la biblioteca de objetos de ejemplo que contiene Scratch, de creaciones pasadas del usuarios, desde una imagen, vía webcam o desde un clip art.

Una vez seleccionado un objeto en la parte inferior izquierda de la pantalla, se le pueden aplicar bloques de instrucciones simplemente arrastrándolos desde la paleta de bloques hacia el área derecha de la pantalla, que contiene todos los pasos asociados con el objeto seleccionado. Bajo la pestaña "Programas" se listan todos los bloques de instrucciones disponibles en las siguientes categorías: Movimiento, Apariencia, Sonido, Lápiz, Datos, Eventos, Control, Sensores, Operadores y Más Bloques, como se ve en la tabla a continuación. Cada instrucción se pueden probar individualmente simplemente haciendo doble clic sobre ella.

| Categoría | Notas | Categoría | Notas |
| - | - | - | - |
| Movimiento | Mueve objetos y cambia ángulos. | Eventos | Contiene manejadores de eventos situado al principio de cada grupo de instrucciones. |
| Apariencia | Controla el aspecto visual del objeto, añade bocadillos de habla o pensamiento, cambia el fondo, ampliar o reducir. | Control | Sentencian condicionales "Si-sino", "Por siempre", "repetir" y "detener programa". |
| Sonido | Reproduce ficheros de audio y secuencias programables. | Sensores | Los objetos pueden interactuar con el ambiente que ha creado el usuario. |
| Lápiz | Control del ancho, color e intensidad del lápiz. | Operadores | Operadores matemáticos, generador aleatorio de números, sentencias "y" y "o" que comparan posiciones de los objetos. |
| Datos | Creación de variables y listas. Hay variables de la nube, pero aún no hay listas de nube. Se podrían implementar en la tercera versión de Scratch. | Más Bloques | Control de bloques y dispositivos externos. |

Además de la pestaña "Programas", hay dos pestañas adicionales: "Disfraces" y "Sonidos". Una barra expandible de la derecha es el área de Ayuda.

Al lado de la pestaña Procesos, está la pestaña Disfraces, donde el usuario puede cambiar la apariencia del sprite con el fin de crear diversos efectos, incluyendo la animación. Y la última pestaña es la pestaña Sonidos, donde los usuarios insertan sonidos y música para un objeto.

En comparación con las versiones anteriores de Scratch, en la versión 2.0 las áreas se han reorganizado, ya que previamente la paleta de bloques estaba en la zona izquierda, el área de sprites seleccionada y el área de scripts asociada con un sprite seleccionado se encontraban en el centro de la pantalla, y el área del escenario con sprites en miniaturas estaban enlistadas abajo, en la zona derecha de la pantalla.

Hay que tener en cuenta que los archivos generados con Scratch con bastantes elementos son muy pesados por lo que el programa puede no responder con rapidez, esto dependerá siempre del equipo con el que se está trabajando, las condiciones de la Red si estás trabajando en línea, etc.

### Nueva versión de Scratch

En 2018 se publicó la versión 3.0 de Scratch. Presenta variadas novedades, pero se sigue manteniendo la esencia de Scratch 2.0. La nueva interfaz de Scratch 3.0 ha abandonado Adobe Flash para basarse en HTML5. Esto permite que esta versión sea compatible para cualquier tipo de dispositivo. Otro de los principales cambios en la interfaz del programa es el aumento de tamaño de los bloques de colores que hace más fácil su movimiento en la pantalla. Respecto a la versión anterior, Scratch 3.0 presenta algunas modificaciones en cuanto a su organización. El menú de opciones se ha simplificado y el editor se ha cambiado a la zona derecha de la pantalla. Así, toda la parte inferior de la pantalla se reserva para la paleta de bloques. Además, esta versión ha sustituido los mapas de bits por los gráficos vectoriales permitiendo así que los objetos no aparezcan pixelados si se amplían.

Entre las novedades que presenta Scratch 3.0 podemos destacar la introducción de nuevos personajes y objetos para los diseños y la amplia variedad de sonidos incorporados, con la nueva posibilidad de poder silenciarlos. Los disfraces y la edición de personajes funcionan de la misma manera pero se ha innovado su estética.

Así quedaría la nueva distribución de grupos de bloques en la versión de Scratch 3.0:

| Categoría | Notas | Categoría | Notas |
| - | - | - | - |
| Movimiento | Permite mover y girar el objeto. | Sensores | Detecta cuándo el objeto interacciona con el entorno. |
| Apariencia | Permite al objeto hablar, pensar o cambiar su apariencia. | Operadores | Operadores matemáticos (+, -, *, /), generador aleatorio de números, comparadores, sentencias «y», «o» y negaciones. |
| Sonido | Todo lo relacionado con efectos de sonido del programa. | Variables | Creación de variables y su asignación en el programa. |
| Eventos | Permite comenzar una secuencia de acciones cuando ocurre un evento determinado (por ejemplo pulsar la tecla «A»). | Mis bloques | Permite crear funciones propias |
| Control | Son los condicionantes. «Si-sino», «Repetir x veces», «Esperar», «Detener»… |

### Instalación de Scratch 3.0

La versión Scratch 3.0 permite utilizar dicha aplicación en prácticamente cualquier dispositivo. Funciona a través de un navegador web, por lo que se utiliza en tableta, pc o incluso teléfono inteligente. Solamente basta con acceder a la web y ponerse manos a la obra. Para windows y Mac existe una “versión de escritorio” que permite utilizarse sin conexión a internet, en el caso de que no se disponga de esta.

Respecto la instalación de la versión fuera de línea de Scratch, en Windows y MacOS, solo habría que descargar Scratch Desktop y ejecutar el archivo.

La versión en línea de Scratch permite crear una cuenta gratis mediante la cual se podrá guardar los proyectos y compartirlos con otros usuarios. Para ello, solo hay que registrarse en la página web de Scratch, crear el proyecto y guardarlo.

### Inicios

Para comenzar desde cero en este lenguaje de programación, el alumnado podría visualizar los tutoriales del MIT que son considerados una herramienta muy completa para iniciarse en Scratch. La nueva versión 3.0 potencia este recurso, el cual permite practicar mientras se visualiza el vídeo o las imágenes animadas. Además, es necesario iniciar al alumnado en el conocimiento de la interfaz y de sus opciones. Para ello, desde el MIT se ofrecen proyectos simples de diferentes áreas en los que el alumnado puede modificar libremente ese proyecto o añadir elementos.

Además existen varios medios para aprender y comenzar con Scratch como:

* La Hora del Código: se trata de tutoriales de una hora que permiten aprender a programar y comprender los fundamentos básicos de programación.
* CSFirst, un proyecto de Google gratuito, que favorece la enseñanza-aprendizaje de programación de forma divertida.
* Cards o tarjetas de Scratch: estas tarjetas gráficas nos presentan el código que debemos utilizar para obtener ciertos movimientos o efectos. Permiten apoyar visualmente el aprendizaje de nuestro alumnado.
* Youtube es ofrece una cantidad de recursos para aprender programación con Scratch. Existen muchos tutoriales y canales de Youtube para aprender este lenguaje de programación.
* ProgramoErgoSum: es una iniciativa sin ánimo de lucro para acercar la programación informática a todas las edades. Presenta una sección dedicada a Scratch con recursos como tutoriales y vídeos para el aprendizaje.
* Dr. Scratch: esta aplicación web supone una herramienta poderosa para analizar y evaluar los proyectos Scratch, así como obtener retroalimentación que permita mejorarlos.

## Comunidad de usuarios

Scratch se utiliza en muchos entornos diferentes: escuelas, museos, bibliotecas, centros comunitarios y hogares. Sus usuarios son en su mayoría niños de edades comprendidas entre 9-16 años. Scratch también se utiliza en algunas clases de introducción de la informática (incluyendo la clase de informática introductoria de Harvard).

Hay un denominado "Día de Scratch" anual declarado en mayo de cada año. Los miembros de la comunidad se les anima a realizar un evento, grande o pequeño, en o cerca de ese día, que celebra Scratch. Estos eventos se llevan a cabo en todo el mundo, y se puede encontrar una lista en el sitio web del Día de Scratch.

El Centro de la Juventud Talentosa (CTY) de la Universidad Johns Hopkins ofrece un curso en línea sobre la programación Scratch para los estudiantes de grado 6 y superior a través del programa CTY Online.

Se hicieron estudios empíricos de varias características y fueron descartados los que interfirieron con el aprendizaje intuitivo, mientras que fueron guardados los que animaron a principiantes y le hicieron fácil para que exploren y aprendan. Algunos de los resultados son sorprendentes, haciendo Scratch bastante diferente de otros lenguajes de enseñanza (como BASIC, Logo, o Alice).

### Comunidad en línea

El lema de la comunidad en línea de Scratch "Imagina, Programa, Comparte" indica que el compartir y los aspectos sociales de la creatividad son partes importantes de la filosofía detrás de Scratch. Algunos miembros influyentes de la comunidad en línea de Scratch hicieron grandes progresos personales en métodos innovadores con la programación de scratch.

Los proyectos Scratch no se ven como "cajas negras", sino como objetos a remezclar para hacer nuevos proyectos. Los proyectos se pueden cargar directamente desde el entorno de desarrollo al sitio web de Scratch y cualquier miembro de la comunidad puede descargar su código fuente completo para estudiarlo o remixarlo en nuevos proyectos. Los miembros también pueden crear proyectos de estudio, comentar, etiquetar, favoritos y "amar" proyectos de otros, seguir a otros miembros para ver sus proyectos y actividades y compartir ideas. El rango de proyectos van desde juegos animaciones hasta herramientas prácticas. No se permiten salas de chat. Todos los proyectos del sitio web se comparten bajo una licencia de Creative Commons y una licencia compartida y pueden ser reproducidos en un 100% navegador web con Flash Player.

El sitio web recibe más de 125 millones de páginas vistas por mes y al 12 de julio de 2016, tenía 12 561 189 miembros registrados y más de 15 700 000 proyectos y creciendo rápidamente. En 2017 se puso a disposición un conjunto de datos longitudinales de los cinco años de actividad pública en la comunidad.

El sitio web establece con frecuencia desafíos "Scratch Design Studio" para fomentar la creación y el intercambio, proporcionándole a los usuarios un concepto básico de diseño. Hay páginas de inicio personalizadas para México e Israel que muestran contenido local en algunas secciones de la página principal. Scratch ha participado en varias horas de Código. También hay sitios web Scratch locales independientes en países como Portugal y Emiratos Árabes Unidos. En 2008, la plataforma comunitaria Scratch en línea (denominada "ScratchR") recibió una mención honorífica en el Ars Electronica Prix. También hay una comunidad en línea para los educadores, llamada ScratchEd. Esta comunidad intercambia recursos, coordina encuentros grupales y permite a los educadores conectarse entre sí.

En abril de 2020, Scratch se convirtió en el primer lenguaje de programación creado para niños en entrar al top 20 del índice TIOBE, que mide la popularidad de los lenguajes de programación.

## Derivados

La versión actual de Scratch no trata a los procedimientos como estructuras de primera clase y con Scratch 2.0 Extension Protocol tiene opciones limitadas de archivos de E/S; una característica experimental de extensión que permite la interacción entre Scratch 2.0 y otros programas. El protocolo de extensión permite la interfaz con placas de hardware como Lego Mindstorms o Arduino. Además, Scratch 2 solo admite vectores unidimensionales, conocidas como "listas". A partir de la versión 1.4 se admiten variables de puntos flotantes y cadenas de punto flotante, pero con capacidad limitada de manipulación de cadenas. Existe un fuerte contraste entre las poderosas funciones multimedia y el estilo de programación multihilo y el limitado alcance del lenguaje de programación Scratch. El 6 de mayo de 2013, Scratch cerró durante tres días para actualizar a Scratch 2.0. La actualización cambió la apariencia del sitio e incluyó un editor de proyectos en línea. A la fecha marzo de 2017 está disponible una nueva versión beta del editor en línea de Scratch 2. Esta versión reemplazará al antiguo Scratch 2.0.

Se han creado una serie de derivados Scratch denominados Scratch Modifications (Modificaciones de Scratch), utilizando el código fuente de Scratch versión 1.4. Estos programas son una variante de Scratch que normalmente incluyen algunos bloques adicionales o cambios en la GUI.

En julio de 2014, fue lanzado un programa llamado Scratch Jr para iPad. Aunque fue muy inspirado por Scratch y codirigido por Mitch Resnick, el creador original de Scratch, es sin embargo una reescritura completa diseñada para niños más pequeños.

Algunos de ellos, además, introducen cambios en el enfoque subyacente a la informática, como el lenguaje Snap!, con procedimientos de primera clase (sus fundamentos matemáticos se denominan también cálculo lambda), listas de primera clase (incluidas listas de listas) y primera clase realmente orientada a objetos Sprites con prototipos de herencia, y sprites nestable, que no son parte de Scratch. Snap! (su versión anterior fue llamada BYOB) fue desarrollado por Jens Mönig con la documentación proporcionada por Brian Harvey de la Universidad de California en Berkeley y se ha utilizado para enseñar un curso de introductorio "la belleza y la alegría de la computación" de CS dirigido a los estudiantes no principales de la CS.

El código fuente de Scratch y sus derivados se basan en Squeak, que a su vez se basa en Smalltalk-80. La versión 2 de Scratch está implementada en ActionScript, con un intérprete experimental basado en JavaScript siendo desarrollado en paralelo.

Catrobat es un lenguaje de programación visual para teléfonos inteligentes y tabletas inspirado en Scratch. Pocket Code es una aplicación con la que se puede crear, descargar y cargar programas creados en Catrobat. Catrobat y Pocket Code se publican bajo licencias de código abierto.

## Ventajas e inconvenientes

A nivel educativo, encontramos una serie de ventajas en relación con esta herramienta que vamos a puntualizar a continuación:

* Permite el desarrollo de los procesos de pensamientos y habilidades mentales en los educados.
* Ayuda a introducirse en la programación.
* Los programas se ejecutan en el propio PC o sobre el navegador de internet.
* Dispone de una web social en la que participa un amplio número de personas que a su vez, proporciona soporte .
* Educativamente hablando, los beneficios son una gran cantidad pero se podría destacar el desarrollo del pensamiento lógico en el alumnado, fomenta la creatividad, mejora la habilidad de comprensión de los niños, facilita el pensamiento sistémico y, en general, mejora el rendimiento escolar.

Entre los inconvenientes que existen en el uso de Scratch, encontramos los siguientes:

* En algunas ocasiones, la velocidad para ejecutar algunas funciones no es la deseada. Si se programa añadiendo órdenes muy complejas el archivo final puede presentar demasiado peso.
* Algunos estudios apuntan que aprender Scratch no significa necesariamente adquirir pensamiento computacional. Algunos alumnos que utilizan con facilidad la herramienta, muestran dificultades para realizar tareas de programación fuera de ella cuando desaparecen los bloques. Saber programar tiene dos componentes: saber resolver un problema en los términos que el ordenador comprende (pensamiento computacional) y saber expresar esa solución con la sintaxis adecuada. Con respecto a la sintaxis, los bloques de Scratch tienen una lógica propia que podría no ser fácilmente trasladable a otros lenguajes
* Scratch en 2008.
* Mitchel Resnick en 2011.
