对于许多人来说,放弃一份安稳的工作可能看起来像是冒险之举。然而,本文作者摘要:我做到了!这周三,我将正式交还我的工牌和设备,然后把 2025 年剩下的时间都专注于推出我的编程语言——jank。这个决定我酝酿了很久,实际上也是一个逐步转变的过程。那么,究竟是什么促使我走到了今天这一步呢?
的选择并非一时冲动:
他决定辞去稳定的工作,全身心投入到自己设计的编程语言——jank 的开发中。
作者 | Jeaye Wilkerson 翻译 | 郑丽媛
出品 | CSDN(ID:CSDNnews)
我做到了!这周三,我将正式交还我的工牌和设备,然后把 2025 年剩下的时间都专注于推出我的编程语言——jank。这个决定我酝酿了很久,实际上也是一个逐步转变的过程。那么,究竟是什么促使我走到了今天这一步呢?
jank 的起源
十年前,我开始涉足编程语言设计和编译器的开发。那时,我深耕于 C++,并且工作主要集中在游戏引擎的构建上。我想要开发一种语言,它不仅能让我编写更安全的系统,还具备强大的编译时元编程能力,并且拥有处理并行性的强大机制——因为当时我遇到了 C++ 模板元编程的实际限制,在工作中不断为如何并行化一个相对庞大的单体自研游戏引擎而苦恼。
从那时起,我便开始探索其他许多编程语言,其中就包括 Rust。我在 12 年前就接触过 Rust,那时候它让我眼前一亮。此外,我还学习了 Common Lisp、OCaml、Factor、Haskell,最后还接触了 Clojure。
大约也是在那个时候,我联系了 Christian Schafmeister 博士,并讨论了他的项目 Clasp。Clasp 是基于 LLVM 的 Common Lisp 实现,他构建的东西与我想做的非常相似,唯一不同的是,我希望更多地借鉴 Clojure 而非 Common Lisp。我曾考虑过加入他的团队,我们也讨论了这一可能性,但最终我还是决定走自己的路。尽管如此,Clasp 的存在本身对我来说就是一个巨大的激励,它证明我的目标是可以实现的。
之后的八年
在我尝试过的所有语言中,只有 Clojure 和 Rust 是能够真正让我坚持下去的两种语言。它们彻底改变了我写代码的方式,也改变了我对程序的思考方式,特别是 Rich Hickey 的演讲,给了我极大的启发。在这八年里,我多次重写 jank,每次都采用不同的设计,试图找到一个“最合适”的方案——我希望开发出一种融合我对 C++、Clojure 和 Rust 的喜爱的语言。不过这确实是一项艰巨的任务,毕竟 Clojure 与 C++ 和 Rust 有着很大的不同。
在此期间,我继续从事 C++ 的游戏引擎开发,还与他人共同创办了一家电子竞技初创公司,并用 Clojure 做了 5 年的全栈开发。之后,我就加入了 EA,并开始用 Clojure 开发 Web 产品。
与此同时,我还一直在研究 jank,深入学习 Clojure,并最终明确了我的第一步应该是将 Clojure 引入本地世界。这个清晰的目标导向促成了 jank 最新版本的诞生,经过过去两年的不断打磨,这个版本已经具备了坚实的基础,并且拥有了一个逐渐壮大的社区,而这个社区几乎完全来自 Clojure 的支持者。
过去两年的努力
当我明确知道自己想要什么之后,我便意识到需要更多的时间来开发 jank。为此,我决定采取一些措施。首先,我选择了在 EA 转为兼职工作,即每周在 EA 工作三天,然后有四天可以专注于 jank 的开发。其次,我开始在美国和欧洲的 Clojure 会议上发表演讲,并参与了多个播客采访,同时发表了与其它技术团队合作的文章。不仅如此,我还建立了 jank 的网站和博客,并开始构建 jank 社区。然而,最重要的的工作是:我全力投入到基于 LLVM 构建本地化 Clojure 方言的工作中。如果用几个有趣的指标来衡量这个工作量,那我大约进行了 1200 次提交、修改了大约 1000 个文件和近 60,000 行代码。
可以看到,jank 的人气迅速上升:
(在过去十年间,jank 项目在 GitHub 上的 Star 数大幅增长。)
当下的状况
如今,我认为 jank 是最受欢迎的未发布 Clojure 项目之一(HumbleUI紧随其后)。社区对 jank 的支持和兴趣都异常旺盛。我经常收到来自用户的私信、邮件等,询问 jank 是否已经准备好可以使用。我也与数十家公司的创始人和技术主管进行了交流,他们在各种 Clojure 会议和聚会中都表达了对使用 jank 来解决性能、效率、可用性或互操作问题的兴趣。
在过去的五个季度(15个月)里,我每个季度都向 Clojurists Together 申请并获得了资金资助。虽然这些资金并不能完全支付生活开销,但确实对我提供了很大帮助,同时也进一步证明了社区对 jank 的兴趣。
然而,jank尚未完成,还有大量的工作等待着我。
我感觉每天、每周的时间都不够用。
我感觉到 jank 背后有着强大的动力,而我不想失去这一势头,不想错过这个机会。
与此同时,我也觉得没有什么事情比开发 jank 更值得我去专注了。
因此,我决定辞去 EA 的工作,全身心投入到 jank 的开发中。
还好,我也有底气做出这样的决定。是的,我在 EA 有一份很棒的工作,担任领导职务,负责我创办的产品,享受兼职工作的灵活性并保留福利。这个工作待遇确实非常好,EA 也是一个非常棒的雇主。但我愿意放弃这一切,去面对财务上的不确定性,虽然没有机会获得巨额回报,但我将拥有更多的时间来专注于我真正想要构建的东西。
我愿意放弃这一切,换取更多的时间来进行“黑客式”开发。
我的财务计划
许多人问过我关于辞去工作、全身心投入到 jank 开发中之后的财务安排。简单来说,我 2025 年的目标就是发布 jank,并为我的作品感到自豪。我喜欢在自己的项目上进行“黑客式”开发,看到自己所积累的社区和动力,我就兴奋不已。我希望可以享受这一过程,也请大家放心,jank 将永远保持免费和开源。它不仅是我的项目,也是我献给所有人的礼物。
或许我能为 Clojure 社区创造足够的价值,进而吸引某些愿意支付报酬让我继续开发 jank?这是最理想的情况,但前提是我可以按自己的方式继续工作。但即便没有这样的机会,我仍然会在 2025 年全年专注于 jank,确保它能顺利发布。
明年,我会重新评估情况,为 2026 年做出决策。无论如何,我都会持续地开发 jank。毕竟,这段旅程已经走了十年,预计十年后我依然会以某种形式继续开发 jank。
与此同时,我会继续引导人们通过 GitHub 赞助来支持项目,并继续申请各类开源资助,持续构建社区,当然,最重要的还是不断推进 jank 的发展。
开发路线图
今年,我还有大量的工作要完成,以下是前十大优先事项:
(1)改进错误报告机制
(2)实现与 C++ 的无缝互操作性
(3)支持全项目的 AOT 编译
(4)与主要 Clojure 核心库的功能平齐
(5)支持 nREPL 服务器
(6)支持 Leiningen 和 deps.edn
(7)在主要 Linux 发行版和 macOS 上发布 jank 安装包
(8)完善文档
(9)进行大量的稳定性测试和健壮性测试
(10)社区拓展、支持与发展
我可能无法在 2025 年完成所有这些任务,但我会在这些任务上取得足够的进展,确保 jank 能够正式发布。
超越 Clojure
我说过,开发一个本地化 Clojure 只是实现我理想编程语言的第一步。实际上,jank 不会止步于此。尽管 jank 将继续作为 Clojure 方言存在,但它也会根据需要支持更多的功能,如渐进式类型系统、更明确的内存管理、基于值的错误处理以及更强的模式匹配等,都会在 Clojure 的基础上有所改进。这将让开发者拥有一种更高的控制度,使得程序的某些部分可以保持完全动态并且进行垃圾回收,而其他部分则可以更严格地控制并进行更好的优化——这正是我在编程时所追求的控制力。
总结
到目前为止,这是一段漫长的旅程,而这仅仅是个开始。三年后,我们将看到用 jank 编写的新游戏引擎、jank 与现有游戏引擎的结合、GUI 开发、Web 服务、所有你喜爱的库对 jank 的支持、WASM 构建以及顶级的性能表现……如果所有这一切都能实现,那必然令人惊叹。
来源:CSDN