欢迎来到 Snap!(Snap!)。Snap!是一种面向孩子与成人、广泛友好的编程语言,能够吸引不同年龄段的人接触编程。它同时面向儿童和成年人,提供容易上手的操作形式,使各类使用者可以在同一环境中动手尝试,编写并运行自己设计的程序指令,体验逻辑构建与代码执行的过程。
正文




欢迎来到 Snap!
Snap! 是一款对儿童和成人都十分友好的编程语言,同时也为深入研习计算机科学提供了平台。
精选
- OEIStreams by mobility212
- Wordle(最终版) by stbriceno
- vid maker by onu032001
- Unlock Game by da-ultimate-creater
- farbzentren by jowede
Snap!Con 2025 的项目
- 乐器分类探索 by jens
- 人工神经网络 - 精灵层 by jens
- SnapGPT-Microworld-EN-Solution by jens
- 语音识别 by jogaye
- 海龟图形故事时间 by rmillwood
音乐
- rumba americana by timothymay
- 期末项目 - 音乐实验室 by nikitawarrier
- MIDI 到 TuneShare 转换器 by nerdboy628
- 电子音乐生成器 by ten_6044
- FlatWave by ten_6044
模拟
- 活塞模拟 by niki650
- 蚂蚁 v1.1 by loucheman
- 康威生命游戏 by codercole
- 弹簧 by sqoosh
- 略有 bug 的空中曲棍球模拟 by deltav
分形
评论
讨论对 Snap! 的定位大体认可——它是 Scratch 的加强版,甚至被看作"带积木语法的 Scheme"——但分歧集中在两点:它究竟算不算够格的严肃编程入门,还是为表达力牺牲了稳定性与可用性;更根本的怀疑是,任何积木环境都只教得会编程,教不会软件工程。
认为 Snap! 是 Scratch 的加强版,够格做严肃的编程入门
- 官方定位就点明了差别:第一类列表、第一类过程、第一类续延,让它足以承担高中与大学的计算机科学入门课(较多人)
- 它也常被概括为"有 Logo 式易学、又有 Scheme 威力的积木语言",同时保留 Scratch 的舞台与海龟绘图,还跑在浏览器里;用它给小孩教 Scheme,比直接上文本编辑器容易得多(较多人) > Snap! 就是换了视觉积木语法的 Scheme,只是部分函数改了更好学的名字。(@DonHopkins)
认为 Snap! 脆弱难调试,团队重加功能、轻打磨
- 改个变量名或积木名,调用处就可能留下"洞",报不报错全看情况,甚至静默失败;整体比 Scratch 更不可靠,团队看起来更急着堆新功能,而不是把已有部分做稳(较多人)
- 有用户第一次尝试放置"播放指定赫兹声音"的积木,就在 Android Chrome 上撞上类型错误(少数人) > 改名之后调用处会出现"洞",系统有时报错有时默默吞掉。(@sinuhe69)
认为积木环境教得了编程,教不了软件工程
- 图形化环境能让人学到编程,但完全学不到软件工程,这正是它让人提不起兴趣的根源(较多人) > 你能从中学到编程,但绝对学不到软件工程。(@andrewla)
认为画布式布局在项目变大后变成导航噩梦
- 积木按创建顺序散落在画布上,往往毫无逻辑,找东西和把握全貌都很难,规模一大就成了导航问题;Snap! 对初学者比 Scratch 吓人,可等到它面向的大龄学生阶段,积木原本的优势又已经消失。有人建议引入更传统的 IDE 或文件式结构来组织代码块(较多人)
认为编辑器本身成了瓶颈,但这条路确实能带人入行
- 有程序员从 Scratch 起步,项目做到约一万个积木后编辑器开始卡顿,大量时间花在绕开限制上,最终自己动手写了 goboscript,如今已入行做软件工程师(较多人) > Scratch 教会了我编程,也顺带让我学到了一点真实工程。(@aspizu)
认为大学一样有 NIH 综合症
- 重复造轮子不是大厂专属,高校也同样热衷于自研而非采用现成方案(少数人)
认为更简单、更黏人的替代品才是真正对手
- 有人带侄子玩 Scratch 和 Snap!,发现他们上的本地课程早已从 Snap 换成微软的 MakeCode,理由是更简单、孩子更买账(少数人)
有人直接反问现在还该不该教孩子编程
- 该评论只有一句反问,未展开论证,但它反映出讨论中对儿童编程教育价值的一丝怀疑(少数人)
有价值的补充
- Snap! 支持完整的键盘操作:看到作者 Jens Mönig 本人演示时才有人意识到,程序可以完全不碰鼠标地创建和编辑。
- Snap!Con2023 上讨论过几类扩展:用积木定义语法与可参数化词汇表(例如描述植物的种子、根、茎、叶、花,再交给刺绣机或海龟绘图);Ken Kahn 则讨论把 ChatGPT 一类模型接进 Snap!,配合语音合成与识别编排角色对话,相关项目是 eCraft2Learn。
- 块语言在 LLM 时代有结构性劣势:JavaScript 同时被人和模型熟知,而积木程序缺乏高效且忠实的文本表示,直接导出 XML 或 JSON 存档既浪费 token 又难被理解——模型并不像懂 JavaScript 那样懂存档格式。Snap! 可以借与 Scheme 的等价性做双向转换,但 Scheme 的普及度远不如 JavaScript;Logo 本质上是不带括号的 Lisp,解析时必须知道函数参数个数,存在歧义,做序列化不如 Scheme 合适。
- 讨论里有人想用 Snap! 驱动 LEGO WeDo,以替代官方已废弃、连 iOS 应用都已失效的软件,但没有得到回应。
- 一条通用原则被单独提出:凡是打不出来的名字,迟早都会成为问题。