工具与资源github.com
Mu:一台人类尺度的计算机
Mu: A Human-Scale Computer
2016 — 2021,它一次次回到首页
黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。
导读
Mu 是 Kartik Agaram(akkartik)发起的一个实验性项目:从最底层开始,自建一整套「人可理解」的计算机软件栈——包括接近机器码的指令集、编译器、以及运行环境,目标是让一个人能从头到尾读懂全部代码。它用汇编/底层语言构建以避免庞大的运行时,并大量采用文学编程和以「场景」形式记录运行过程作为测试。
为什么经久不衰:它挑战了现代软件栈层层抽象、无人能完整理解的现状,这种「一个人能全部读懂」的理想让它在五年间反复引发讨论,今天读来仍有启发。
HN 评论精选
把它与 uxn/varvara 等「小而可理解」的计算项目并列推荐。
另可参考 uxn、uxntal 和 varvara,我觉得它们的设计目标很相似。我喜欢这场运动,我怀念个人计算的时代。
Stampo00查看英文原文
See also uxn, uxntal, and varvara, which I feel have similar design goals. I love this movement. I miss personal computing. https://wiki.xxiivv.com/site/uxn.html https://wiki.xxiivv.com/site/uxntal.html https://wiki.xxiivv.com/site/varvara.html
详尽点评:赞赏测试即记录、单库分层、文学编程等设计,但建议用常规术语替代自造名词。
我很喜欢的地方:把运行过程录下来当测试;所有抽象层共用一套库;用汇编构建以避开庞大的运行时;用文学编程管理汇编代码;scenario、screen-should-contain、assume-keyboard 很棒;spaces 作为闭包类概念的原始操作很好;元程序的 attributes 也很棒;用 [,] 当标签是天才之举。建议:如果「recipes」其实就是函数,请沿用大家都熟悉的叫法,reagents、reply、ingredients、products 同理;另外 number:list 之类的多种类型若要走下去,映射表应保持一致,别写成 lisp 风格。总之我很喜欢这个方向。
vinodkd查看英文原文
Things I really liked: + recording runs as tests + one library for all layers of abstraction + building in assembler to avoid the big runtime. + using literate programming techniques to manage coding in assembly. + scenario, "screen-should-contain" and "assume-keyboard". awesome. + spaces: nice primitive of the closure and similar concepts + attributes for meta programs. again, awesome. + labels and using [,] as labels. genius. Suggestions: * If there's a valid reason to call them recipes, go ahead. If they're actully just functions, please stick with what everyone knows and gets. Same thing with "reagents","reply", "ingredients" and "products". Update: I did read your blog post about this. still think the regular names are better in the long run. * I dont know where you're going to with multiple types of the "number:list" kind, but if so, the map must look the same, not lispy. In all, I really like where you're going with this. Kudos! I find a lot of resonance of ideas I've had for a long time now.
实际动手试用后指出的具体限制:取地址、区间构造与测试断言都不够灵活。
我用 Mu 的数组类型写了一个线性查找的实现。笔记:可以用 create-array 建数组,但找不到办法取它的地址并传递;无法取得数组非法位置的地址,因此无法用 begin/end 地址对构造有界区间(STL 风格);解释器强烈倾向于用引用计数的 address:shared 而非普通地址,即使并不需要共享内存;也没搞清如何写一个按具名地址而非序号地址检查的测试场景(memory-should-contain)。
enqk查看英文原文
So I wrote an implementation of linear search in Mu using its array type. https://gist.github.com/uucidl/df81b6ab0fe65713f5ba My notes: - creating an array w/ create-array is possible, however I could not find how to take its address and pass it around - one cannot get the address of an invalid position of the array, so one cannot construct bounded ranges (STL style) using a begin/end pair of addresses - the interpreter strongly suggests to use refcounted pointers (address:shared) instead of addresses even when one does not borrow the memory - could not figure out how to write a test scenario that uses checks named memory addresses rather than ordinal memory addresses (memory-should-contain instruction)
作者本人给出上手教程链接。
如果你想玩玩 Mu,这里有一个引导式教程,我尽量让过程不那么痛苦:https://github.com/akkartik/mu/blob/main/tutorial/index.md
akkartik查看英文原文
If you're interested in playing with Mu, there's a guided tour where I try to make the process as painless as possible: https://github.com/akkartik/mu/blob/main/tutorial/index.md
历次讨论
同类还值得读
直接在浏览器中启动 Linux 内核
Boot a linux kernel right inside your browser.
Fabrice Bellard 的 JSLinux 页面,用 JavaScript 在浏览器里启动一个 Linux 内核,并提供一个可交互的终端环境。
工具与资源上首页 5 次 · 2011–2025bellard.orgHacker News 未公开功能与行为清单(2018)
A List of Hacker News's Undocumented Features and Behaviors (2018)
数据科学家 Max Woolf 整理的 Hacker News 未公开功能与行为清单,涵盖投票机制、排名算法、账号惩罚等社区运作细节。
工具与资源上首页 5 次 · 2019–2025github.comMapSCII:在终端中用盲文和 ASCII 渲染地图
MapSCII – Braille and ASCII map renderer for the console
MapSCII 是一个在命令行终端里渲染地图的开源工具,用盲文字符和 ASCII 字符把地理数据画成可交互浏览的字符地图。
工具与资源上首页 5 次 · 2017–2025github.com顶尖大学的免费在线课程
Free Online Courses from Top Universities
Open Culture 整理的一份免费在线课程合集,汇集了全球顶尖大学(如 MIT、斯坦福、耶鲁等)向公众开放的网络课程资源,涵盖音频、视频等多种形式。
工具与资源上首页 5 次 · 2010–2022openculture.com淘气字符串:容易引发用户输入问题的字符串清单
Naughty Strings: A list of strings likely to cause issues as user-input data
一个 GitHub 仓库,收录了大量容易让程序出问题的用户输入字符串,如特殊字符、emoji、SQL 注入片段、系统命令等,供开发者用于测试输入处理逻辑。
工具与资源上首页 4 次 · 2015–2020github.com