Scratch es un lenguaje de programación visual de alto nivel basado en bloques y un sitio web dirigido principalmente a niños como herramienta educativa, con un público objetivo de edades comprendidas entre los 8 y los 16 años . [8] Los usuarios del sitio pueden crear proyectos en el sitio web utilizando una interfaz similar a un bloque. Scratch fue concebido y diseñado a través de subvenciones colaborativas de la National Science Foundation otorgadas a Mitchel Resnick y Yasmin Kafai . [9] Scratch es desarrollado por el MIT Media Lab y ha sido traducido a más de 70 idiomas, y se utiliza en la mayor parte del mundo. [10] Scratch se enseña y se utiliza en centros extraescolares, escuelas y universidades, así como en otras instituciones de conocimiento público. Al 15 de febrero de 2023, las estadísticas de la comunidad en el sitio web oficial del lenguaje muestran más de 123 millones de proyectos compartidos por más de 103 millones de usuarios y más de 95 millones de visitas mensuales al sitio web. [10] En total, se crearon más de mil millones de proyectos en total (incluidos proyectos no compartidos), superando el millón de proyectos en abril de 2024.
Scratch toma su nombre de una técnica utilizada por los disc jockeys llamada " scratching ", donde los discos de vinilo se juntan y se manipulan en un plato giratorio para producir diferentes efectos de sonido y música. Al igual que el scratching, el sitio web permite a los usuarios mezclar diferentes medios (incluidos gráficos, sonido y otros programas) de formas creativas mediante la creación y "remezcla" de proyectos, como videojuegos , animaciones , música y simulaciones . [11] [12]
La interfaz de Scratch se divide en tres secciones principales: un área de escenario , una paleta de bloques y un área de codificación para colocar y organizar los bloques en scripts que se pueden ejecutar presionando la bandera verde o haciendo clic en el código mismo. Los usuarios también pueden crear sus propios bloques de código, que aparecerán en la sección "Mis bloques".
El área del escenario muestra los resultados (por ejemplo, animaciones , gráficos de tortugas , ya sea en tamaño pequeño o normal, con una opción de pantalla completa también disponible) y las miniaturas de todos los sprites se enumeran en el área inferior. El escenario utiliza coordenadas x e y , siendo 0,0 el centro del escenario. [13]
Con un sprite seleccionado en la parte inferior del área de preparación, se pueden aplicar bloques de código arrastrándolos desde la paleta de bloques al área de codificación. La pestaña Disfraces permite a los usuarios cambiar el aspecto del sprite con un editor de vectores y mapas de bits para crear varios efectos, incluida la animación. [13] La pestaña Sonidos permite adjuntar sonidos y música a un sprite. [14]
Al crear sprites y también fondos, los usuarios pueden dibujar sus propios sprites manualmente, [13] elegir un sprite de la biblioteca o cargar una imagen. [14]
La siguiente tabla muestra las categorías de los bloques de programación:
Hay disponible un «Editor de escritorio» offline para Scratch 3.0 para Microsoft Windows 10 y versiones posteriores en Microsoft Store, macOS de Apple, ChromeOS y Android; [15] esto permite crear y ejecutar programas Scratch sin conexión. El editor sin conexión también se puede descargar en versiones anteriores, como Scratch 2.0 y Scratch 1.4 (aquí se encuentra un archivo de versiones anteriores).
En Scratch, las extensiones añaden bloques y funciones adicionales que se pueden utilizar en proyectos. En Scratch 2.0, todas las extensiones estaban basadas en hardware y Pen era una categoría normal. En Scratch 3.0 se añadieron extensiones basadas en software, como voces de texto a voz, junto con algunas nuevas extensiones basadas en hardware como micro:bit . Las extensiones se enumeran a continuación.
Muchas de las extensiones digitales de Scratch 3.0 solían ser categorías de bloques regulares que se trasladaron a la sección de extensiones para reducir el desorden. Entre ellas se incluyen:
También se han añadido nuevas extensiones digitales en colaboración con empresas comerciales, entre las que se incluyen:
Un artículo publicado en 2019 por la Universidad de Nueva York sostiene e ilustra, para codificar música con Scratch, "que los bloques de música y sonido tal como están implementados actualmente en Scratch pueden limitar y frustrar la creación de música significativa para los niños, la base principal de usuarios de Scratch". [16]
El laboratorio Scratch [17] muestra experimentos del equipo Scratch, cuyo objetivo es explorar si se pueden agregar nuevas funciones al sitio web completo en el futuro. Las funciones experimentales que se encuentran actualmente en desarrollo incluyen:
Scratch se utiliza en muchos entornos diferentes: escuelas, museos , bibliotecas , centros comunitarios y hogares. [18] [19] [11] Scratch está diseñado principalmente para usuarios de entre 8 y 16 años, pero lo utilizan todas las edades y tiene una base de usuarios adultos considerable a partir de 2009. [8] [20] Este amplio alcance ha creado muchas comunidades circundantes, tanto físicas como digitales. [10] En abril de 2020, el ranking Tiobe de los lenguajes de programación del mundo incluyó a Scratch en el top 20. Según Tiobe, hay 50 millones de proyectos escritos en Scratch, y cada mes se agregan un millón de proyectos nuevos. [21]
Scratch se utiliza como lenguaje introductorio porque la creación de programas interesantes es relativamente fácil y las habilidades aprendidas se pueden aplicar a otros lenguajes de programación como Python y Java .
Scratch no es exclusivamente para crear juegos. Con los elementos visuales que ofrece, los programadores pueden crear animaciones, textos, historias, música, arte y más. Ya existen muchos programas que los estudiantes pueden usar para aprender temas de matemáticas, historia e incluso fotografía. Scratch permite a los profesores crear lecciones conceptuales y visuales y tareas de laboratorio de ciencias con animaciones que ayudan a visualizar conceptos difíciles. En el ámbito de las ciencias sociales, los instructores pueden crear cuestionarios, juegos y tutoriales con elementos interactivos. El uso de Scratch permite a los jóvenes comprender la lógica de la programación y cómo construir y colaborar de forma creativa. [22]
Scratch se enseña en más de 800 escuelas y 70 universidades de la organización DAV en India y en todo el mundo. [23] [24]
En la educación superior, Scratch se utiliza en la primera semana del curso introductorio de informática CS50 de la Universidad de Harvard. [25] [26]
Los usuarios de Scratch se denominan "Scratchers". Los Scratchers tienen la capacidad de compartir sus proyectos y recibir comentarios. Los proyectos se pueden cargar directamente desde el entorno de desarrollo al sitio web de Scratch y cualquier miembro de la comunidad puede ver y descargar el código fuente completo para estudiarlo o para mezclarlo en nuevos proyectos. [27] [28] Los Scratchers también pueden crear estudios de proyectos, comentar, marcar como favoritos y "dar me gusta" a los proyectos de otros, seguir a otros miembros para ver sus proyectos y actividades, y compartir ideas. Los proyectos varían desde juegos y animaciones hasta herramientas prácticas. Además, para fomentar la creación y el intercambio entre los usuarios, el sitio web establece con frecuencia desafíos de "Estudio de diseño de Scratch". [29]
El equipo Scratch del MIT trabaja para garantizar que esta comunidad mantenga un ambiente amigable y respetuoso para todas las personas. [30] [31]
Los educadores tienen su propia comunidad en línea llamada ScratchEd, desarrollada y apoyada por la Escuela de Educación de la Universidad de Harvard. En esta comunidad, los educadores de Scratch comparten historias, intercambian recursos y hacen preguntas. [32]
Scratch Wiki es un recurso de soporte para Scratch y ofrece información sobre su sitio web, su historia y los fenómenos que lo rodean. Aunque cuenta con el apoyo del equipo Scratch (los desarrolladores de Scratch), está escrito principalmente por usuarios de Scratch (Scratchers) y se aloja de forma independiente del sitio web principal de Scratch. [33] Hay otros wikis en otros idiomas además del inglés disponibles en el dominio base de Scratch Wiki.
Los roles se muestran como una etiqueta debajo del nombre de usuario de un usuario en las páginas de perfil y en las publicaciones del foro. Para evitar el vandalismo , las cuentas nuevas tienen el rol de "New Scratcher", en lugar del rol habitual de "Scratcher". Se imponen algunas restricciones a las cuentas de New Scratcher, incluida la incapacidad de usar datos de la nube y un período de recuperación mínimo de 30 segundos entre la publicación de comentarios. [34] Después de un período de tiempo de interacción y creación de proyectos, una cuenta será elegible para obtener el rol de Scratcher. [35]
Los moderadores y desarrolladores oficiales de Scratch están etiquetados como parte del "Equipo Scratch" y generalmente tienen un asterisco al final de su nombre de usuario. [36] El sitio también tiene tipos especiales de cuentas para que los estudiantes y educadores usen Scratch en el aula. [37]
En agosto de 2020, GreatFire anunció que el gobierno chino había bloqueado el acceso al sitio web Scratch. En ese momento, se estimó que más de tres millones de personas en China lo usaban. [38] [ cita requerida ] El medio citó el hecho de que Macao , Hong Kong y Taiwán figuraban como países en el sitio web. [38] [39] También contienen Abjasia , Somalilandia , Osetia del Sur y las Islas Feroe como ubicaciones, pero solo parecen verse en las Estadísticas de Scratch en la sección Scratchers Worldwide, y nadie ha creado una cuenta en estos países.
El código fuente del editor de proyectos en las tres versiones principales, así como la mayor parte del sitio web actual, está alojado públicamente en GitHub en varios repositorios . [40] Scratch 3.0 está basado en JavaScript , 2.0 está programado en ActionScript , [4] y las versiones 1.x se basaron en Squeak, que a su vez se basa en Smalltalk -80. [41]
La versión 2.0 tenía un intérprete experimental basado en JavaScript que se estaba desarrollando en paralelo con la versión ActionScript. [42]
En la versión 3.0, los bloques de Scratch se implementan utilizando Blockly , una biblioteca de JavaScript desarrollada por Google para crear lenguajes de programación visual basados en bloques . [43] [44]
El 13 de mayo de 2014, un año después del lanzamiento de Scratch 2.0, un desarrollador anunció en los foros de Scratch que 2.0 se convertiría en código abierto. [45]
Los educadores de Scratch pueden reunirse en persona en reuniones de educadores de Scratch. En estas reuniones, los educadores de Scratch aprenden unos de otros y comparten ideas y estrategias que apoyan la creatividad computacional. [46]
Cada año, en mayo, se declara una "Semana Scratch", antes conocida como "Día Scratch". Se anima a los miembros de la comunidad a organizar un evento, grande o pequeño, en torno a este día para celebrar Scratch. Estos eventos se llevan a cabo en todo el mundo y se puede encontrar una lista en el sitio web de Día Scratch. La Semana Scratch es una serie centrada en las actividades Scratch en el sitio web de Scratch. [47]
Cada Día de los Inocentes , el equipo de Scratch les hará bromas a los usuarios y agregará huevos de Pascua; un ejemplo es que todos los bloques de eventos en los proyectos se convierten en versiones de gato de los mismos bloques.
A principios de la década de 2000, el grupo Lifelong Kindergarten (LLK) del MIT Media Lab estaba desarrollando lenguajes de programación visual dirigidos a niños. [48] En 2003, Mitchel Resnick , Yasmin Kafai y John Maeda recibieron una beca de la National Science Foundation para el desarrollo de un nuevo entorno de programación para que los niños se expresen con código. [9] El LLK, dirigido por Mitchel Resnick, en asociación con el equipo de Yasmin Kafai en UCLA trabajó en estrecha colaboración con Computer Clubhouses en Boston y Los Ángeles para desarrollar Scratch, basando su diseño en las prácticas y la dinámica social de estos centros juveniles extraescolares. [9] Comenzó como un lenguaje de programación básico, sin categorías etiquetadas ni bandera verde. [49] Similar a AgentSheets [50] Scratch empleó conceptos de programación táctil más tarde conocida como programación basada en bloques. Scratch fue creado con la intención de enseñar a los niños a programar. [49]
La filosofía de Scratch fomenta el intercambio, la reutilización y la combinación de código, como lo indica el lema del equipo, "Imagina, programa, comparte". [51] Los usuarios pueden crear sus propios proyectos o pueden optar por " remezclar " el proyecto de otra persona. Los proyectos creados y remezclados con Scratch están licenciados bajo la Licencia Creative Commons Attribution-Share Alike . [52] Scratch le da crédito automáticamente al usuario que creó el proyecto y el programa originales en la parte superior de la página del proyecto. [11]
Scratch se desarrolló a partir de la interacción continua con los jóvenes y el personal de los Computer Clubhouses. El uso de Scratch en los Computer Clubhouses sirvió como modelo para otros centros extraescolares, demostrando cómo los entornos de aprendizaje informal pueden apoyar el desarrollo de la fluidez tecnológica. [53]
Scratch 2.0 se lanzó el 9 de mayo de 2013. [13] La actualización cambió la apariencia del sitio e incluyó un editor de proyectos en línea y un editor fuera de línea. [54] Ahora se podían definir bloques personalizados dentro de los proyectos, junto con varias otras mejoras. [55] El editor fuera de línea de Scratch 2.0 se podía descargar para Windows, Mac y Linux directamente desde el sitio web de Scratch, aunque más tarde se eliminó el soporte para Linux. La versión móvil no oficial tuvo que descargarse desde los foros de Scratch. [56] [57]
Scratch 3.0 fue anunciado por primera vez por el equipo Scratch en 2016. Se lanzaron varias versiones alfa públicas entre esa fecha y enero de 2018, después de lo cual se lanzaron las versiones "Preview" pre-beta. [58] Una versión beta de Scratch 3.0 fue lanzada el 1 de agosto de 2018. [59] para su uso en la mayoría de los navegadores; con la notable excepción de Internet Explorer . [60]
Scratch 3.0, la primera versión 3.x, se lanzó el 2 de enero de 2019. [61] El 28 de junio de 2023, [62] el encabezado y los enlaces en el sitio web de Scratch cambiaron de azul a violeta, y se introdujeron nuevos colores de bloque opcionales de alto contraste, para que las personas daltónicas pudieran leer y usar el sitio más fácilmente. [63]
El 11 de marzo de 2019, Scratch se separó del MIT Media Lab . [64]
En Scratch 1.4, un archivo *.sb era el formato de archivo utilizado para almacenar proyectos. [65]
Un archivo *.sb se divide en cuatro secciones:
Scratch 2.0 utiliza el formato de archivo *.sb2. Se trata de archivos zip que contienen un archivo .json , así como el contenido del proyecto Scratch, incluidos los sonidos (guardados como .wav) y las imágenes (guardadas como .png). [68] Cada tipo de archivo, excepto el proyecto.json, se almacena como un número, comenzando en 0 y contando hacia arriba con cada archivo adicional. El archivo de imagen etiquetado como "0.png" siempre es una imagen blanca de 480x360, pero "0.wav" seguirá siendo el archivo más antiguo que no se haya eliminado.
La versión experimental de ScratchX utilizó el formato de archivo .sbx. [69]
Scratch 3.0 utiliza el formato *.sb3, que es muy similar a *.sb2, con la diferencia de que el sonido es el adecuado. [70]
Aunque el sitio web principal de Scratch ahora ejecuta solo la versión actual (Scratch 3.0), los editores fuera de línea para Scratch 2.0 (y el anterior Scratch 1.4) aún están disponibles para descargar [71] y se pueden usar para crear y ejecutar juegos localmente. [72] Todavía es posible cargar proyectos desde el lanzador de Scratch 2.0, que se convierten inmediatamente a Scratch 3.0 cuando se cargan en el sitio principal. [73] También hay una versión fuera de línea de Scratch 3.0.
El editor de Scratch 1.4 y versiones anteriores se escribió en Squeak , mientras que su visor de proyectos en línea se escribió en Java y luego se agregó un reproductor escrito en Adobe Flash . [41] [74] Scratch 2.0 dependía de Adobe Flash para la versión en línea y Adobe AIR para el editor fuera de línea. Estos han caído en desuso y Adobe dejó de brindarles soporte a fines de 2020. [75] [76]
En Scratch 2.0, el área del escenario se encuentra en el lado izquierdo, con la paleta de bloques de programación en el medio y el área de codificación a la derecha. Las extensiones se encuentran en la sección "Más bloques" de la paleta. [20]
La versión web de Scratch 2.0 introdujo el guardado automático de proyectos. [77] : 23
La paleta de bloques en Scratch 2.0 está formada por secciones discretas que no se pueden desplazar de una a otra; la siguiente tabla muestra las diferentes secciones:
Scratch 2.0 introdujo la mochila, que se puede usar para transferir scripts, sprites, disfraces y sonidos entre proyectos. [77] : 14–15
Scratch 2.0 cambió la forma en que se importaban los sonidos, por lo que muchos sonidos de Scratch 1.4 dejaron de funcionar. (El archivo del proyecto se cambió de *.sb a *.sb2).
Scratch utiliza programación basada en eventos con múltiples objetos activos llamados sprites . [13] Los sprites se pueden dibujar, como gráficos vectoriales o de mapa de bits , desde cero en un editor simple que es parte de Scratch, o se pueden importar desde fuentes externas. Scratch 3.0 solo admite matrices unidimensionales , conocidas como "listas", y se admiten escalares de punto flotante y cadenas , pero con una capacidad limitada de manipulación de cadenas. Existe un fuerte contraste entre las potentes funciones multimedia y el estilo de programación multiproceso y el alcance bastante limitado del lenguaje de programación Scratch.
Scratch 2.0 no trata los procedimientos como estructuras de primera clase y tiene opciones limitadas de E/S de archivos con el Protocolo de extensión Scratch 2.0, una característica de extensión experimental que permite la interacción entre Scratch 2.0 y otros programas. [78] El protocolo de extensión permite la interacción con placas de hardware como Lego Mindstorms [79] o Arduino . [80] Scratch 2.0 también tiene las siguientes características:
Un lenguaje de programación visual más avanzado inspirado en Scratch es Snap !, que incluye procedimientos de primera clase (sus fundamentos matemáticos también se denominan cálculo lambda ), listas de primera clase (incluidas listas de listas) y sprites verdaderamente orientados a objetos de primera clase con herencia de creación de prototipos y sprites anidados, que no forman parte de Scratch. [81] Snap ! (anteriormente "BYOB") fue desarrollado por Jens Mönig [82] [83] con documentación proporcionada por Brian Harvey [84] [85] de la Universidad de California, Berkeley y se ha utilizado para enseñar el curso introductorio "La belleza y la alegría de la informática" en CS para estudiantes que no se especializan en CS. [86] Ambos fueron miembros del equipo Scratch antes de diseñar "Snap ! ". [87] [20]
En julio de 2014, ScratchJr se lanzó para iPad y, en 2016, para Android. Aunque está fuertemente inspirado en Scratch y codirigido por Mitch Resnick, es una versión completamente nueva diseñada para niños más pequeños, de entre 5 y 7 años. [88]
Debido a la naturaleza de código abierto de Scratch, la comunidad ha creado numerosas extensiones y bifurcaciones del navegador que tienen como objetivo mejorar o modificar la experiencia del usuario. ScratchTools y Scratch Addons son algunos ejemplos de extensiones de navegador de código abierto que agregan muchas actualizaciones y nuevas funciones al sitio web y al editor de Scratch. [89]
TurboWarp es una bifurcación del editor Scratch 3.0 que compila los bloques Scratch en código JavaScript cuando se ejecuta un proyecto, lo que significa que los proyectos pueden ejecutarse hasta 200 veces más rápido, con opción de 60 FPS, resultados que varían mucho según el proyecto, la configuración y los complementos. [90] [91] TurboWarp también puede exportar proyectos a archivos independientes HTML5 , Bundle (macOS) y EXE . [92]
Los usuarios también pueden crear sus propias extensiones para Scratch 3.0 usando JavaScript. [93] Aunque la intención de Scratch 3.0 era permitir que los usuarios desarrollaran extensiones JavaScript no oficiales, se abandonó debido a riesgos de moderación. Como resultado, el sitio oficial no permite agregar extensiones JavaScript, pero varias modificaciones de Scratch sí lo permiten.
Antes de la versión 2.0, se crearon varios forks de Scratch [94] [ se necesita una mejor fuente ] utilizando el código fuente de Scratch 1.4. Estos programas generalmente solo incluían algunos bloques adicionales que no estaban presentes en Scratch. [95] [ se necesita una mejor fuente ]