【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:002699
用户头像

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

关注

评论

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

KubeWharf:基于Kubernetes的分布式操作系统,助力云原生化部署和管理

bug菌

Kubernetes 社区征文

IP子网掩码具体的理解是什么,为什么用不完?

百度搜索:蓝易云

云计算 Linux 运维 IP 云服务器

一次讲清楚京东科技百亿级用户画像平台的探索和实践 | 京东云技术团队

京东科技开发者

数据库 Clickhouse 用户画像 用户画像平台

MYSQL EXPLAIN 执行计划 | 京东物流技术团队

京东科技开发者

MySQL 数据库 EXPLAIN EXPLAIN执行计划

如何实现高效代码审查,赋能大规模开发

龙智—DevSecOps解决方案

代码审查

紫龙游戏解锁Jira与Perforce的游戏开发行业实践

龙智—DevSecOps解决方案

紫龙游戏

iOS代码混淆工具

雪奈椰子

对标世界一流!用友已与74家中央企业达成集团级合作!

用友BIP

Socket网络通信过程 与 IO多路复用原理。

百度搜索:蓝易云

云计算 Linux 运维 socket 云服务器

KubeWharf:解析云原生未来的分布式操作系统

Y-starrydreamer

KubeWharf

Amazon CodeWhisperer 正式发布可免费供个人使用

亚马逊云科技 (Amazon Web Services)

人工智能 Amazon Lambda 云上探索实验室 Amazon CodeWhisperer Amazon Cloud9

Dapp燃烧铸币模式系统开发丨智能合约技术开发

l8l259l3365

手把手带你离线部署Walrus,体验极简应用交付

SEAL安全

应用交付 应用交付平台 12 月 PK 榜 Walrus

给 Web 前端工程师看的用 Rust 开发 wasm 组件实战 | 京东云技术团队

京东科技开发者

rust 前端 webassembly 前端组件

法律情境扮演、逆向推理文字游戏、AIGC创作……见证AI极致生产力!

飞桨PaddlePaddle

人工智能 AIGC

深度探索E3PO:360° 视频传输平台的前沿技术与应用

Y-starrydreamer

E3PO

如何通过追踪用户旅程,找到流失用户

Footprint Analytics

区块链游戏 Web 3.0

2024深圳电子展,加快粤港澳电子信息发展,重点打造湾区经济

AIOTE智博会

电子展 深圳电子展 电子信息展 电博会

DDD学习与感悟——总是觉得自己在CRUD怎么办? | 京东云技术团队

京东科技开发者

架构 DDD 软件设计 curd

【FAQ】运动健康服务端侧数据常见问题及解答

HMS Core

HMS Core

HarmonyOS振动效果开发指导

HarmonyOS开发者

HarmonyOS

京东商品详情接口在电商行业中的重要性及实时数据获取实现

Noah

Wireshark中的ICMP协议包分析

小魏写代码

原来低代码开发部署起来这么简单

伤感汤姆布利柏

前端 低代码 低代码开发

08 | 栈:如何实现浏览器的前进和后退功能

鲁米

一键自动修改和翻新OC源码,解决苹果审核4.3和马甲问题

关于Nuxt.js 服务端组件的使用

秃头小帅oi

【高效视频处理】体验火山引擎多媒体处理框架 BMF

Y-starrydreamer

BMF

优化开发者体验,推动API测试行业发展,SmartBear收购API设计和文档领域领导者Stoplight

龙智—DevSecOps解决方案

API

重磅签约!美团携手用友推进数智化升级

用友BIP

企业数智化

京东面试:说说Cookie、Session和Token的区别?

王磊

Java 面试

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