BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース C言語の現代化を目指すC2

C言語の現代化を目指すC2

ブックマーク

原文(投稿日:2018/02/08)へのリンク

読者の皆様へ: あなたのリクエストに応じて、大切な情報を見逃すことなく、ノイズを減らす機能を開発しました。お気に入りのトピックを選択して、メールとWebで通知をもらいましょう

C2はブートローダやカーネル、ドライバ、システムレベルのツールといった低レベルプログラムに適したC言語の進化を目指した、新しいプログラミング言語である。

C2の基本理念は、C言語のよい部分を維持しながら、40年以上を経た古い言語の部分を捨てることにある、と作者のBas van den Berg氏は言う。C言語の望ましくない部分としては、コンパイル時間を大幅に遅くするヘッダファイルの使用、複雑な型定義構文などがある。C2ではこれらをモジュールシステムと、統一された型構文で置き換える。さらにC2では、完全なリンク時最適化(LTO)をサポートする統合ビルドシステムが導入され、マクロシステムも開発中である。

以下のコードは、典型的な“hello world”プログラムがC2でどのようなものになるのかを、モジュールやインポート、型システムと合わせて示したものだ。

module hello_world;

import stdio as io;

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

C2では、OOサポートやガベージコレクションといった高度な機能の追加は目的ではない。

作者のBas van den Berg氏に話を聞いた。

InfoQ: C2の中心的な目標は何ですか?

Bas van den Berg: 私はC言語を20年ほど使っています。その間、ドライバの記述や修正、低レベルかつハイパフォーマンスなアプリケーション、リアルタイムシステムなどでC言語を使用してきました。典型的なCユーザです。C言語が本当に好きなのですが、時代を感じる部分もあります。C言語の領域(低レベル、カーネルなど)に進出している他の言語を知らないので、同じ問題を今後20年間、何度も何度も解決したくないと思って、C2を始めたのです。ですから、C2の大きな目標は、C言語で一般的な問題を解決し、開発者エクスペリエンスを改善することにあります。

InfoQ: 既存のCコードベースがC2に移行する可能性についてはどうでしょう?どのようなメリットがあるのでしょうか?

van den Berg: C言語のプログラムはそれ単独で開発するよりも、他の(C言語)ライブラリを使用する場合の方がはるかに多いのですが、C2にも同じことが言えます。ですから、C2のプログラムはC言語ライブラリを簡単に利用できなければなりませんし、C言語ライブラリとC2ライブラリを統合できる必要もあります。デモとして私は、LuaとVulkanのインターフェースを数日でC2に“移植”しました。この作業の成果は、c2_examplesのデモ実装で見ることができます。C2の感触を得るために私が個人的に行なっているのは、C言語のプログラムをC2に移植して、難しい問題がないかを確認する作業です。C2に問題があれば修正します。この方法で構文を改善しているのです。現行のC言語プログラムの移植には、プログラム全体の最適化が容易になることや、コンパイル時間の大幅な短縮といったメリットがあります。

InfoQ: 言語やツーリングの現時点での完成度はどうですか?実用可能なレベルに達しているのでしょうか?

van den Berg: 現在の形式でC2を業務のコードとして使用するのはお勧めしませんが、小規模なプロジェクトならば、間違いなく可能です。ただし、構文がまだ固まっていないので、アップデートによってプログラムが動かなくなる可能性はあります。

C2で変更される領域としてはマクロサブシステムの追加(現在はまだ設計中)と、ライブラリサブシステムを拡張して、ソースライブラリや、Cargo風のツールで外部パッケージが管理できるようになります。現在はライブラリシステムの開発中で、今年第2四半期から段階的にリリースする予定です。マクロシステムはその後に予定しています。

van den Berg氏自身の経験によると、C2によって開発速度を30パーセント向上することができる。C2はオープンソースで、Linux、macOSおよびWindowsにインストール可能である。

 
 

この記事を評価

採用ステージ
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT