人物介绍
PROFILE
吴京润 @runfriends
半路下水做了程序员,编程浮沉二十载,至今还在编程一线搬砖。目前在一家手机软件公司担任服务器应用架构师。
我与仓颉的故事
初识
自从华为516事件后,我就开始关注华为的各种公开发布会、开发者大会、分析师大会。从一次鸿蒙发布会了解到华为正在研发仓颉编程语言,并处于内测阶段。那个时候我就想参加内测一睹真容。那阵子刚好周末节假日没什么事做,我没有任何业余爱好,电视剧只看刑侦剧,不过哪有那么多刑侦剧可看,总之感觉无聊得很,而且这个状况应该会持续很久。于是就想学习一门新的编程语言打发时间。在接下来的半年,我时不时地在各种技术群询问,谁知道怎么参加仓颉内测。终于一个鸿蒙群群主发了内测申请二维码。填写之后,等了大约一周终于收到了回复,要求打印并签署保密协议。那阵子刚好是疫情最严重的时候,我居家办公,虽然没有被隔离,但是路上行人稀少,只有理发店在营业。在大街上找了一段时间打印店,几乎要放弃了,突然看到一家店开门有人出来了,我心想应该有戏。门又跟着关上了,我还是想试试,就上去拍卷帘门,问有没有人。里面开了门,说不要这么大声。我明白了原来是在偷偷营业。完成了一次地下党接头式的打印、签名、扫描。又等了一周,得到内测资格。花了一个周六白天读了一遍文档,我就感觉这就是我最喜欢的编程语言。
渐进
接着我就想到测试一种编程语言的最佳方式当然是用它开发一个项目。我想到自己开发过JAVA工具库,想从仓颉找到与JAVA类似的API以便开发仓颉版。接着立即通读了一遍API文档,找到了几个我想要的API,但是大部分都没有,为了开发工具库首先需要开发一些基础工具API。我先把找到的那些API做了几个简单测试,发现了BUG,发了ISSUE,没想到第二天就得到了回复,接下来每天下班都在读API,试验自己的一些设想,然后发ISSUE。每次回复都很快,我得到了正反馈。在某个版本发布后,标准库终于能够支撑起开发一个简单的工具库了。那个时候我对自己也没有足够的信心,想先开发简单工具熟悉语言特性。刚开始也没想开发一个特别复杂的工具库。随着每个月的版本更新,发现的编译器和VSCode插件崩溃问题都会提交到社区,开发的功能都要测试能不能使用,解决后再继续开发新功能。随着代码越来越多,信心也越来越足,各种想法逐渐得到了实现,从刚开始只想开发几个集合类型,到现在开发了定时器、IOC AOP ORM、负载均衡策略、常用设计模式、UUID JWT,还有很多标准库扩展。整个开发过程就在开发功能,等待新版本,改代码支持新版本,开发新功能中不断重复。现在的工具库随着标准库的变化,不断地删除修改添加新功能,到现在已经大约有五万行代码。在这个过程中,我的编程水平也得到了提高。
尤其让我惊喜的是,仓颉为了减少运行时BUG做出的努力,这些努力体现在很多语法特性的细节上。比如,JAVA和C都允许自增自减运算符参与算数运算,但是它们的编程规范又禁止这样做,这样的行为会带来困扰,容易出意料之外的BUG,而仓颉干脆禁止了这个特性。还有仓颉的表达式特性,一切都是表达式,给开发带来了很多灵活性。在容易出问题的地方做了很多限制,减少BUG;除此之外又尽量增加了灵活性。我感觉它是最像动态语言的静态语言。静态语言给我的感觉冰冷坚硬;动态语言自由度相当高,项目规模大了容易出错。仓颉把二者神奇地结合起来,既有静态语言的冰冷的限制,也有足够的灵活性,而且在编译期就做到了,而不是依赖运行时生成。它就像一个坚硬的模子,而我的思维习惯刚好嵌了进去。这真是一个神奇的体验。
(文中提到的工具库)
展望
我刚学编程的时候就一直希望有一天能用国产硬件运行国产操作系统的计算机使用国产编程语言开发应用程序。如今这个愿望终于要实现了。仓颉是全场景应用开发语言,但是要实现这个目标,道阻且长,不过我相信这肯定是能够实现的目标,未来十年以后客户端、服务器、UI、AI、嵌入式各种应用开发领域,仓颉必然各有一席之地,未来可期。
也诚挚地希望广大开发者加入仓颉生态建设,这不但是编程界的盛举,也必然是一大蓝海。将来仓颉生态有自己的一份贡献,这份价值无可估量。
欢迎关注下方公众号投稿参与本系列,讲述你与仓颉语言的故事