+8613426109659
webmaster@21cto.com

Zig语言作者:安德鲁·凯利(下)

图片

软件开发里的文化氛围

只所以想新创建一个语言,安德鲁认为需要改进的另一个非常重要的一点,就是开发者的文化素养。

有些程序员会对人与人之间互相刻薄的“常态”特别敏感。虽然,他自己说话大多也很直率,但他能接受人和人之间的冲突,如果有人说的话是在胡说八道,安德鲁也会直接指出来。

他经常在C语言的聊天室或新闻组里泡,特别是一个叫freenode的频道。安德鲁认为是自己待过的最恶劣、最充满敌意的聊天室之一。拿freenode上的C语言频道来说,他进去问个简单的问题,比如“我该怎么办……我不知道。我该怎么对齐结构体里的字段之类的?” 这样的问题时,结果有人就会出来骂,有人直接说他不行,太差劲,这种问题基本就是个人攻击,得不到有效答案。

还有人给了他错误的信息,真正的答案只能自己解决。他认为这里面应该还有很多技巧可以复用。如此这般,他认为这是世界上最糟糕的地方之一,如果要用一个词来形容它,那就是迂腐。

安德鲁记得在里面,展示着一个很讲究的C编译器和一个C语言标志。他想,“哦,这给C语言增光添彩了吗?”

怀着改善文化的一种愿景,他准备创造一种更好的语言,建立一个不那么迂腐的开发者社区,并且在 GitHub 上发布一个可运行的语言版本。

加入OKCupid

在此时,他加入OKCupid这家公司。他和招聘的人力资源专员开始斗智斗勇,对方要求业余时间做的任何项目都归公司所有,包括知识产权。这实在是太过荒谬,也过于严苛。安德鲁据理力争,要求对方必须在签聘用合同时删除此条款,“我拥有我所有的业余时间,我用自己的设备开发的东西和知识产权属于我自己!”

这种强硬与坚决的态度,最后让对方妥协了。

他说:如果你遇到这样的情况,就必须要保护自己的孩子,否则他就会被人夺走。

有一些程序员不想麻烦,选择将就,不想要经历一种看起来像打击违法犯罪的故事,但是后续带来的麻烦更大。

然后,安德鲁开始负责一个庞大的C++代码库。他发现这家公司的创始人麦克斯韦·克罗恩很有趣,这个人的博士论文叫做《OK Web Server》,主要研究如何使用C++提供安全的Web服务。他和同学一起做了一番研究,然后一同决定创办一家新公司叫OKCupid。

这个名字最开始和约会、相亲没有一点关系,后来选择做交友也是一种随机之举。

OKCupid的代码库

安德鲁开始翻看OKCupid的代码库,发现这个代码库和两个创始人的性格一样,只是将功能实现,根本没考虑长远发展。有的文件是C++,有的是Perl,还有的类似Hack一样混合在一块使用,两个解析器都能用。

他觉得这又气又可爱。但是,他也里面观察到了C++的局限性和优点,为自己的新语言设计提供有效的参考。

然而,安德鲁“因祸得福”,他得以观察到 C++ 在实际项目中的优势与不足,这为 Zig 的设计提供了宝贵的参考。

面对代码中的某些Bug,安德鲁不禁会指出:在 Zig 中,如果你这样编写代码,编译器将会报错,而不是导致这个 Bug 的出现。

Zig 很快发布了,安德鲁将此定为0.1.0版本。他还幸福地收到了女朋友赠送的杯子,以此庆祝。

图片

从此,安德鲁开始收获一批忠实的用户。

开源发布

安德鲁把Zig上传到著名的Hacker News上做宣传。评论区里是骂声一片:

我们不需要另一门编程语言

这家伙是个傻子

他根本没写过编程语言,这是他的第一个项目吧。

编程语言太多了,赶紧地滚蛋!

......

这也是大部分开源作者必然要遇到的一个坎,尤其是对于编程语言这种“极端信仰型”产品。

人们对自己熟悉的编程语言有强烈的归属感,对新语言会天然抗拒。

安德鲁早就预料到这一点,所以他并不惊讶,反而冷静应对。他分清“喷子”与“建设性批评”,不因情绪化的攻击而气馁,也不忽略真正有价值的反馈。

他认为,在开源世界中,你的发言并不是在和人交互,而是在舞台上给“偷窥者”表演。

他也知道,每一次发言,其实都是在塑造个人品牌。

Zig 最初在 Hacker News 上被“赶了出去”,几年后却多次登上热门榜单,吸引了越来越多认同其设计哲学的开发者。

两份工作的压力

这样,安德鲁白天做公司的项目,晚上继续来编写和设计新语言,压力开始变大。

他的未婚妻提出这个问题,他没有给出好的答案。他一直想辞职不想把时间浪费在公司的破事上,感觉像是别人的赚钱机器,他觉得做Zig更有意义。

安德鲁有一次和朋友得到了一个赚钱方式,这位朋友在独自开发一款编辑器,开通了一个Pateon的功能,一个月能赚400美元左右,能够一个月的食材购买。后来,他又开通了直播编程课,在文章底部加一些捐赠链接。每个月会收到一部分款项,并且还有一定的连续性。

如果辞掉工作,并且捐赠的增长速度继续保持,那么存款会先下降一段时间,但在归零之前会重新回升。

他看到是可以做有连续收入的,且不必动用积蓄。于是,他决定辞职,全力开发Zig。

全职工作

辞职以后,安德鲁发现自由给自己带来了巨大的幸福感,再也不用每天困在公司,打卡工作,每周工作40小时或者更多时间了。

当他把全部的精力都投入到Zig上以后,增长飞轮开始转动:

(1)全职投入时,你的产出更快;

(2)当项目进展更快,社区信任度提升;

(3)当信任度提升,捐赠与关注也会增加;

(3)最终,你的经济状况又将得到改善。

Zig用户活跃度大幅度提升,越来越多的用户群将Zig加入到他们的软件栈当中,例如:

  • Bun: JavaScript / TypeScript 运行时 + 包管理器 

  • TigerBeetle: 事务型数据库 / 金融交易数据库

  • Uber:使用Zig开发框架,包括基础设施,工具链等。


Zig 编译器速度也很快,内存占用也很低。Zig 最先吸引人的还不是语法或语言灵活性,而是一个名为 Comptime 的特性。

安德鲁提交问题的数量在不断增长,还有一些热心用户也帮忙共同完善,这样pull request的人数开始增多,这些动作从一开始都向所有人公开。

图片
图片


有一些用户开始使用Zig开发新项目,有一个称为Game boy的游戏,用Zig做了一套命令行工具,可以很方便的修改rom文件。还会生成新的rom,导入到模拟器等动作。

Zig就像在混凝土里长出的一朵花。安德鲁曾经去苹果公司去面试工程师,对方告诉他:“你不能在业余时间干这个。” 他一听就没有入职。

很有意思的是,现在的苹果公司正在积极地向Zig软件基金会捐赠款项。

给开源开发者的建议

安德鲁创建 Zig 已经十几年了。现在也不是他一个人的事业了,Zig 软件基金会现在支持其他的全职员工,而这一切都来自个人或公司的捐款。

这十年,安德鲁不但早已从失恋的痛苦中走出,并且把Zig建设成了许多程序员心中的“安全岛”和“利器”。它用现代化的语言特性、透明的内存控制和编译期执行能力,解决了C语言遗留的痛点,也让开发者们在编程时少了踩雷、多了自由。

更重要的是,安德鲁不仅在写一门新语言,也在写一种新的人生脚本:开源不仅是一种技术,更是一种生活方式和价值观的实践。

安德鲁给一些不按传统方式谋生的人的建议是,去做你热爱的事情,不要害怕在众筹平台上展示自己,寻求建议,也不要指望一夜成名。人们确实需要一些东西,一些可以信赖的东西。

在Zig项目初期,安德鲁传递的信息是“我要攻克C语言”,是不是有点自不量力?这是一个很多人听起来不那么靠谱的项目,但他做到了坚持到底,并且已经完成并继续着。


作者:洛逸

参考:

https://mp.weixin.qq.com/s/6mdh27DzwHiA3Tk7P21QkA

https://corecursive.com/067-zig-with-andrew-kelley

评论

我要赞赏作者

请扫描二维码,使用微信支付哦。