编程与软件工程maizure.org
GNU coreutils 源码剖析
Decoded: GNU coreutils (2019)
2019 — 2022,它一次次回到首页
黑点是上首页(≥ 50 分)的那次投稿,空心点是没冲上去的投稿,点越大分数越高。
导读
这是 maizure.org 上的一个项目:作者逐个拆解 GNU coreutils 里的命令行工具(如 head、df、tr、yes 等),用流程图和逐段注释的源码讲解每个工具的内部实现。页面既覆盖日常最常用的工具,也涉及 factor、tsort 这类少有人知的程序,读者能顺带了解 FTS 文件系统遍历等底层机制。
为什么经久不衰:它把枯燥的系统级 C 代码变成可读的流程图和讲解,既是学习真实世界 C 与 Unix 设计的范本,也常让人发现从未听说过的工具,多年后仍被反复翻出。
HN 评论精选
最大价值是发现从未听说过的 coreutils 工具。
对我来说最大的收获是知道了有些工具的存在——我以前从不知道还有它们,特别是 factor 和 tsort。
ufo查看英文原文
The biggest takeaway for me is that I learned about the existence of some utilities that I had never known were there. Specially "factor" and "tsort".
指出 tr 流程图有误,并赞赏 yes 用缓冲区填充实现高性能的讲解。
非常有意思。我粗略看了 head 和 df,流程图似乎是完整的。但 tr 的流程图不完全正确,因为某些选项下第二个参数 string2 是可选的。yes 的说明提到它如何用多份字符串填满缓冲区来达到极高性能,这点很棒!
Tepix查看英文原文
Super interesting. I had a brief look at "head" and "df" and the flows seem to be complete. The flow for "tr" is not completely right given that the second parameter ("string2") is optional with certain options. The text for "yes" mentions how it fills a buffer with multiple copies of the string to achieve its very high performance. Nice!
从项目中第一次了解到 coreutils 依赖的 FTS 文件系统遍历函数。
我之前从没听说过 FTS,也就是 coreutils 用来遍历文件系统的那些函数。
AceJohnny2查看英文原文
Huh, I'd never heard of FTS before, the functions used by Coreutils to traverse the filesystem: http://man7.org/linux/man-pages/man3/fts.3.html
盛赞项目是学习 coreutils 和真实 C 代码的好材料,并好奇图表如何制作。
这个项目让我惊叹。这是了解 coreutils、同时看看真实世界里 C 语言怎么写的绝佳方式!我很好奇作者是怎么做出讲解每个工具的图表的——是用 Inkscape 画的吗?
gautamcgoel查看英文原文
I'm blown away by this project. What a great way to learn about the coreutils, and also see how C is written in the real world! I'm curious how the author made the diagrams explaining each utility - did he use Inkscape?
历次讨论
同类还值得读
开源应用架构
The Architecture of Open Source Applications
《开源软件架构》(AOSA)是一本在线免费书,邀请知名开源项目的作者亲自剖析其内部设计,涵盖 SQLAlchemy、LLVM、Audacity、Apache、Bash 等系统。
编程与软件工程上首页 9 次 · 2011–2024aosabook.org编辑精选编程语言简史:简短、不完整且多半错误
A Brief, Incomplete, and Mostly Wrong History of Programming Languages
一篇以戏谑、故意不准确的方式回顾编程语言史的博客文章,用夸张轶事和讽刺定义串起 Lisp、C、C++、Java、JavaScript、PHP 等语言。
编程与软件工程上首页 8 次 · 2009–2021james-iry.blogspot.comSQLite 是如何测试的
How SQLite is tested
SQLite 官方文档页,系统介绍 SQLite 的测试体系:多种测试方法(TCL 测试、模糊测试、回归测试、静态分析等)和海量测试用例,展示了这个小型开源项目如何靠极致测试获得…
编程与软件工程上首页 8 次 · 2009–2025sqlite.org编辑精选高级编程语言(2009)
Advanced programming languages (2009)
Matt Might 的经典文章,按用途推荐“高级编程语言”:如果追求就业就选主流语言,如果追求表达力、学术研究或创业,则推荐 Haskell、OCaml、Scala 等函数式语…
编程与软件工程上首页 8 次 · 2009–2022matt.might.net我的 Forth 与栈机器经历
Yosefk - My history with Forth & stack machines
作者以亲身经历回顾了使用 Forth 语言和栈式机器的历程:既赞叹其简洁优雅、代码量小、可自举的优点,也坦率指出栈操作在实际编程中的痛苦,以及 Forth 社区文化中的问题。
编程与软件工程上首页 8 次 · 2010–2024yosefk.com编辑精选