NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

以现代化 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:002706
用户头像

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

关注

评论

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

敏捷实践 | 做优先级排序时使用最多的三个模型

LigaAI

敏捷开发 优先级

AI简报-视频超分BasicVSR

AIWeker

人工智能 深度学习 视频超分 5月月更 AI简报

JVM进阶(十八)——初识Class文件

No Silver Bullet

JVM class文件 5月月更

阿里云首家通过《可信云·云成本优化工具能力要求》评估,云原生企业 IT 成本治理方案助力企业 FinOps 落地

阿里巴巴云原生

阿里云 云原生 工具

盘点使用最广泛的14个最佳Scrum工具(功能与报价)

PingCode

大数据培训数仓指标体系搭建

@零度

大数据开发

云原生技术应用情况报告重磅发布

行云创新

云计算 云原生 开发 报告 行业

存储系统如何适配 Hadoop?

焱融科技

hadoop 存储 文件存储

烫烫屯屯锟斤拷��

博文视点Broadview

web前端培训js 私有属性的 6 种实现方式

@零度

web前端开发

HttpRunner v4.0 正式发布:一文了解 v4.0 的前世、今生与未来

debugtalk

性能测试 HTTP 接口测试 测试工具 开源软件

Python:什么是callable?

Ken

Python Callable

龙蜥社区第八次运营委员会会议顺利召开

OpenAnolis小助手

开源 生态 龙蜥社区 理事单位 运营委员会

王莉:将开发文档英文化和本地化,我们努力让OpenHarmony走向全球

OpenHarmony开发者

开发文档 OpenHarmony OpenHarmony 3.1 Release

从“预见”到“遇见” | SAE 引领应用步入 Serverless 全托管新时代

阿里巴巴云原生

阿里云 Serverless 云原生 SAE

【直播预告】如何写好技术文章?开源技术写作入门与实践

TiDB 社区干货传送门

leetcode 75. Sort Colors 颜色分类

okokabcd

LeetCode 排序

TreeMap源码分析-新增

zarmnosaj

5月月更

玩转集群配置中心,一文带你了解 Taier 控制台

袋鼠云数栈

Wallys/Network_Card/QCA9880/ 2x2 2.4G/5G FCC/CE

wallys-wifi6

802.11AX QCN9880

IOS技术分享| iOS快速生成开发文档(一)

anyRTC开发者

ios objective-c 音视频 移动开发 appledoc

关于延期举办第六届世界智能大会的通知

InfoQ 天津

百问百答第39期:如何区分docker容器中的进程名称?

博睿数据

智能运维 Bonree Server 博睿数据

推荐书籍-《持续行动-从想到到做到》

消失的子弹

书籍推荐

集成底座内外网访问配置说明

agileai

k8s 集成底座 企业服务总线 身份管理平台 主数据平台

数据库厂家有哪些?排名怎么样?

行云管家

数据库 IT运维 运维审计 数据库审计

大咖说*菜鸟|物流行业重大战略机遇期已悄然到来

大咖说

互联网 物流 降本增效 菜鸟 实体经济

国产CPU产业链的逻辑架构

Finovy Cloud

gpu 云服务器

Wallys/ Network_Card/2x 2 5G /High power Radio card

wallys-wifi6

QCA9882 802.11AX

等保二级和等保三级的三大区别讲解-行云管家

行云管家

网络安全 等保 等级保护 等保2.0 等保二级

签约喜报 | 美秧集签约旺链科技,一物一码防伪溯源驱动品牌新增长

旺链科技

区块链 产业区块链 大米溯源

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