Snap!: el lenguaje de bloques que lleva la informática seria a niños y adultos
Λ Snap – An inviting programming language for kids and adults for CS study

Snap! es un lenguaje de programación visual desarrollado por UC Berkeley y SAP que combina una entrada accesible para principiantes con la profundidad necesaria para estudiar ciencias de la computación en serio. Su diseño de 'piso bajo, paredes anchas y sin techo' permite crear desde animaciones y juegos hasta simulaciones físicas y redes neuronales. La plataforma incluye proyectos destacados, una comunidad activa y herramientas como SnapGPT para explorar IA explicable.
Snap! es un lenguaje de programación ampliamente atractivo para niños y adultos que también es una plataforma para el estudio serio de las ciencias de la computación.
- aspizu
Scratch es como aprendí a programar por primera vez. Estaba construyendo proyectos cada vez más ambiciosos en él, y en algún momento el propio editor se convirtió en lo principal contra lo que luchaba. Una vez que un proyecto llegaba a alrededor de 10,000 bloques, podía volverse dolorosamente lento, y terminé pasando mucho tiempo ideando soluciones para sortear las limitaciones de Scratch.
Eso es lo que finalmente me llevó a crear goboscript: https://github.com/aspizu/goboscript
Soy uno de los programadores que le deben su carrera a Scratch; este año me uní a https://ente.com como ingeniero de software. Scratch me enseñó a programar, y quizás un poco de ingeniería del mundo real indirectamente.
- sinuhe69
Snap está diseñado para ser más expresivo y potente que Scratch. Pero encuentro que depurarlos es muy doloroso. Cambiar el nombre de una variable o un bloque, por ejemplo, podría crear "agujeros" en los sitios de llamada, pero el sistema puede o no reportar un error y falla silenciosamente. Snap es, en mi opinión, más inestable y el equipo parece más ansioso por añadir características que por pulir las existentes o hacer el sistema más robusto y estable.
- andrewla
No me encantan los entornos de programación gráficos como este y Scratch, y no puedo señalar exactamente por qué me resultan tan poco atractivos.
Una gran parte es que puedes, hasta cierto punto, aprender a programar con esto. Pero definitivamente no puedes aprender ingeniería de software con esto.
- Dwedit
Cualquier nombre que no puedas teclear va a ser un problema.
- brian_harvey
Una nota para aquellos comentaristas que se quejan de que la programación visual no te ayuda a aprender ingeniería de software:
Cierto, ustedes no son nuestro público objetivo. Buscamos a las personas que no van a especializarse en ciencias de la computación en la universidad, pero que sienten curiosidad por saber de qué se trata tanto alboroto. Han tomado álgebra en la secundaria, así que saben qué es una variable y qué es una función. (No tienen que saber sobre funciones como datos, pero esperamos enseñarles eso.) Hoy en día, probablemente usaron Scratch en la primaria, así que no tenemos que enseñarles la sintaxis de los bloques, ni qué es un sprite, etc.
Nadie va a salir directamente de nuestra clase a un trabajo de ingeniería de software. Tendrán muchas oportunidades de aprender eso más adelante, suponiendo que (como ocurre gratificantemente a menudo) cambien de opinión sobre qué estudiar en la universidad debido a nuestro curso.
No son (o al menos aún no) hackers, en el sentido de personas cuyo instinto al encontrarse con una máquina es desarmarla.
Ah, P.D., hay un sentido en el que los lenguajes de bloques son mejores para la ingeniería de software: puedes tener nombres de cosas arbitrariamente largos (incluyendo espacios entre palabras), porque solo necesitas teclear el nombre una vez, así que puedes dar a tus procedimientos nombres autodocumentados como "convertir mayúsculas a minúsculas" en lugar del feo "convUcLc".
- thrtythreeforty
Siento que HN no debería capitalizar automáticamente "λ" en este caso. Una función anónima es una λ, no una Λ.
- pamelafox
En general no soy una gran fanática de la programación basada en bloques, pero trabajé con la gente de Snap mientras estaba en UC Berkeley, y presentan un caso muy convincente tanto para la programación basada en bloques como para su enfoque de funciones primero.
Mientras estuve allí, ayudé a desarrollar este currículo de secundaria para Snap:
https://bjc.berkeley.edu/bjc-r/course/sparks.html
Fue realmente interesante intentar un enfoque de funciones primero que siguiera siendo divertido; terminé rehaciendo proyectos similares para un curso de Python con funciones primero también.
- stymaar
Para aquellos que se preguntan la diferencia con Scratch, está en la página de acerca de:
> Acerca de Snap!
> Snap! (anteriormente BYOB) es un lenguaje de programación visual de arrastrar y soltar. Es una reimplementación extendida de Scratch (un proyecto del Lifelong Kindergarten Group en el MIT Media Lab) que te permite Construir Tus Propios Bloques. También cuenta con listas de primera clase[1], procedimientos de primera clase y continuaciones de primera clase[2]. Estas capacidades añadidas lo hacen adecuado para una introducción seria a las ciencias de la computación para estudiantes de secundaria o universidad.