The trial of Huawei's programming language "Cangjie" has started. Some people think it is Chinese language, but this is just a feeling. Don't underestimate Huawei's ambition
Huawei's "name" focuses on traditional culture, Hongmeng operating system, Kirin chips, Cangjie programming language and so on.
A few days ago, Huawei's programming language lab released a trial registration questionnaire for Huawei's new language for some developers. According to what Huawei has previously announced, this "new language" should refer to the self-developed programming language "Cangjie" announced by Huawei at the 2021 Developer Conference.
Two pupils and four eyes, this is not a human being, it is a god
华为编程语言“仓颉”试用开启,有人据此认为是中文语言,但这只是种情怀,莫低估华为的野心
华为“起名字”盯上传统文化,鸿蒙操作系统,麒麟芯片,仓颉编程语言等等。
日前,华为编程语言实验室,面向部分开发者发布了华为新语言的试用报名问卷。根据华为此前公布的内容来看,这款“新语言”,指的应该就就是华为在2021年开发者大会上,公布的自研编程语言“仓颉”。
双瞳四目,这不是人,是神
First of all, programming languages are not difficult. A computer science graduate can make a DSL, and an experienced programmer can make a language. The key is to have your own advantages and have enough ecology to compete with other languages, otherwise it will be useless.
Secondly, if you just imitate the structure of the existing Fortran, lisp, c, c++, rust, JAVA, JavaScript, Python, etc., without proposing substantial innovation, it will solve the problems that cannot be solved by the existing languages or are difficult to solve. If the substantive pain point to be solved, then it makes no sense to build this wheel. To create a new language, it is necessary to define at the earliest times what the language is good at and what it is good at that other languages are not good at. Current languages, except lisp, are all c-like, or Fortran-like, which is determined by the von Neumann structure itself. However, each language has its own strengths and division of labor, and none of them are perfect, but they all solve some of the problems faced by the previous languages, and all provide programmers with a certain degree of convenience.
首先,编程语言并不难,一个计算机系毕业生都能做出一个DSL,有经验的程序员就能做出一个语言。关键是要有自己的优势,有足够的生态才能和别的语言竞争,不然做出来什么用都没有。
其次,如果只是模仿现有的Fortran、lisp、c、c++、rust、JAVA、JavaScript、Python等等这些语言的结构,而没有提出实质性的创新,解决目前已有语言所不能解决,或是难以解决的实质性痛点,那么造这个轮子就没有意义。若要创造一门新语言,就必须要在最早的时候定义出这门语言的特点,以及它擅长做,别的语言却不擅长做的事情。现在的语言,除了lisp,都是c-like,或者说Fortran-like,这是冯诺依曼结构本身所决定的事情。但是每种语言都有自己的擅长和分工,都不会是尽善尽美,但都解决了之前的语言所面临的一些问题,都为程序员提供了某种程度上的便利。
华为为何要自研编程语言?
华为并不是第一家自主研发编程语言的企业。苹果的Swift、谷歌的DART、微软的TypeScript等都是企业自主开发的编程语言,现如今越来越多的企业投入到了自主研发编程语言的行列中来。通过自主研发编程语言,可以使企业的工作效率得到大幅度提高,因为自主研发的编程语言可以和企业的产品更加契合,使用起来更加方便,这样就能够减少员工在工作中遇到的困难和瓶颈,也能够提高这个企业的工作效率。
华为想要开发一门全新的编程语言,必须有一个全新可适用的场景。如果不具特色,那么必定会成为一种“门面语言”。据悉,仓颉是华为根据HarmonyOS量身打造的编程语言,通过仓颉,鸿蒙与欧拉将在应用开发生态上进行打通,拓展系统的可能性。
早在数年前,华为就开始了仓颉的布局。在2020年,华为申请注册了“仓颉语言”商标,商标注册分类包含了运输工具、科学仪器以及网站服务
编译器是连接人类世界与机器世界之间的一座桥梁,任何的程序都需要经历软件开发的过程,软件开发使用的语言是易于程序员理解的高级语言,程序运行需要转换成可以高效执行的机器码,这样的转换过程就是由编译器完成的。可以说编译器是用来生成软件的软件,是连接软件与芯片的桥梁,其性能,效率直接影响到最基础的用户体验。
华为官方尚未公布太多关于仓颉语言的内容,但有观点认为,仓颉有可能会成为华为方舟编译器的开发语言,但这一观点也尚没有明确依据。
2019 年,华为宣布方舟编译器开源。方舟编译器是为支持多种编程语言、多种芯片平台的联合编译、运行而设计的统一编程平台,包含编译器、工具链、运行时等关键部件。华为方舟编译器是华为公司专门为软件厂商研发的统一编程平台,包含编译器、工具链、运行时等关键部件。该编译器支持多种编程语言、多种芯片平台的联合编译与运行
方舟编译器开源项目 OpenArkCompiler 的 1.0 版本包含前端、中端、后端等,Maple 1.0 提供了一个 C 编译器、稳定的 aarch64 静态代码生成器,以及一整套优化。
据介绍,OpenArkCompiler 能够将不同语言代码编译成一套可执行文件,在运行环境中高效执行:
支持多语言联合优化、消除跨语言调用开销;
更轻量的语言运行时;
软硬协同充分发挥硬件能效;
支持多样化的终端设备平台。
华为消费者BG软件部的总裁王成录博士,提到了华为为什么要搞这个实验室、做编译器这些东西。
简单来说,就是华为很早以前就发现,在核心网设备上自己编译,可以大大提高性能(通信设备也是有性能要求的),后来就开始有小规模的团队来做编译。也就是说,在做方舟编译器之前,华为已经做了很多年编译的相关工作了。在做智能手机的过程中,华为想把手机做到像iPhone一样流畅,但遇到很多困难,其中很重要的一点就是Android的虚拟机机制。所以他们做了一个很重要的决定——(研发)方舟编译器,事实上这不仅是针对手机平台、还包括通信设备等,将华为所有的编译工作都统一起来,全面提升效能。
然而,方舟编译器面临着Java的反射机制等问题,这些是需要解决的。
不管是面向消费者应用场景(前端)的鸿蒙操作系统,还是面向云端服务器领域(后端)的欧拉操作系统,底层都没有脱离现有的操作系统框架,鸿蒙操作系统支持Java和JS,官网上现在还有Kotlin的demo代码。欧拉操作系统,依然是Linux内核的操作系统,前后端操作系统、编译器都有了,就差编程语言了。
华为研发新的编程语言,本质上是为了更深层次的和自己的生态系统进行整合,是一种正常的商业行为。应该不需要太长时间的等待,我们就能够一睹这款自研编程语言的真容,以及它的实际表现了。
仓颉会是中文编程语言吗?
从仓颉这个名字,以及“仓颉造字”这段国人耳熟能详的故事,不难看出华为对这一语言的信心,以及对它寄予的希望。
有人根据“仓颉造字”认为这种华为语言将会是基于中文文字和语法的属于中国人的开发语言,理想很美好,现实上并不可能。
虽然我们见的不多,世界各国都有一些程序员想开发一个以本民族语言为基础的编程语言,比如俄文、阿拉伯文等。但毫无例外的,都没有流行起来。
高级计算机语言程序中任何标识都可使用中文字、词、词组和句子的语言文法,又有与中文相匹配的语言语法规则可称为汉语编程语言,使用这种语言编写的程序的过程就是中文编程。中文编程技术关键不是简单程序编写汉字标识使用,而是程序代码的编译技术必须自己掌握,编程与编译必须互为统一发展。
中文编程语言项目早就有不少了,
比如中蟒、易乐谷、丙正正、易语言、易脚本、世宝脚本、O语言、习语言等
易语言
又如开发者用中文编写的操作系统!还发明了甲乙丙语言!网友表示是另一OS的二次开发,甲语言是汇编换马甲
和【编译原理】年度最骚的编程语言!卡内基梅隆大四学生发布文言文编程语言
这些中文编程语言,要么是炫技性质的个人项目,要么是一厢情愿,即使有部分亮点,如果仅仅把一门编程语言局限在懂中文的开发圈子内,不能推广到全世界,使用者太少,缺乏生态圈、第三方库和社区支持等,并无实际意义。
普通人认为,中国的编程语言,一定要是中文的。但这恰恰无法实现,如果一种编程语言是中文的,它就无法被其他国家的人使用,就不可能成为一种主流的编程语言。Python之父是荷兰人、Ruby之父是日本人,他们所发明的编程语言都是基于英语,能方便全世界开发者使用。。
3月26日,一个起名为“人人都是程序员”的创作者正面回应了传闻。他说“就在当天,自己成功运行华为仓颉国产编程语言的‘Hello World’,成为了一名仓颉程序员”,可见这回对外开放的,正是仓颉。不久之后,就将问世。对于是不是汉字,他在评论区补充道:不是中文编程,特点是简单易上手,可惜自己已经跟华为签了保密协议,不方便发代码。
仓颉领头人是南京大学的计算机科学与技术系博士生导师,冯新宇。
根据南京大学的官网介绍,冯新宇教授本硕毕业于南京大学计算机科学专业,此后于耶鲁大学就读计算机科学博士,期间曾经在AT&T实验室实习。
冯新宇教授主要从事程序验证、并发理论、程序设计语言理论方面的研究,是我国高校编程语言方向的专家。
2010-2017年期间,冯新宇教授曾经在中科大就任教授,并于18年以后来到南京大学,目前在南京大学就任教授,并于2019年带领团队获得PLDI杰出论文奖。
此外,冯新宇的导师、中科大少年班的校友邵中教授,硕博毕业于普林斯顿大学,对编程语言及编译系统了解非常深入。
邵中教授曾为SML语言研发编译器SML/NJ,对“带证明可信软件”领域有深入研究,在POPL上发表过5篇论文,也是国内首个在POPL上发论文的学者。