Snap ! (anteriormente Build Your Own Blocks) es un lenguaje de programación gráfica educativo gratuito basado en bloques y una comunidad en línea . Snap permite a los estudiantes explorar, crear y remezclar animaciones interactivas, juegos, historias y más, mientras aprenden sobre ideas matemáticas y computacionales. Aunque inspirado en Scratch , Snap ! tiene muchas funciones avanzadas. El editor de Snap ! y los programas creados en él son aplicaciones web que se ejecutan en el navegador (como Scratch ) sin necesidad de instalación . [ Nota 2 ] Está construido sobre Morphic.js , [ 2 ] una GUI de Morphic , escrita por Jens Mönig como una "capa intermedia" entre Snap! y JavaScript "puro".
Interfaz de usuario
En Snap !, la pantalla está organizada en tres columnas redimensionables que contienen cinco regiones: el selector de grupos de bloques (parte superior de la columna izquierda), la paleta de bloques (columna izquierda), el área principal (columna central) y el área de escenario (parte superior de la columna derecha), con el selector de sprites (también llamado corral de sprites) que muestra miniaturas de sprites debajo. [ Nota 3 ]
En el área de trabajo, cuyo tamaño se puede ajustar de forma interactiva, se muestran los resultados gráficos de los scripts que se ejecutan en el área de scripts y/o de los bloques individuales seleccionados mediante doble clic en cualquier paleta. Los bloques individuales se pueden arrastrar desde la paleta al área de scripts para asociarlos con el sprite seleccionado.

Los bloques de Snap ! se dividen en ocho grupos: Movimiento, Apariencia, Sonido, Lápiz, Control, Sensores, Operadores y Variables. La disposición de estos grupos en el selector de grupos de bloques se muestra en la tabla siguiente.
El área central puede mostrar guiones, vestuario/fondos o sonidos asociados al personaje seleccionado. Lo que muestra esa área depende de la pestaña seleccionada.
Características
Las características más importantes que ofrece Snap !, pero que Scratch no tiene, incluyen:
- Expresiones que utilizan funciones anónimas, representadas por un bloque dentro de un anillo gris, con uno o más espacios/argumentos vacíos que se rellenan con una "función de orden superior" (la que llama a la función anónima). (Su base teórica en informática son las funciones de primera clase , que a su vez tienen el cálculo lambda como fundamento matemático aún más abstracto).
- Listas de primera clase (incluidas listas de listas/matrices )
- Sprites de primera clase (o en otras palabras, programación basada en prototipos )
- "Hiperbloques": funciones cuyo dominio natural son los escalares (texto o números), extendidas para aceptar listas como entradas y aplicar la función subyacente a los escalares de la lista o una sublista.
- Sprites anidables
- Codificación de programas Snap ! a lenguajes de texto como Python , JavaScript, C , etc.
- Metaprogramación , reflexión y macros
Mascota

Alonzo, la mascota de Snap !, es una versión modificada de Gobo de Scratch , con permiso del equipo de Scratch. Su nombre proviene de Alonzo Church , el inventor del cálculo lambda , y su cabello está basado en la letra griega lambda .
Bloques de uso especial (bibliotecas)
En las bibliotecas de Snap ! se pueden encontrar conjuntos extendidos de bloques , como la biblioteca 'streams' que permite crear la secuencia de Fibonacci completa e infinita , por ejemplo, utilizando los bloques especiales ('stream', 'show stream', 'tail of stream' y 'map ( ) over stream') de la biblioteca.
Existen muchas otras bibliotecas disponibles, como la biblioteca de "utilidades de listas", la biblioteca de "palabras y oraciones", la biblioteca de "iteraciones", la biblioteca de "animación", la biblioteca de "distribución de frecuencia", la biblioteca de "cálculo de audio", la biblioteca de "gráficos de barras", la biblioteca de "mapa mundial", la biblioteca de "colores y lápices de colores", la biblioteca de "cadenas y entrada multilínea", la biblioteca de "paralelización", etc., para otros fines especiales.
Limitaciones
Si bien el software en sí tiene pocas restricciones, sí presenta algunas limitaciones.
Estos incluyen:
Historia
El programa web Snap ! y el programa de escritorio BYOB, más antiguo, fueron desarrollados por Jens Mönig para Windows , OS X y Linux [ 4 ] con ideas de diseño y documentación proporcionadas por Brian Harvey [ 5 ] de la Universidad de California, Berkeley , y se han utilizado para impartir el curso introductorio de informática "La belleza y la alegría de la informática" para estudiantes que no se especializan en informática. [ 6 ] Jens fue miembro del equipo Scratch antes de crear Snap!. [ 7 ] BYOB todavía está disponible para su descarga.
Licencia
El código fuente de Snap ! se publica bajo la licencia GNU Affero General Public License versión 3 (AGPLv3) y está alojado en GitHub . [ 8 ] El código de la versión anterior, basada en escritorio 3.x, está disponible bajo una licencia que permite modificaciones solo para usos no comerciales y se puede descargar desde el sitio web de UC Berkeley [ 9 ] o desde download.com de CNET y la página de descargas de TechTracker. [ 10 ] [ 11 ]
Plataformas
Snap! funciona en los principales navegadores web de dispositivos Windows , iOS , MacOS y Linux .
Los navegadores web compatibles incluyen:
- Firefox
- Chrome (y la mayoría de los navegadores basados en Chromium)
- Opera GX
- Microsoft Edge
- Safari
Implementación
Snap ! está construido sobre Morphic.js , [ 2 ] una GUI de Morphic , que sirve como "capa intermedia" entre Snap! y JavaScript "puro". Utiliza una interfaz de programación de aplicaciones (API) de HTML5 Canvas .
En Snap !, todos los elementos visibles son transformaciones, es decir, botones, controles deslizantes, cuadros de diálogo, menús, campos de entrada, renderizado de texto, cursores parpadeantes, etc., se crean con morphic.js en lugar de usar elementos DOM de HTML. Snap! almacena en caché las formas de los sprites para que no sea necesario volver a dibujarlos en un nuevo elemento Canvas cada vez que el ratón se mueve sobre su cuadro delimitador. Sin embargo, no almacena en caché los bloques. En su lugar, gestiona el interior de los bloques en forma de C mediante el mecanismo de "agujeros" de morphic.
Toda interacción del usuario se activa mediante eventos, que se transmiten desde el elemento raíz "el mundo" a sus submorfos. Al soltar un morfo, este se integra en un nuevo morfo "propietario" ("padre"). En Morphic, la forma preferida de ejecutar una animación es registrarla en el Mundo, añadiéndola a la cola de animaciones del Mundo. El Mundo ejecuta cada animación registrada una vez por ciclo de visualización, independientemente del mecanismo de ejecución de Morphic.
Reconocimiento
Snap ! ha sido reconocido por la Logo Foundation, [ 12 ] y reseñado en una revista en línea para programadores. [ 13 ] A diciembre de 2014, 100 escuelas secundarias de la ciudad de Nueva York (NYC) introdujeron el curso “Beauty and Joy of Computing” de la Universidad de California, Berkeley, como un nuevo curso de Principios de Ciencias de la Computación AP, utilizando Snap !. [ 14 ] Jens y Brian recibieron el Premio al Liderazgo Educativo 2020 de la Cumbre Nacional de Liderazgo Tecnológico (NTLS) por su trayectoria profesional , basada en parte en Snap !.
Notas
- ↑ BYOB fue escrito en Squeak .
- ↑ BYOB, el predecesor de Snap !, era una modificación de Scratch y podía exportar proyectos como ejecutables de Windows .
- ↑ Así estaba organizada la pantalla de la versión Scratch anterior a la 2.0.
Referencias
- ↑ "jmoenig/Snap" . GitHub . Consultado el 5 de mayo de 2025 .
- 1 2 3 Mönig, Jens. "morphic.js" . GitHub . Consultado el 7 de junio de 2023 .
- ↑ "Snap! versión 6.9 y el bloque de funciones de Javascript - Foros de Snap!" . forum.snap.berkeley.edu . Consultado el 3 de noviembre de 2025 .
- ↑ "Scratch - Imagina, programa, comparte" . scratch.mit.edu . Consultado el 21 de mayo de 2017 .
- ↑ "Página principal de Brian Harvey (bh@cs.Berkeley.EDU)" . people.eecs.berkeley.edu/~bh/ . Consultado el 19 de enero de 2019 .
- ↑ "UC Berkeley EECS - CS10 : La belleza y la alegría de la informática - Otoño de 2011" . inst.eecs.berkeley.edu . Consultado el 21 de mayo de 2017 .
- ↑ "Relación con el equipo Scratch - Política - Foros de Snap!" . forum.snap.berkeley.edu . Archivado del original el 2 de enero de 2020.
- ↑ "jmoenig/Snap" . GitHub . Consultado el 21 de mayo de 2017 .
- ↑ "Snap! (Build Your Own Blocks) 4.0" . snap.berkeley.edu . Consultado el 21 de mayo de 2017 .
- ↑ Página de descarga de BYOB para Windows en CNET Download.com y CNET TechTracker
- ↑ Página de descargade CNET Download.com y TechTracker BYOB para Mac
- ↑ "Historia del logotipo" . el.media.mit.edu . Consultado el 21 de mayo de 2017 .
- ↑ Gee, Sue. "Visual Language Snap! Versión 4.0 lanzada" . i-programmer.info . Consultado el 21 de mayo de 2017 .
- ↑ "HOJA INFORMATIVA: Nuevos compromisos para apoyar la educación en ciencias de la computación" . obamawhitehouse.archives.gov . 8 de diciembre de 2014. Consultado el 20 de enero de 2019 .
Enlaces externos
- Sitio web oficial
- Sitios web estadounidenses para niños
- Lenguajes de programación educativa
- Software educativo gratuito
- Entornos de desarrollo pedagógico integrado
- Familia de lenguajes de programación Smalltalk
- Software para el desarrollo de videojuegos
- Comunidades de desarrolladores de software
- lenguajes de programación visual
- IDE de videojuegos