软件开发里的文化氛围
只所以想新创建一个语言,安德鲁认为需要改进的另一个非常重要的一点,就是开发者的文化素养。
有些程序员会对人与人之间互相刻薄的“常态”特别敏感。虽然,他自己说话大多也很直率,但他能接受人和人之间的冲突,如果有人说的话是在胡说八道,安德鲁也会直接指出来。
他经常在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
本篇文章为 @ 行动的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。