当前位置:首页 > 公众号精选 > 嵌入式微处理器
[导读]java 的synchronized、try catch、xxx ? yyy: zzz; python 的yyy if xxx else zzz、range; golang 的go、defer、chan; js 的map、sort、`xxx${yyy}zzz`、e=>; 不仅如此,兼容大部分语法包括 Golang、Python、JavaScript和Java; 既可以使用 ; 明确表示一


java 的synchronized、try catch、xxx ? yyy: zzz;
python 的yyy if xxx else zzz、range;
golang 的go、defer、chan;
js 的map、sort、`xxx${yyy}zzz`、e=>;

不仅如此,兼容大部分语法包括 Golang、Python、JavaScript和Java;
既可以使用 明确表示一行语句结束,也支持大多数场景智能自动分行;
可以在语句中适当 增加空格 使得程序更容易阅读;
容易学习的 指针

如果把这些好用的功能都“揉在一起”会如何?日前,笔者便发现了这样一个网站(z1h.org),提供这样的语言的下载。

(图:网站信息截图)

根据作者的介绍,Z1h 是一门跨平台编程语言, 它能轻松开发各种应用程序或服务接口。

Z1h从2019年国庆期间由曾威人开发,并于2020年对外发布了包含Windows、mac OS、Linux、Android、iOS、WebAssembly、树莓派等平台的v1.0.0发行版。

这款语言语法由诸多其他语言发展而来, 包括Go、Java、JavaScript、Python等等。而解释器则由Go实现(Rust版本正在开发中)。

作者强调,对于许多领域而言, Z1h 语言无疑比大多数其它语言有着更高的开发效率. 它提供了灵活的开发语法以及海量并行的支持, 这尤其对于想要快速开发http服务后端的团队和个人而言是再好不过了。

对初级程序员而言, 是一种伟大的语言, 它支持广泛的应用程序开发, 从简单的文字处理到http服务再到游戏。

据作者在知乎上表示,这款语言已经在其公司用在了生产环境。

01
很多人也畅想过这种语言


知乎上有网友提问“如果你们想要自创一个编程语言,你们希望它有什么特色?”,便拥有这样的畅想。


当然,这种问题之前也有人曾经解答过,大概意思就是各个程序在一些功能实现上并不尽相同。

因为其实不同编程语言之间的理念很多是矛盾的,但是又都有它们擅长的场合。简单的举例子,编译型语言在编译期间检查数据类型,因为这样可以生成最优的代码,但是这样会造成不同类型间琐碎的转换问题;解释型语言在执行期根据上下文自动判断类型,这样写代码就简单了,可是效率又不行了。

当然,从上面所举的Z1h语言说起,其实在功能方面,并非一股脑的整合。


有人表示,加入冗余的功能容易产生副作用。不过Z1h的作者对这款语言的评价是,不管稳不稳定,至少在公司上已经实现应用了。


02
还想要什么样的其他编程语言


值得一提的是,还有人表示希望能够有一款语言能够方便使用异构编程,对多核CPU、GPU以及各种SIMD指令,及其所对应的内存显存系统进行抽象,让语言的使用者,不再需要关注(或者至少不需要过度关注)计算机的底层,编译器实现由编程语句到处理器硬件指令的转换。

纵观行业,在摩尔定律放缓,登纳德缩放比例定律和阿姆达尔定律接近瓶颈下,CPU单兵作战并不能满足计算要求,因此出现了CPU+FPGA、CPU+GPU、CPU+ASIC的这种异构计算。而英特尔推出的超算计算机,也是CPU+GPU+FPGA形式。

因此,网友所描述的这种需求,其实是具有着相当实用性的。虽然FPGA厂商们正在努力让程序员们只用一个C就能编好一切,但还缺乏一种语言能够实现这种功能。


还有网友,还奇思妙想“一款AI智能编写语言”。不过,这种大胆的想法并不是什么痴人说梦。

早在之前,谷歌的首席执行官桑达尔·皮查伊(Sundar Pichai)就谈到了“自动编写自己”的软件。根据他的说法,软件1.0时代一切皆由人类码指导计算机,但到了软件2.0时代,拥有深度学习、神经网络的计算机只需命令便可自己编写自己。


当然,懂得中文的AI,或许在后台代码也将变为纯中文。一名Google的高级软件工程师/技术主管便“发明了”一款文言文编程(https://github.com/wenyan-lang/wenyan),万能的define被他玩出了花儿。


03
编程语言都是怎么来的


手工开关阶段

早期的计算机程序员,大多数是女性手工进行开关切换你敢信?


我们都知道计算机内部是二进制的,而那时候便是使用这种简单暴力的方式,用电路的高低电平来代表“0”和“1”的。

计算机有一个很大的操作空间,通过控制横竖排列的开关,就能完成一组对应的运算。计算完成后,通过观察输出设备(就是一些灯泡)的亮(1)和灭(0),再进行一层转化,就是结果啦。

穿孔打卡时代

手工开关要求程序员坐在终端前操作,非常不方便。美国人赫尔曼·霍尔瑞斯(Herman Hollerith)在1880年进行人口普查工作时,发明了基础的利用穿孔卡片收集和整理数据的系统。

其实早在18世纪20年代,法国纺织工人鲁修(Basile Bouchon)使用了一套计算机器能读出的穿孔卡片。1835年,一位名叫查尔斯·巴贝奇(Charles Babbage)的英国人发明了他称作“分析机”(Analytical Engine)的工具,这种“分析机”运行的原理和现代数字计算机是一样的。巴贝奇设想用分析机进行任何可以储存在穿孔卡上指令进行数学运算。分析机会有一定内存,用来存储数据。不幸的是,这样的分析机的大小和火车头差不多,而巴贝奇从未能够从英国政府得到足够的财政支持来制造这样的机器。


将开关需要的状态提前在一张卡纸上描述出来,卡被穿孔或不穿孔就对应开关的开或关状态。

然后用一个机器读取卡纸的指令,再送到计算机。之后还有输出也通过穿孔打卡,程序员拿到输出的卡纸,再进行翻译。这时候的编程虽然已经方便了很多,仍然很繁琐。程序员需要自己做二进制翻译,才能完成跟计算机的对话。

第一个编译器(翻译器)的诞生

早期的程序员主要是女性,暂且认为这事儿太需要精细操作,五大三粗的男性干不来。而这世上从来不缺伟大的女性!

Grace Hopper姐姐被安排为美国的第一台通用计算机马克一号(Mark I)做程序设计,并在二战后加入UNIVAC开发团队。这位姐姐觉得每天去读写机器码太无聊,她开始研究使用接近英文写作的方式来编写程序,并四处寻求经费,终于发明了第一个编译器A-0。编译器本身就是一个用机器语言编写的软件系统,它能够把英文程序翻译成二进制机器代码,这样完美替代了程序员最不爱做的低级部分。

从此以后,编程语言从低级向高级发展的脚步越来越快。随着计算机硬件的飞速发展,一代又一代充满智慧不断追求高效的计算机科学家们开发出各种高级语言,将更为底层的操作标准化封装起来。编程开始普及,因为高级语言非常接近人类的自然语言,甚至不需要了解计算机的底层原理就可以去完成自己想要的程序。于是乎,还出现了各种图形化编程,比如Scratch和AppInventor。




编程语言都是互相借鉴的

不同的编程语言有不同的语法和特性,但它们都是图灵完备的。通俗地说就是:所有的编程语言都可以用来实现任意一种算法。

任何语言都是各种语言特征的集合。例如,编程语言就像一台计算机。其品牌可能是IBM、戴尔或苹果。但是,你能说苹果的电脑就一定比IBM好吗?不能。首先你必须了解计算机的配置,例如处理器型号、内核数量、CPU的时钟频率、一级缓存、二级缓存……,内存和硬盘,显示分辨率,还有显卡、网卡等等。有时你还需了解每个硬件的兼容性。

几乎所有的编程语言都包含了几类元素,它们都与“抽象”有关:

数据类型和数据抽象;
控制流程和控制抽象;
底层抽象;

对特定领域的补充和抽象。

编程语言有很多公共特性,因此,我们能够学会所有编程语言的主要原因是:编程语言的概念其实是很有限的。常用的编程语言概念不会超过 15 个:

过程;
递归;
静态类型;
动态类型;
类型推断;
lambda 表达式;
面向对象;
垃圾回收;
指针;
连续性;
元编程;
宏;
异常。

编程语言的概念基本上是不怎么变的,就像设计原则一样。

编程语言的作者们相互借鉴想法,只是实现不一样罢了。有时候,我们可以说语言 C 是语言 A 和 B 的儿子,那么整个编程语言的家谱可能像这样:


当然,在《 48岁的C语言,你知道它背后的历史吗? 》中,嵌入式ARM曾经深入讲解了C语言是如何从B语言中衍生出来的。

早期的C语言编译器采取了一个取巧的办法:先用汇编语言编写一个C语言的一个子集的编译器,再通过这个子集去递推完成完整的C语言编译器。

到现在,有着无数的编程语言,当然上文所介绍的这款语言,应该是作者理想中的完美语言。

每一门编程语言仍然还是有自己的优点和不足。适合用来处理所有任务的编程语言是不存在的。不过这款工具在实际生产和应用中,或许也是一个不错的选择。

你怎么看待这款语言呢?

-END-




推荐阅读



【01】C语言为何不会过时?你需要掌握多少种语言?
【02】C语言最大难点揭秘:编程的祸根!
【03】经典:C语言在嵌入式系统编程时的注意事项
【04】从1985年到2020年,编程语言排行有哪些变化?
【05】工程师精华帖:C 语言表驱动法编程实践



免责声明:整理文章为传播相关技术,版权归原作者所有,如有侵权,请联系删除

免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

嵌入式ARM

扫描二维码,关注更多精彩内容

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

5月11日消息,Arrow Lake、Lunar Lake还没有发布,Intel再下一代处理器Panther Lake的消息就传出来了,CPU方面没啥惊喜,GPU又一次要飞跃。

关键字: GPU CPU 芯片

Optiver通过包括EPYC CPU、Solarflare以太网适配器、Virtex FPGA和Alveo加速卡在内的高性能AMD解决方案搭建其业务基础

关键字: CPU 数据中心 以太网

利用LogiCoA™微控制器,以更低功耗实现与全数字控制电源同等的功能

关键字: 微控制器 电源 CPU

2024年4月18日 – 提供超丰富半导体和电子元器件™的业界知名新品引入 (NPI) 代理商贸泽电子 (Mouser Electronics) 很荣幸地宣布与Edge Impulse建立新的全球合作关系。Edge Im...

关键字: 机器学习 MCU CPU

无论您是在研究如何使用 10GigE 还是寻求所需考虑事项的建议,本文均提供有实践,帮助确保单相机 10GigE 视觉系统设置顺利并拥有良好性能。 我们列出了主机系统配置、布线和相机设置的实践。

关键字: 视觉系统 CPU 存储器

Apr. 16, 2024 ---- NVIDIA新一代平台Blackwell,包含B系列GPU及整合NVIDIA自家Grace Arm CPU的GB200等。TrendForce集邦咨询指出,GB200的前一代为GH2...

关键字: CPU GPU

人工智能是集合众多方向的综合性学科,在诸多应用领域均取得了显著成果[1]。随着航空领域人工智能技术研究的不断深入,面向开放式机载智能交互场景,人工智能的应用可解决诸多问题。例如智能感知、辅助决策等,可利用人工智能算法对多...

关键字: 人工智能 PCIe CPU

CPU针脚弯了,用工具调正就不会有影响。开机自检也通过,CPU 再出问题就不是针脚引起的问题。针脚只要不断就没有问题,有的CPU出厂的时候针脚就有点弯,这并不是什么大问题,只要用镊子轻轻地弄直就可以了。

关键字: CPU 针脚 开机自检

瑞典乌普萨拉,2024年3月27日 – 全球领先的嵌入式系统开发软件解决方案供应商IAR自豪地宣布:公司备受全球数百万开发者青睐的开发环境再次升级,已率先支持瑞萨首款通用32位RISC-V MCU,该 MCU 搭载了瑞萨...

关键字: MCU RISC-V CPU

联发科与高通骁龙的对决可以说是一场性能与价值的较量,那么,你对两者的芯片有了解吗?在移动设备领域,芯片制造商的竞争愈发激烈。其中,来自台湾的联发科(MediaTek)与美国的高通(Qualcomm)无疑是该领域的两大巨头...

关键字: 联发科 高通骁龙 CPU 处理器
关闭
关闭