C、C++でもRustでもなく「Zig」に期待できるのはなぜか:プログラミング言語「Zig」とは【中編】
「Zig」はシステム開発における開発者の幾つかの悩みを解消し得る、新たなプログラミング言語だ。どのようなアプローチを採用しているのか。そのメリットとは。
企業で主流のシステムプログラミング言語としては「C」「C++」、近年では「Rust」などが存在する一方、新たな言語として「Zig」が頭角を現し始めた。ZigはC/C++の代替を目指しつつ、モダンな機能を備えている。本稿はZigの5つのメリットのうち、2つのメリットを取り上げる。
「Zig」に期待できるのはなぜか
併せて読みたいお薦め記事
連載:プログラミング言語「Zig」とは
新たなプログラミング言語を学んでみよう
メリット3.ビルドが容易
可能な限り最適化された実行可能ファイルをZigで作成するには、以下のシンプルなコマンドを実行する。
zig build-exe -O ReleaseFast prog_name.zig
ここで「-O ReleaseFast」は最適化レベルを指定するオプション、「prog_name.zig」はソースコードのファイル名を表す。複数のファイルをソースにして実行可能ファイルを生成することも可能だ。
メリット4.テストが容易
Zigの特徴の一つがテストブロックだ。Zigでは、任意のソースコードファイル内に記述したテストブロックを独立して実行できる。この仕組みによって、実行可能ファイルをビルドせずに任意のテストを実施したり、簡単で迅速なプロトタイピング(試作品を用いた事前検証)をしたりすることが可能になる。
ビルドコマンド「zig test」を使うと、実行可能ファイルを生成することなく、ソースコードファイル内のテストブロックをコンパイルして実行できる。以下は「module.zig」というファイル内のテストブロックをコンパイルして実行するコマンドの例だ。
zig test module.zig
例として、以下のテストブロックを含むファイル「test.zig」を考えてみよう。
const std = @import("std"); test " => testing integer div built-in" { std.debug.print("\n" ++ "0 div 3 {}\n" ++ "1 div 3 {}\n" ++ "2 div 3 {}\n" ++ "3 div 3 {}\n" ++ "4 div 3 {}\n" ++ "5 div 3 {}\n" ++ "6 div 3 {}\n" ++ "7 div 3 {}\n" ++ "8 div 3 {}\n", .{ @divTrunc(0, 3), @divTrunc(1, 3), @divTrunc(2, 3), @divTrunc(3, 3), @divTrunc(4, 3), @divTrunc(5, 3), @divTrunc(6, 3), @divTrunc(7, 3), @divTrunc(8, 3) } ); }
これは、Zigの組み込み関数「@divTrunc」を使って、0〜8の整数を3で除算した結果を標準出力に表示するテストブロックだ。1行目の「const std = @import("std");」は、標準ライブラリ(プログラム部品群)を呼び出している。その後、計算式の表示とそれに対応する計算結果を整形して出力するために「std.debug.print」関数を用いている。
このテストブロックをzig testコマンドでコンパイルし、実行した結果は以下の通りだ(画面)。
次回は、5つ目のメリットを解説する
TechTarget発 エンジニア虎の巻
米国TechTargetの豊富な記事の中から、開発のノウハウや技術知識など、ITエンジニアの問題解決に役立つ情報を厳選してお届けします。
Copyright © ITmedia, Inc. All Rights Reserved.