BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

以现代化C语言为目标的C2语言

| 作者 Sergio De Simone 关注 17 他的粉丝 ,译者 盖磊 关注 2 他的粉丝 发布于 2018年2月23日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

C2是一种新的编程语言,其目标是将C改进为一种适用于底层编程的语言,例如实现启动引导、内核、驱动和一些系统层面的工具。

据C2语言创立者Bas van den Berg介绍,C2在任务声明称其将保留C中的适用部分,同时改进那些与其40年历史背道而驰的部分。其中一些弃用的部分包括:对头文件的使用(它严重地降低了编译器的性能)、复杂类型定义(在C2中被模块系统统一类型语法替代)。C2还引入了支持LTO(链接时优化,link-time optimization)的集成构建系统。同时,宏系统的实现也在进展中。

下面给出的一个典范的“Hello World”C2程序例子,其中展示了import模块和类型系统的使用:

module hello_world;

import stdio as io;

func i32 main(i32 argc, char*[] argv) {
    io.printf("Hello World!\n");
    return 0;
}

C2中并无意引入一些高层特性,例如面向对象的支持和垃圾回收机制。

InfoQ采访了Bas van den Berg。

InfoQ: C2的主要目标是什么?

Bas van den Berg:我使用C语言已近20年。在此期间,我用C编写和修改了一些驱动程序、低层或高性能应用、实时系统等。这些工作通常是使用C实现的。我的确非常喜欢C,但有些事情正在逐渐过时。由于我没有看到任何其它语言涉足低层或内核等C领域,我也不想再花20年时间去解决同样的问题,所以我创立了C2。C2的主要目标是解决C语言中的一些常见问题,改善开发者的使用体验。

InfoQ: 你是否设想过将现有的C代码库迁移到C2?这样做是否有好处?

Berg:C程序几乎从来都不是独立工作的,而是要使用其它的C程序库。C2同样如此。因此,我们需要C2程序能轻松使用C程序库,而C程序库也能与C2库集成。作为演示,我已在几天将Lua和Vulkan接口“移植”到C2。在“c2examples”中给出了一个演示实现,展示了C2的工作原理。我个人在开发C2时,会将C程序移植到C2,查看其中是否存在不适用之处。如果有的话,就在C2中进行修正。通过这种方式,我改进了C2的语法。移植当前C程序的优点,就是更易于整体使用程序优化,编译时间也更快。

InfoQ: 当前C2语言及其工具的成熟度如何?你能对该语言何时可用于生产环境给出一个预测吗?

Berg:在目前的形式下,我并不建议在生产代码中使用C2。但对于一些较小的项目,C2绝对适用。由于C2语法尚在改进中,因此任何可能的更新都会对已有的程序造成破坏。

C2将会改进的两个方面,分别是增加宏子系统(仍处于设计阶段),以及扩展软件库子系统。后者意在支持源库和Cargo类工具对外部软件包的管理。我目前正致力于推出软件库系统,应该可在今年第二季度逐步发布。之后,我计划推出宏子系统。

按van den Berg自身的经验,使用C2可以加快开发速度达30%。C2是开源的,可以安装在Linux、macOSWindows上。

查看英文原文: C2 Aims to Modernize the C Language

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT