2015年,程序员安德鲁和女朋友分手,失恋了。
他心情沮丧,很长时间都走不出来,为了排解失恋的痛苦,他想起了一直被自己压抑的一个想法:开发一门编程语言。
安德鲁告诉自己说:放松一点吧,去做你喜欢干的事情吧,会对你很有好处的。
于是,一门叫做Zig的编程语言诞生了。

安德鲁也许不会想到,10年以后,Zig成立了基金会,拥有了一个非常活跃的Discord社区和GitHub生态系统,更是被很多人认为是更现代、更安全、更高效的 C 语言替代品。
01
向C语言开刀
搞个什么编程语言不好,为什么要向C语言开刀呢?
要知道C可以系统编程的王者语言啊!
这是因为安德鲁之前开发过一个数字音频工作站的软件,由于涉及到底层操作,他遇到了很多C语言的“陷阱”,例如整数类型转换,内存分配,隐式类型转换,没有越界检查,C预处理器只是文本展开等等,很容易让程序员踩雷。
更烦人的是,安德鲁觉得C语言社区带着强烈的防御性和刻薄文化,比如在某C语言社区问一个非常简单的问题:“我该如何对齐结构体中的字段?”
你可能会遇到一个人骂你,一个人直接说“不行”,完全不解释。
“这真是世界上最糟糕的地方之一”,安德鲁决心解决这些痛点问题,他希望:
Zig 默认有安全检查(数组越界、空指针、整数溢出)
内存分配透明且可控
没有隐藏控制流
静态链接,减少外部依赖,实现跨平台的简洁可靠发布。
Zig能在编译期执行代码
编译期执行代码这个很有意思,下面这段代码是计算斐波那契数列的,C语言也能写出类似的代码:
fn fib(n: u32) u32 { return if (n < 2) n else fib(n - 1) + fib(n - 2);}var fib_10 = comptime fib(10);但Zig的comptime关键字让编译器在“生成机器码之前”就执行逻辑,也就是说编译出来的可执行文件里不包含任何 fib 函数调用,fib_10 是一个常量值55;所有运算在编译阶段完成。
总之,安德鲁的目标是:提供安全、现代、可移植的语言特性,建立一个友好、开放的社区。
02
被骂惨了
立Flag容易,实现起来就太难了,何况Zig的目标还这么宏伟。
安德鲁也需要养家糊口,他不得不去找个工作赚钱,在业余时间折腾Zig。
他去Apple面试,被拒,因为“不能在业务时间做Zig”。
他又去OKCupid面试,HR给了当头一棒:“你业余时间做的任何事情,知识产权都归公司所有。”
安德鲁怒了:“什么狗屁规定,必须得从合同中删除这一条。我在业余时间、用我自己的设备做的所有东西,知识产权归我自己。”
HR最后妥协,安德鲁入职了。
OKCupid是个大型的遗留项目,技术栈很奇葩,虽然是个SaaS产品,但是却没有用Java、Python、Go等流行语言,而是用C++来实现Web服务。
不过,安德鲁“因祸得福”,他有机会观察 C++ 在现实项目中的优点和局限,为 Zig 的设计提供参考。
遇到代码的一些Bug,安德鲁会忍不住地说:在 Zig 里,如果你这样写,编译器就会报错,而不是出现这个 bug。
Zig很快推出了0.1.0版,安德鲁还收到了女朋友给他买的杯子作为庆祝。

安德鲁也把Zig发到著名的Hacker News上做宣传,不出意料,评论区中骂声一片:
我们不需要另一门编程语言
这家伙是个傻子
他根本没写过编程语言,这是他的第一个项目吧。
编程语言太多了,赶紧滚吧
......
这也是开源作者必然要遇到的一个坎,尤其是对于编程语言这种“极端信仰型”产品。
人们对自己熟悉的语言有强烈的归属感,对新语言天然抗拒。
安德鲁早就预料到这一点,所以他并不惊讶,反而冷静应对:分清“喷子”与“建设性批评”,不因情绪化的攻击而气馁,也不忽略真正有价值的反馈。
他认为:在开源世界中,你的发言并不是在和人交互,而是在舞台上给“偷窥者”表演。
每一次发言,其实都是在塑造个人品牌。
Zig 最初在 Hacker News 上被“赶出去”,几年后却多次登上热门榜单,吸引了越来越多认同其设计哲学的开发者。
这种“从被嘲笑到被追随”的反转,是每个伟大开源项目的共同命运:
Linux 被称为“玩具系统”
Python 被嘲笑“太慢”
Rust 被质疑“复杂且没必要”
而这些项目,最终都用时间证明了自己。
03
靠捐款生活
在OKCupid工作了一段时间后,安德鲁发现了一个严重的问题:无法平衡养家糊口的工作和自己热爱的开源项目。
全职工作占用了大量时间,随着Zig社区的不断扩大,他的业余时间都被用来合并pull request和响应问题,想做一些重大的规划都没有时间。
慢慢地,他觉得上班就是浪费生命,是别人赚钱棋局中的一个棋子。
怎么办呢?
他先学朋友在在众筹平台Patreon开通了捐赠账号,然后在文章中宣传,虽然收入增长很缓慢,但是趋势很稳定。
他算了一笔账,如果辞掉工作,并且捐赠的增长速度继续保持,那么存款会先下降一段时间,但在归零之前会重新回升。
于是,他决定冒险一试,从公司辞职,尝试靠捐款生活。

辞职以后,安德鲁立刻发现自由给自己带来了巨大的幸福感,再也不用每天困在公司,打卡劳动,每周工作40小时或者更多时间了。
当他把全部的精力都投入到Zig上以后,Zig的飞轮开始转动:
(1)全职投入时,产出更快;
(2)当项目进展更快,社区信任度提升;
(3)当信任度提升,捐赠与关注也会增加;
(3)最终,你的经济状况又得到改善。
Zig用户活跃度大幅度提升,越来越多的用户群将Zig加入到他们的软件栈当中,例如:
Bun: JavaScript / TypeScript 运行时 + 包管理器
TigerBeetle: 事务型数据库 / 金融交易数据库
Uber:基础设施,工具链


虽然距离C语言的王者地位还差很远,但是Zig已经成为一个非常活跃的编程语言了。
安德鲁不想追求更多的利润和增长,他成立了非盈利的Zig基金会,收入依然来自于用户和支持者的捐款,每年大概有40多万美元。

Zig董事会每年给安德鲁开的工资是15.9万美元,相当于纽约市高级程序员的平均工资。
但安德鲁每年只拿10.8万,足够自己生活了,其他的又捐给了基金会。
现在安德鲁推出新功能,改进产品的动力,完全来自于热爱,而不是金钱。
这真是一种幸福的状态。
04
结语
10年过去了,安德鲁不但早已从失恋的痛苦中走出,并且把Zig建设成了许多程序员心中的“安全岛”和“利器”。
它用现代化的语言特性、透明的内存控制和编译期执行能力,解决了C语言遗留的痛点,也让开发者们在编程时少了踩雷、多了自由。
更重要的是,安德鲁不仅在写一门新语言,也在写一种新的人生脚本:开源不仅是一种技术,更是一种生活方式和价值观的实践。
1742

被折叠的 条评论
为什么被折叠?



