当前位置:首页 > 嵌入式 > 嵌入式微处理器
[导读]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

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

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

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭