新プログラミング言語Carbonを実際に動かしてみました
さて、Carbonと言えばみなさんご存知のとおりPHPの日時操作ライブラリの……ではありません。つい本記事執筆の前日、7月20日に発表された新しいプログラミング言語のCarbonです。
https://github.com/carbon-language/carbon-lang
一言でいえば、Carbonとは「GoogleがC++の後継を目指して作っている新しいプログラミング言語」だそうです。発表された直後、このタイミングでブログを投稿することになったのも何かの縁、と思ったので実際にREADMEに従って動かしてみました。なお、環境はUbuntu 22.04(WSL2 on Windows 11)です。
まず、下ごしらえとしてHomebrewを導入しておきます。
この公式ページにあるコマンド(/bin/bash -c “$…… 以下略)を実行し、このドキュメントにある4つのコマンドを入力してパスを通します。
Homebrewについては簡単ですが以上です。ちなみに、Ubuntuなのになぜaptじゃなくbrewを使わされるんだ、という点はCarbonの公式ドキュメントに「Debianのパッケージに不具合があるから本当はaptが良かったけどbrewにしてる」(意訳)と記載があります。
brewの準備ができたら、次の2つを導入します。そこそこ時間がかかるので要注意です。
$ brew install bazelisk
$ brew install llvm
1つ目のbazeliskは初めて知ったのですが、Googleの開発したビルドツールBazelのインストールをインストールしているようです。簡単に言えばGoogleが作ったmakeです。
2つ目のLLVMはOSSのあらゆるプログラミング言語に対応できるコンパイラ基盤、つまりプログラミング言語を作るためのフレームワークのようなものです。PHPエンジニアがWebサービスを作るためにLaravelを使うのと同じように、プログラミング言語の開発者はコンパイラやインタプリタを作るためにLLVMを使うのですね。
さて、ここまでできたのでさっそくCarbonを実行してみます。git cloneしてからbazel runを実行します。
$ git clone https://github.com/carbon-language/carbon-lang
$ cd carbon-lang
$ bazel run //explorer — ./explorer/testdata/print/format_only.carbon
ビルドのログが多くて目立ちませんがちゃんとHello world!できています。すぐ上にBuild completed successfullyと出ているのも成功した実感が湧き嬉しいですね。
それではHello worldの次は何か簡単なサンプルプログラムでも、と取り掛かりたいところですが今回はここまでです。
というのも、浮動小数点数(f64型)、range-based for(for/foreach文)、剰余演算子(%演算子)、論理演算子(ANDやOR)など色々実装されていないためです。実験段階として発表されたばかりで「まずは今年中にv0.1を完成させたい」という状況なので致し方ありません。
Carbonがどんな言語仕様なのかという概要は、英語ですが次のドキュメントにまとまっています。
https://github.com/carbon-language/carbon-lang/tree/trunk/docs/design
関数定義のfn
や整数型のi64
など全体的にRustっぽく思えますが、生のポインタを操作したり、C++ライブラリを直接扱えたりするのがCarbonがC++の置き換えを目指しているといったところでしょうか。
C++は確かに歴史のある言語ですが現在もC++20など更新されていますし、新しく出てきたRustが人気な中、Carbonがどうなるか楽しみです。
……ところで弊社のようなWeb開発ではC++を使うような場面はありませんし、私がCarbonにお世話になることは当分なさそうですね。
以上、プログラミングの話題なので業務知識っぽく見えるけど、実はそんなことない日記でした。