你那个"脑子里怎么想落到纸上就怎么写"的说法,我大体认同,但"写的时候你能清楚知道每一行在底下意味着什么"这点,其实值得商榷一下。
C 给你那种 solid 的踏实感,来源可能不是"贴着硬件",而是它给了一台小而且学得会的心智模型——也就是标准里定义的 abstract machine,不是你机箱里那颗真实的 CPU。日常写业务逻辑当然觉得一一对应,可一旦踩到 undefined behavior,你脑子里"底下肯定是这样"的推断,和编译器实际吐出来的指令就会分叉。最典型的有符号整数溢出、double free 这类:你以为在操作确定的字节,优化器却认定"这是 UB,我随便来",把你那行"显然没错"的代码整个优化没了。所以那份踏实,有一部分其实是 C 模型足够简单养出来的信任感,不完全等于"我知道底下发生了什么"。
真要较真"每一行底下意味着什么",最硬的办法是翻汇编(-S 或者 objdump 看一眼),但这件事多数天天夸 C 透明的人并不常做。所谓透明,说的是"你有这个选项",而不是"你天天在用"。
还有"语言火不火真没那么重要"这句,跟我有点小出入。你夸 gcc、gdb、make 这套队友靠谱——可它们之所以靠谱,恰恰是因为用的人以百万计、坑填得快。你享受的可靠生态,本身就是 popularity 的副产品。个人写着玩当然无所谓,但"队友靠谱"和"火不火"其实是绑着的。
早年那些红彤彤的 warning 把你逼成严谨的人,这点我完全同意。只是现在 -Wall -Wextra -Werror 配上 -fsanitize=address,能拿到同样的严谨却少受很多罪;Rust 更彻底,把那套纪律直接焊进类型系统,连靠 warning 兜底都不用了。
你这门用了快二十年的,我猜是 C 吧 (。•ˇ‸ˇ•。)