华为仓吉编程语言发布,中文编程语言骗局终告破灭。超级缝合怪,未必不是好的编程语言,但仓吉的成败,更加依赖其他因素
6 月 28
OpenSource, 华为很厉害 Dart语言, Go语言, HDC大会, LLVM编译器, Objective C, Rust语言, Swift, TypeScript, 中文编程, 中文编程语言, 互联网编程, 人工智能编程, 仓吉, 仓吉编程语言, 仓颉编程语言, 代码库, 全域编程, 兼容性, 内存安全, 内存泄漏, 内存越界, 前端开发, 华为, 华为仓吉, 华为仓颉, 后端开发, 多核心设计, 嵌入式系统, 并发安全, 并行处理, 开发效率, 开发者社区, 开源项目, 技术革命, 数据类型, 新兴编程, 新技术, 新技术解析, 新语言发布, 易用性, 易读性, 版本更新, 现代编程, 瑞斯克5, 生态建设, 科学计算, 科学计算适用, 程序员调试, 程序完整性, 程序开发., 程式优化, 程式设计, 程式调试, 类型安全, 编程发展, 编程工具, 编程工具链, 编程平台, 编程效率, 编程教育, 编程新法, 编程未来, 编程案例, 编程模式, 编程环境, 编程生态, 编程社区, 编程简洁性, 编程规范, 编程语言, 编程语言比较, 编程语言特性, 编程语言进化, 编程趋势, 编程逻辑, 编程革新, 编译器选择, 网络设备, 自主控制节奏, 自主研发, 英特尔CPU, 跨平台编译, 软件工程, 软件开发, 软件更新, 软件架构, 高性能程序, 高效编译, 麒麟CPU 华为仓吉编程语言发布,中文编程语言骗局终告破灭。超级缝合怪,未必不是好的编程语言,但仓吉的成败,更加依赖其他因素已关闭评论
大家好,欢迎收听“老范讲故事”的YouTube频道。今天,咱们来讲一讲华为,仓吉编程语言终于来了。在刚刚过去的HDC,也就是华为开发者大会上,除了发布鸿蒙新一代操作系统,感谢了一大堆友商,还故意把腾讯的名字落掉之外,还发布了众望所归,或者大家期盼已久的仓吉编程语言。2020年,华为就申请了仓吉的商标,而且告诉大家说,我要去做编程员了。当时很多人就直接疯了,说哎呀,华为要做中文编程语言,我们再也不需要使用英文字符去写程序了,我们要用古老的中文去写了。
在这件事情上呢,华为采用了叫不承认不否认,不负责的态度。什么意思?就是华为自己从来不承认说,我要做中文编程语言,没有任何中文编程语言相关的报导是从华为出来的。但是华为呢,也不否认任何人说华为要做中文编程语言了,他也不出来辟谣,也对所有市面上流传的信息不负责任。反而不是我说的这件事情呢,传来传去,传来传去,传到2024年,这个仓吉编程语言终于发布了。
对于程序员来说,中文编程语言这件事就是个笑话,不可能有,想都不用想。为什么?因为中文的输入效率很低。我们现在使用这种26个字母的英文键盘,你打英文肯定是最快的嘛。这么大量的内容要输进去,你要打中文拼音,然后再挑字,有时候还写错别字,这玩意咋弄?而且中文那么多的字之间,入和这个人为和末它很像,你到最后找bug,你咋吵?所以,这件事是不可能的,想都不用想啊。现在,华为的仓吉编程语言终于发布了。
首先,说结论是:它不是中文的,而是英文的。跟中文有关系的部分不是完全没有啊,是什么呢?就是它的名字——仓吉编程语言的这个语言名呢,是仓吉的汉语拼音,也不敢写中文。它的程序后缀是CJ,仓吉嘛,仅此而已啊。剩下的跟中文就没有任何关系了。大家要知道,我对于华为的看法呢,就是他们的技术一直都还是可以啊,但是他们使用的很多手段,让我觉得比较不齿。但是技术我从来不质疑啊,包括他们很多生产的设备的工艺,都是很好的。
咱们讲讲仓吉编程语言到底怎么样。仓吉编程语言呢,是一种缝合怪。他把现在最好的这些语言特性,都缝在一块。但这个呢,并不是贬义词。其实所有的编程语言,就是新发展出来都是缝合怪。什么意思呢?编程语言发展一段时间以后说啊,现在的新的编程环境啊,新的程序编造的任务有些什么变化了,那么我们有一些新的编程语言的特性需要出来。那么只要有新的编程语言出来,他们就会把所有这些新特性都塞进去。所以只要是新编程语言都是缝合怪,不是说到华为这都变缝合怪了。
最后,这个编程语言到底能不能成功啊,是不是大家喜欢用,跟它是不是缝合怪本身,这件事并没有关系。编程语言本身呢,其实也一直在发展。发展的方
可能就是其他新编程语言的3-5倍,或者有的可能达到十几倍。包括Objective C,这是苹果原来在iOS上开发用的。这种语言相对来说比较繁琐。现在新的语言都比较简洁,相对来说更易读易懂。以前为什么搞得那么复杂?因为那时候的都是软件工程,有架构师负责设计,然后底下的人必须按照这种复杂的规则工作,像螺丝钉一样。你写的越严格定义,写的越长,它就越不容易出错。通过这样的方式来实现。
但是现在呢,都是小团队开发,甚至有好多代码是一两个人写的。你让他写一大堆又臭又长的代码,人家觉得才不费这劲呢,太累了。然后易读性这个事,程序是一个工程,即使到现在可能也还是工程,需要多个人来配合。你这个人写完程序以后,下一个人读不懂了,这玩意你咋弄啊?或者说我自己写的程序,过俩月我再看,我自己看不懂了,这事也没法整啊。所以程序一定要易读。
然后第三个呢,叫什么就是适合描述当前主要任务。因为大家知道,随着计算机行业、互联网行业,包括现在人工智能行业不断地往前发展,我们用写程序的方式要解决的主要问题和矛盾转变了。以前的很多程序语言其实不太适合描述当前的任务。你描述的过程,可能会变得非常的冗长。这个事是非常麻烦的。所以呢,就会要求编程语言发展。这个发展实际上是两个方向:第一个方向呢,就是传统编程语言其实也在一个版本更新的过程中,不断地在优化和改进。
第二个方向,就是新兴的编程语言,它们在设计之初就考虑到了现代软件开发的需求,更加注重易读性、易用性和描述当前主要任务的能力。这些语言往往更简洁,语法更贴近自然语言,使得开发者能够更加专注于问题本身,而不是语言的细节。这种趋势使得编程语言的发展更加多元化,满足了不同场景和需求下的开发工作。
一个版本往前迭代的二个分,就是要不断有新的编程语言出现。那么,新的编程语言到底需要具备什么特性呢?让我们稍微讲点技术,我尽量讲得让大家能听明白。现在有很多新的编程语言,比如说谷歌现在在推广的Kotlin,安卓里边现在使用Kotlin;苹果做的Swift;还有Go和Rust,这些都是属于新编程语言。它们都会有一些共同的特性。为什么讲这个?因为,仓吉把所有东西都放到自己身上,谁最后一个出现,就会把前面的都放到自己身上。都有哪些新特性呢?
第一个,它内存安全。程序运行的时候,在内存里头有执行代码,有数据代码。传统的编程语言呢,会经常出现一些叫内存越界和内存泄露的问题。所以,新的编程语言一定要解决这个问题。内存越界是什么意思?就是我告诉操作系统说,我需要10个字节的内存,它分配给我了,然后我去访问第11个字节去了,这个事肯定是不行的。他分配给你以后,实际上是告诉你说,给你一个地址,说这个地址就是你的,从这个地址往后十个字节都是你的。我去访问第11个字节,这事肯定是错的。访问其他的,在我这个地址范围之外的地方,都是错的。什么人去干这种事?病毒都是干这个事的,还有很多破解,都是要内存要越界的。
那么内存泄露是什么意思?就是我分配了10个字节,用完了以后,我得告诉操作系统,我用完了,释放掉。然后操作系统呢,再有人来分配的时候,再把这块内存再分配给别人。
他是这样去工作的。但是如果我光去调用了,我告诉操作系统来给我分配,内存分配回来了,用完了以后呢,我没有去释放啊。最后积攒了一大堆没释放的内存,就是内存的碎块在这个计算机里头啊。这叫内存泄漏啊。传统的编程语言都是这种问题啊。现在新的编程语首先要解决这个啊。第二个呢,叫什么叫并发安全啊?什么叫并发安全?现在的这个计算机呢,甭管是手机啊,电脑啊,还是平板啊,其他所有设备吧,都是多核心设计啊。就是你的CPU上有非常多的计算核心。那么我们需要什么呢?并行处理。传统的程序是顺序的啊,执行完第一句,执行第二句,执行完第二句执行第三句,对吧。那么现在呢,说我们要提高效率,我一看哦,8个核心,我就赶快把这个数据拆好了,分配到八个核心里,你们都去执行,执行完了以后,把执行结果拿回来,我再把这些执行结果拼在一起,再接着往前走。但是在这个过程中呢,却有个问题:计算核心他在工作的时候呢,不能随便去访问外边的数据啊。他只能访问他自己分配到这个计算核心里面缓冲里边的数据。所以呢,一般情况下,县城跟县城,或者说叫并行运行的这些程序之间是隔离的。你不能说我执行一段时间以后,我要到外面去访问一下别人的数据,这事是不允许的啊。这个就叫并发安全。在写程序的时候,你先要把这个事情搞定。然后第三个呢,是类型安全。现在新的编程语言大部分是强类型,就是我们规定好你这个东西到底是什么类型,你再去给他赋一些其他类型。
他是这样去工作的。但是如果我光去调用了,我告诉操作系统来给我分配,内存分配回来了,用完了以后,我没有去释放。最后积攒了一大堆没释放的内存,就是内存的碎块在这个计算机里头啊。这叫内存泄漏啊。传统的编程语言都是这种问题啊。现在新的编程语言首先要解决这个。
第二个呢,叫并发安全。什么叫并发安全?现在的这个计算机呢,甭管是手机啊,电脑啊,还是平板啊,其他所有设备吧,都是多核心设计啊。就是你的CPU上有非常多的计算核心。那么我们需要什么呢?并行处理。传统的程序是顺序的,执行完第一句,执行第二句,执行完第二句执行第三句,对吧。那么现在呢,说我们要提高效率,我一看哦,8个核心,我就赶快把这个数据拆好了,分配到八个核心里,你们都去执行,执行完了以后,把执行结果拿回来,我再把这些执行结果拼在一起,再接着往前走。但是在这个过程中呢,却有个问题:计算核心他在工作的时候,不能随便去访问外边的数据啊。他只能访问他自己分配到这个计算核心里面缓冲里边的数据。所以呢,一般情况下,县城跟县城,或者说叫并行运行的这些程序之间是隔离的。你不能说我执行一段时间以后,我要到外面去访问一下别人的数据,这事是不允许的啊。这个就叫并发安全。在写程序的时候,你先要把这个事情搞定。
然后第三个呢,是类型安全。现在新的编程语言大部分是强类型,就是我们规定好你这个东西到底是什么类型,你再去给他赋一些其他类型。
是不允许的啊。比如说,我规定了这是一个整数,你现在想往里头赋一个浮点数——就是带小数点后边那部分的那种数——这是不允许的,直接报错啊。然后呢,还有很多新的语言特性,比如说什么范型啊,闭包啊,命名函数,或者是函数增强什么的,它们都算是新的语言特性。为什么会有这种特性呢?就是为了让更大规模的程序可以被更灵活地编写。
然后呢,是需要有完善的生态和工序链。我记得我上大学,刚开始学计算机语言的时候啊,学C语言,学Pascal语言,学BASIC语言,每一个语言里头,它的关键词其实很少,大概有个几十个,有的有一两百个,也到头了。而且都很短小。但是学完这个语言的基本的结构,控制之后,你就会编程了吧。扯吧,你那玩意编不出来。真正要编程需要什么呢?就是需要大量的周边的函数库。比如说鸿蒙操作系统里头啊,我要调用某一个设备,你如果没有这些函数库,那这事费劲了对吧。你需要从最底层的去一层一层去折腾去。现在都是什么?有一个函数库叫摄像头,我现在调用函数库说,首先摄像头初始化一下,摄像头给我设定参数,摄像头给我拍一张照片回来啊,或者摄像头给我拿出一个预览图片回来。然后我要到哪里去显示啊。现在都是这样编程序的对吧。这个写的代码,基本上刚才我说的一句话,可能就对于编程语言就是一句对吧。现在都是这样,你要有完整的生态,然后呢,要有工序链啊。比如说,我可以给这个鸿蒙手机写程序啊,可以给鸿蒙平板写程序,可以给手表写程序。
那这个他要有完整的工序链,来去对应他们。然后呢,要有不同的应用场景——你比如说,我到底是前端用啊,就是写界面;还是网络上使用,做科学计算使用;还是后端操纵各种设备。它要有不同的应用场景。这是现代编程语言的一些新特性啊。所有这些特性,咱们的仓吉编程语言都有,都已经弄得齐齐的了。
另外还有一个什么东西呢?就是编译器啊。编程语言,你写完程序以后,是不能直接执行的呀。你要经过编译,编译成这种可执行的代码才可以去做。康杰编程语言呢,它使用的编译器,也是现在最时新最流行的,叫LLVM架构——叫low level virtual machine,就是底层的虚拟机系统。它呢,是一种模块化设计的编译器,里头每一个模块可以自由的拼接。然后呢,有很高级的优化,它可以将这个代码优化的非常高效。就是我写的时候,其实我是啊,不是那么在意,说你最后代码是怎么去执行的,都是由编译器去优化出来的。
然后呢,这种编译器最后编译出来代码,是跨平台的啊。你说我编译完代码,到底是在英特尔的CPU上跑,是在麒麟的CPU上跑,还是在瑞斯克5的CPU上跑,还是在一些啊,嵌入式的这种小的SoC上跑啊。它是用这样的编译器,可以一次性都编译出来啊。它是做这样的工作。而且呢,LLVM的这种编译器,也是有相对活跃的社区与生态的。这个编译器格式,是从2000年就开始在做,现在一些新的,比如像Swift呀什么的,也都是用这样的编译器模式啊。
不是说这个编译器叫 LRVM,而是编译器的形式是 LRVM。这是我们讲解的技术部分,就到这里了。然后,仓吉编程语言就包含了刚才我们讲的所有的这些新特性。那么,有没有想过为什么一定需要一种自己的编程语言呢?
首先,要讲的是,做编程语言这件事并没有像大家想象的那么神秘,那么高深莫测。现在我们用的一些很广泛的编程语言,其实出身并没有那么好。譬如说 PHP,很多的网站都是用它写的。PHP 实际上是某一位大神的大学本科毕业项目,他说那我自己做个编程语言吧,专门去写 Web 应用的这种编程语言。然后,就非常的流行,大家就写来用起来了。像包括 JavaScript,还有 C 语言,实际上都是很随机的就产生了。所以,做编程语言这件事本身并没有那么高大上。
但是,现在的编程语言已经不像那个时候了,已经发展的非常先进了。现在再有一个大学生说,我要做一个新的编程语言出来,已经非常非常难了,因为刚才那些特性你把它搞明白其实不容易的。现在,比如说谷歌最新做的 Dart 编程语言,为什么干这事呢?第一个,C++ 相对来说是一种比较笨重的语言,就是你要写同样的代码,完成同样的功能,它的代码量是别人的 5-10 倍。那个没必要嘛,对吧,何必跟自己过不去呢?我们需要一种新的、更简洁的编程语言。另一方面,C++ 的版权在谁手里头?在 Oracle 手里。Oracle 就不停地告谷歌,说你侵犯我版权了,你得给我钱。
那谷歌说:“算了,我不用了,行不行?我自己去整一套新的啊,quarterly到新编程语言,它的成本很高啊,因为你要自己搭建整个的生态,整个的社区,这个成本是非常高的,不是到逼不得已,一般不会有人干这个事啊。”五哥说:“既然你一直告我,那我就上吧,我有机会上新编程语言了,我就一定要把所有新特性全上!上啊,你原来那个沉重的包袱啊,这种需要写的,特别特别又臭又长的这种代码,不要了啊,整个扔掉。”这是谷歌,然后苹果的Swift呢,也是这样,就是说它的object啊,原来叫objective c啊,也是太笨重了啊,太陈旧了,说算了扔掉了,不玩了啊,整个整一套新的。所以苹果现在你做啊,Mac OS啊,iOS啊,iPadOS的开发都是Swift语言。
华为呢,原来其实是有一套自己的语言的,但是呢,它这个不是那么纯粹,它原来这个语言叫Ark TS,Ark是方舟的意思啊,它原来有方舟编译器,方舟的整个的代码库啊,它的编程语言TS是什么,叫typescript。但是这个里头有一个问题是什么呢?就是typescript的大版权是在微软手里的,虽然它的版权是阿帕奇2.0,它允许大家自己有去修改,允许大家去商业使用,就是华为去使用这种typescript是没有问题的。但是问题在哪儿呢?问题是,它的大版本是控制在微软手里,微软会不断地去升级typescript版本啊,不断地把新的语言特性加进去,改出来啊。而然后呢?(文本在此处似乎未完整结束)
所有的 TypeScript 的周边社区,对吧?你说我今天要给 TypeScript 写代码库了,啊,我要去给他写一些这个,呃,第三方的接口。我一定是跟着微软的标准走,我不可能跟着华为标准走。华为说:“哎,我想加点新特性进去。”微软说:“我不喜欢。”咔,干掉了,没了,对吧?然后那你说我这个新的代码库,我一个第三方的,比如说我是做鼠标的,我给这个设备专门写了一个 TypeScript 的接口库进去。那我肯定跟着微软标准走,不可能跟华为标准走。它是这样的,那么它这个叫什么呢?叫生态被微软绑定了。这个华为是不可接受的。
TypeScript 还有一个问题是什么呢?就是它更适合写前端,就是它去写很多跟界面相关的事情。因为 TypeScript 语言是从 JavaScript 的这种,就是前端语言里头演进出来的一种语言。所以呢,它对于很多的科学计算啊,对于很多后端的任务呢,其实并没有那么擅长。这也是华为为什么要去抛弃它的原因。就是现在的鸿蒙上都是使用的叫 ARCTS,未来呢,就准备通通都整到仓吉上面去。就是必须要有一套可以完全自己掌控节奏的全域编程语言啊,大家注意我讲的两个定语啊:第一个自己掌握节奏,我想升级就升级啊,我想加新特性就加新特性,不需要看任何别人的脸色啊。如果你想跟我兼容,你就老老实实跟着我的节奏走。这里头没有第二名啊,你就跟着我走。我们只有一个声音啊,这第一个。第二个是什么呢?叫痊愈编程语言。不过,最后一句似乎没有完整表达出说话人的原意,可能需要进一步的上下文来明确“痊愈编程语言”的具体含义。在这段话中,主要讨论了标准、生态绑定、以及华为对于编程语言选择的考量,特别是对 TypeScript 的观点,以及华为对于自主可控编程语言的需求。
我不但要负责界面的开发,服务器的编程,网络设备的设定,科学计算的处理,我还要确保所有环节无缝对接,这正是“仓吉”系统所承担的任务。那么,我们来探讨一下,“仓吉”是否有望成功,它是否拥有光明的前景。如今,甚至有人开始学习编程,我是否也应该掌握“仓吉”编程语言呢?这个问题,虽与技术相关,但也并非完全取决于技术。一个编程语言能否最终立足,关键在于其生态与工具链的建设。生态,正如我们之前所讨论的,指的是是否有一群开发者围绕该语言编写程序,是否有足够的工具和上下游相关的代码库支持。例如,当我使用“仓吉”编程语言时,如果我发现手机上的运动传感器无法找到相应的驱动,这就表明生态体系存在缺陷,最终可能导致该语言无人问津。
“仓吉”编程语言能否成功,归根结底,还是要看其生态和工具链的建设情况。目前,华为正投入大量资源致力于此。同时,谷歌也在推广多种编程语言,如Python、Rust、Go、Dart等,并表示愿意出资支持其生态链的建设。苹果公司也在推广其Swift语言,且Swift是开源的,但问题在于,很少有人愿意主动与苹果的系统兼容。尽管Swift是一种全功能的编程语言,有人用它来编写高性能的服务器程序,但这并不意味着它已经广受欢迎。
在讨论编程语言的未来时,我们不能忽视其生态建设的重要性,这将直接影响到语言的普及和应用。
都是在你手机上跑的一些APP啊。苹果的Swift始终在苹果生态里没出来,就是我们很少能看到,不是苹果系统,我去用Swift语言去写程序这个事,基本上没有。华为的现在也是如此。它的生态本身,相对于苹果这种封闭生态来说呢,还是要稍微小一点。毕竟苹果全世界那么多人在用,相对来说,华为也好,苹果也好呢,都是在外面没有人用。鸿蒙系统,你离开华为也没人使,对吧,就跟iOS、iPad OS什么这个东西,离开苹果也没人使是一样的啊。所以呢,他有可能就在华为鸿蒙生态系统内啊,可以继续跑下去,就像Swift一样啊。这个事可能性是存在的,但是前提你是鸿蒙得推的下去啊。如果你鸿蒙也没推下去的话,那这个仓吉也就没有任何意义了。华为的生态链啊,到底是不是足够强大,才是仓吉本身是不是成功的核心。他的生态链强大了,他就可以养的活,社区啊,社区这个东西其实是很现实的。如果我在你这个社区里写了程序,没有人用,没有人让我这个吃饱肚子,那就没有人在里头去玩耍,那这个社区就会快速的枯竭下去。玩编程社区里头还有很多其他的东西,明后天我们有机会再给大家讲啊。这个里头还有什么礼节对吧,还有很多的约定俗成的东西,如果你不遵守的话,会被整个的程序员社区所唾弃的。好啊,这就是仓吉编程语言这个故事啊,我们今天讲到这里啊。稍微有些技术啊,有些可能大家听着会费劲一点,但我尽量是用简单的方式讲。好啊,这期就讲到这里,感谢大家收听,请帮忙点赞。
点小铃铛,参加disco讨论群。也欢迎有兴趣、有能力的朋友加入我们的付费频道。再见。