C、C++ 成众矢之的,这群程序员发起编程语言“革命”!

C、C++ 成众矢之的,这群程序员发起编程语言“革命”!
文章图片
旧语言老矣 , 尚能饭否?
整理|苏宓出品|CSDN(ID:CSDNnews)在HN的热榜中 , 一篇题为《编程语言工具进展缓慢》的文章吸引了不少网友的注意 , 其写道 , 「当一个新工具被创新开发时 , 较新的编程语言就有足够多的机会将这种创新融入到他们的语言工具中 , 并使之标准化 , 最终让其自身比旧语言更具优势一些 。 如果把这些增量逐渐累积起来 , 那么旧的语言就会显得很痛苦和过时 , 甚至最终被淘汰 。 」
放眼编程榜单如TIOBE , 虽然排名靠前依然是我们熟悉的Python、C、C++、Java等语言 , 但是近日来 , 似乎是看到了文章伊始所述的趋势 , 我们见证了不少剑指老牌语言的新编程语言诞生 , 譬如有的是一群Go语言爱好者发起的凹语言 , 也有的是来自大厂的一线员工如Oracle核心团队成员创建的Vely , 还有的是科技巨头如Google自身研发的Carbon 。
接下来 , 我们将与大家一起了解一下最新诞生的编程语言 , 看其能否填补老牌语言们留下的遗憾 。
国内Gopher发起的「凹语言」
凹语言(凹读wa) , 作为一门刚刚起步的实验性编程语言 , 它是由国内的一群Go语言爱好者发起的 , 主要设计目标之一是「成为Go和Rust语法外衣的C++语言」 。
C、C++ 成众矢之的,这群程序员发起编程语言“革命”!
文章图片
在创建伊始 , 柴树杉、丁尔男和史斌三位Gopher便决定以开源的方式来推动凹语言的发展 , 其开源地址为:https://github.com/wa-lang/wa 。
具体的安装和测试方法如下:
安装Clang , 确保本地clang命令有效
goinstallgithub.com/wa-lang/wa@latest
wainit-name=_examples/hi
warun_examples/hi
目前该项目提供了简单可执行的示例 , 如“打印30以内的素数”:
//版权@2021凹语言?作者 。 保留所有权利 。 fnmain(){forn:=2;n运行并输出结果:
$gorunmain.gorun_examples/prime2357111317192329另一个Demo如下图所示:
C、C++ 成众矢之的,这群程序员发起编程语言“革命”!
文章图片
现下 , 凹语言处于非常早期的实验阶段 , 该团队在凹语言特性和编译器实现方面都进行了预期设定 。 其中 , 凹语包含两套相互等价的语法 , 即凹语法与WaGo语法 。 这里“等价”的含义是:二者可生成相同的AST并无损的互相转换 。 使用凹语法编写的源文件后缀为.wa , 使用WaGo语法编写的源文件后缀为.wa.go 。 WaGo语法是Go语法的真子集 , 换句话说:一个合法的WaGo包必然是合法的Go包 。 对此 , 创建者之一柴树杉也在知乎上进一步表示 , 「等价不是最终目标 , 只是为了方便习惯Go的用户 。 」
在凹编译器方面 , 该团队发布了如下工作流程图 , 希望支持C/C++、LLVMIR、WASM等多种输出以满足不同的目标场景 。
C、C++ 成众矢之的,这群程序员发起编程语言“革命”!
文章图片
来源:https://github.com/wa-lang/wa
作为个人业余项目 , 几位创建者表示 , “纵观编程界 , 没有哪门被广泛使用的通用语言诞生于KPI制度之下” , 因此当前该项目不存在明确的KPI指标 , 在其个人时间、精力、兴趣的支持下 , 从成果分类的角度 , 该团队希望能够在第一阶段完成:
确定凹语言?语法规则;
实现可用的凹语言?编译器;
使用凹语言?创建一个网页应用 。
对于设计凹语言的初心 , 在GitHub的README.md文件中 , 该团队也非常直白地写道 , 「本项目启动时大量借鉴了Go的设计思想和具体实现——这是在有限投入下不得不作出的折衷 , 我们希望随着项目的发展 , 积累更多原创的设计 , 为自主创新的大潮贡献一点力量 。 」