大概所有程序员都梦想有一个世界,这个世界只有一种编程语言,通过这种完美的语言就可以解决所有问题。 然而现实世界的编程语言却多达上千种,虽然其中流行的大概只有C语言、Java、Python等十几种,但也让这群程序员的头发止不住的往下掉。 没有一种万能的语言,能开发各种平台的程序。如果问“世界上最好的编程语言是什么?”,这些程序员可能也会为这个问题辩得热火朝天。 就在最近的华为开发者大会 2021上,华为消费者业务软件部总裁龚体表示,在不久的将来,华为将发布为HarmonyOS全新研发的编程语言。对于程序员来说,未来或许将又多一门可能要学习的语言。 编程语言的难题:空有屠龙技 通常情况下,为了满足开发各个方面的需求和减少开发的难度,那些软件工程师就想着去开发更适合平台开发的编程语言。这时候就出现了编程语言的进步。 几十年的时间里,不仅出现越来越多的编程语言,也有编程语言随着时代发展地位不断上升。谁能想到当初用于开发遥控器程序的Java,会发展到应用如此广泛的地步。 尽管目前已经有成百上千种编程语言,但其中国产编程语言却少之又少,流行的十几种编程语言中国产的几乎不见踪影。这些编程语言的设计者和开发者无一例外全是外国人,在这里我们几乎失去了发言权,国产编程语言为何没有崛起? 做不做是一回事,做不做得出来是另一回事。实际上,设计一门编程语言的技术门槛并不算高。 一些游戏公司也会设计自己的编程语言,这样既能建立自己的游戏生态,也利于保密防外挂。这些年来也有越来越多的中国人加入到编程语言的研发行列,只不过设计的语言仍然有这样或那样的不足。 早在七八十年代,国内就出现了一款中文培基编程语言,是Basic语言的中文本地化版本;还有基于Python即时编译语言的中文编程语言中蟒;专注于桌面软件开发,一直保持活跃更新的aardio;拥有独立编译器的知名中文编程语言易语言等等。 GitHub上一个名为“dongbei”的项目,由用户zhanyong-wang开发,是一个极具特色的东北话编程。这个语言把编程里的英文全部替换成了东北话,唠唠=print,没毛病=true,整完了=end...... 但是想要做出广泛流行的国产编程语言却不太容易。大部分得到承认的程序语言都有一个总体的设计哲学或是指导原则,用来组织关键字和语法,也就是交给程序员使用的指令集合,并形成一个逻辑上的整体。 Java 和 C++以自身更加精炼以及强大的语言属性帮助谷歌把一件事做到了极致,那就是搜索,而PHP帮助 Facebook快速进行信息流、信息模块等一系列新事物制造实验。 编程语言的不断进步,本质上是为了解决开发各个平台以及平台发展过程中现有编程语言难以解决的程序问题。 新语言诞生的原因,第一个需要考虑的是,程序员为什么花费时间精力重新学一门编程语言,这是否值得。在近几十年的发展过程中,市面上商业的和开源的语言可以选择的已经有不少,行业内对新语言的需求并不是太大。 而研发的新编程语言是否比现有语言更加优秀或者拥有现有语言所不具备的优势,这将决定程序员是否有动力去学习并推广一门新兴编程语言。 至于第二个原因,新编程语言的诞生则很有可能是因为新的需求空间、新的生态形成所带来,比如B语言、C语言的诞生。 20世纪60年代,美国AT&T公司贝尔实验室研究员Ken Thompson(肯·汤普森)想玩自己曾经编写的游戏Space Travel(星际航行),在编写游戏运行的系统UNIX的过程中,为了让游戏更加高效的运行,研发了B语言。 同样酷爱Space Travel游戏的Dennis M.Ritchie(丹尼斯·里奇)也加入了Ken Thompson“游戏事业”中来,在B语言基础上设计改进,C语言因此而诞生。相比B语言,C语言具备了良好的移植性,可以让软件移植到各种不同的硬件系统。 而华为选择为HarmonyOS研发全新编程语言的原因显然是后者。一方面,华为正在打造鸿蒙生态,可以为新编程语言打开需求空间;另一方面,新研发的编程语言本质上可以帮助华为加强未来对鸿蒙生态控制以及编程语言标准的把持。 鸿蒙作为一款桌面操作系统,拥有属于自己的高级编程语言和编译器是一个更好的选择。比如可以支持鸿蒙的GUI开发,因为GUI结构通常很复杂,通常需要一定的语言特性支撑,而且这个语言必须要与底层容易解耦。 “仓颉”再现的可能性有多大 实际上,在今年9月份,华为副总裁、计算产品线总裁邓泰华在华为全联接大会2021上接受媒体采访时就提到:华为将推出自研的编程语言仓颉,将鸿蒙和欧拉系统在应用开发生态上进行打通。 而据天眼查专业版APP显示,早在去年8月,华为就已申请注册“仓颉语言”商标,只是目前尚不知晓“仓颉语言”是否就是“为HarmonyOS全新研发的编程语言”。 那么问题来了,华为为HarmonyOS研发全新编程语言的成功率大概有多大?能否确保它成为被广泛使用并具备影响力的语言? 首先,研发编程语言虽然技术门槛不高,但同样需要具备一定的实力才行。 因为编程语言只是提供了功能调用的使用框架罢了,完善的编程语言还需要在框架内做好填充。比如编译型语言强调硬件资源的调用,脚本语言强调库函数的调用。一门语言能操控多少硬件资源和调用多少库函数,是语言能否流行的重要因素。 而且,编程语言的每一次飞跃都会在编程思想、软件实现、交互方式等方面带来巨大地提升,但是有多少人有自信说自己写的汇编代码可以比C/C++经过编译器优化后的代码更快?相信大多数人很难做到。 其次,华为打造的鸿蒙生态能为编程语言提供多大的需求空间。 在物联网世界,不同的物联网设备,可能应用开发者会采用不同的编程语言进行开发,同样有可能导致碎片化的风险。 目前所有应用生态几乎全部基于智能手机平台。虽然智能手表、智能电视、车机等IoT设备已经出现好几年,但是生态发展缓慢。在物联网设备越来越多的同时,设备协同能力不足的缺陷愈发凸显,导致物联网生态整体效率不高。 而统一的编程语言可以有效降低应用开发门槛,避免重复开发、二次开发的问题,帮助HarmonyOS实现弹性部署、超级终端、一次开发多端部署的核心价值。 余承东在今年的华为开发者大会上称,自从今年华为P50系列上市,首次在智能手机上搭载,迄今已有超过1.5亿设备使用HarmonyOS,包括智慧屏、平板、手表、智能音箱、IoT设备等。预计年底,搭载HarmonyOS的1+8产品将达到2亿。 HarmonyOS给所有应用开发者提供分布式编程框架,让大家用统一的编程语言,只写一次的业务逻辑就能够运行在所有设备上,可以最大限度地实现生态在各个孤立设备上的共享。 也就是说,华为相当于把研发的编程语言和鸿蒙生态进行了绑定,一荣俱荣,一损俱损。如果鸿蒙真的能挺过16%的生死线,并且站到物联网生态的顶端,那么为鸿蒙自研的编程语言还是很有想象力的。如果鸿蒙的物联网生态不太成功,自研的编程语言也很难发挥作用。 最后,还是要回到开头所述:世界上并没有完美的编程语言,任何语言在诞生之初,其缺陷就早已注定。 有些编程语言(例如Ruby和Ruby on Rails),由于运行时的速度和启动速度不够快,无法支持全面的商业产品。而有些语言(比如PHP),由于安全性的问题导致Facebook等公司逐渐放弃了使用。 这几年来Java虽然保持着顽强的生命力,在 TIOBE 指数上稳居榜首,也一直是 Android 开发的定义语言。但随着 Kotlin 被更广泛地采用,它的地位也受到了冲击。 因此,大多数具有一定成熟度的系统或生态在发展的过程中,也有可能会再去选择第二种语言,然后是第三种语言。时代在发展,语言在发展,系统的需求在发展,下一代程序员也在进步。 另外,开发效率和运行效率也像鱼和熊掌一样,两者不可兼得。 如果研发的编程语言偏向底层,过于低级,虽然运行效率会比较高,但是开发起来比较困难,对于开发者不太友好;如果研发的编程语言偏向于高级语言,虽然开发程序容易,但是却会牺牲运行效率,这也是华为需要去考虑的因素。 昔者苍颉作书,而天雨粟、鬼夜哭。如今在这个互联网时代,组成庞大数字世界的则是一行行代码,华为能否真的在数字时代再现“仓颉”,令人期待。 |
|