【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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

  • 2018-02-22
  • 本文字数:1199 字

    阅读完需:约 4 分钟

看新闻很累?看技术新闻更累?试试下载 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、macOS Windows 上。

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

2018-02-22 18:002709
用户头像

发布了 391 篇内容, 共 127.3 次阅读, 收获喜欢 256 次。

关注

评论

发布
暂无评论
发现更多内容

OpenMLDB v0.5.0 发布 | 性能、成本、灵活性再攀高峰!

第四范式开发者社区

人工智能 机器学习 数据库 数据 特征平台

Redis「5」事件处理模型与键过期策略

Samson

学习笔记 Redis 核心技术与实战 5月月更

企业架构如何促进创新?

涛哥 数字产品和业务架构

企业架构

HDD·耀星领航出海峰会:华为游戏中心联运服务加速游戏出海获量增长

最新动态

零基础学Java第一节(语法格式、数据类型)

编程攻略

java 5月月更

你中奖了吗?低代码开发师(高级)认证中奖名单揭晓啦!

一只大光圈

钉钉宜搭

druid 源码阅读 6——如何实现断链重连的?

张大彪

AIrserver2022手机软件无线投屏电脑屏幕

茶色酒

AirServer

李俊刚:我是如何在OpenHarmony完成ap6275s WiFi驱动的HDF适配工作的?

OpenHarmony开发者

OpenHarmony WiFi驱动

柏拉图会成为元宇宙风险标吗?PlatoFarm的机会很大

小哈区块

数据库连接池 -Druid 源码学习(六)

wjchenge

Druid 数据库连接池

OpenHarmony浏览器上新,在Dayu200开发板上终于能优雅地浏览网页

离北况归

浏览器 OpenHarmony Openharmony啃论文俱乐部 PIMF OpenHarmony应用安装

大家都在用哪些OKR管理工具?

PingCode

Go Web 编程入门:Go pongo2 模板引擎

宇宙之一粟

Go web Go 语言 模板 5月月更

【JavaScript】数值转换为数值

恒山其若陋兮

5月月更

宠物类自媒体运营心得:如何才能拍得更有创意

石头IT视角

飞书将于5月25日举行春季发布会 同步推出全新项目管理产品

陈泽涛

飞书 飞书项目

源码分析 Flutter 的 setState 过程

岛上码农

flutter ios 前端 跨平台开发 5月月更

String基础整合

工程师日月

java 5月月更

FinClip小程序+Rust(二):环境搭建

Speedoooo

rust 前端框架 小程序容器

ABBYY2022全新版PDF文字识别功能

茶色酒

服务网格接口 SMI 规范解读

Flomesh

云原生 服务网格 SMI OpenServiceMesh

druid 源码阅读(七)Druid Filter 介绍

爱晒太阳的大白

5月月更

先进数据中心背后,“东数西算”的三重意志

脑极体

三种常见的 Mac 安装 git 工具的方法

liuzhen007

git git 学习 5月月更

学生管理系统(5)

5月月更

FinClip小程序+Rust(一):夹心饼架构

Speedoooo

rust 前端框架 小程序容器

FinClip小程序+Rust(三):一个加密钱包

Speedoooo

rust 前端框架 小程序容器

HIVE3 深度剖析 (下篇)

明哥的IT随笔

大数据 hive

JavaWeb 数据库操作

Emperor_LawD

sql javaWeb 5月月更

设计模式之装饰器模式

乌龟哥哥

5月月更

以现代化C语言为目标的C2语言_语言 & 开发_Sergio De Simone_InfoQ精选文章