Hello, World!
伝統に従ってHello, Worldを出力する簡単なコードを書いてみましょう
プロジェクトのディレクトリを作成する
まずはWapLコードを格納するディレクトリを作るところから始めましょう。WapLではどこにプロジェクトを作成するかはたいした問題ではありませんが、この本ではホームディレクトリにprojectsディレクトリを作成してプロジェクトをすべてそこに保管することを推奨します。
projectsディレクトリを作成して,その中にhello_worldディレクトリを作成してこれを「Hello, World!」のプロジェクトのディレクトリとします。
$ mkdir ~/projects
$ cd ~/projects
$ mkdir hello_world
$ cd hello_world
WapLプログラムを書いて実行する
次にソースファイルを作り、main.waplというファイルにしてください。WapLのファイルは常に.waplという拡張子で終わります。
作成したら、main.waplファイルを開き次のコードを入力してください。
ファイル名:main.wapl
fn main():i32{
println("Hello, World!");
return 0s;
}
main.waplファイルを保存したhello_worldディレクトリにいることを確認して以下のコマンドを打ってファイルをコンパイルして実行してください:
$ waplc -i main.wapl -o main
$ ./main
Hello, World!
Hello, World!という文字列が出力できたはずです。この出力が見れない場合は「WapLを導入」に戻ってもう一度手順に漏れや間違いがなかったかを確認してみてください。
Hello, World!が確かに出力されたら、おめでとうございます!これであなたもWapLプログラマーです!ようこそ!
WapLプログラムの解説
この「Hello, World!」プログラムを詳しく再確認しましょう。こちらが一つ目の要素です:
fn main():i32 {
}
これらの行ではmainという名前の関数を定義しています。WapLではmainは特別な関数で実行可能なWapLプログラムで走る最初のコード、すなわちエントリーポイントになります。ただし、多くの他の言語とは違い、main関数が存在しない場合でもエントリーポイントを任意の関数に指定することができます。引数がある場合は()の内部に入ります。その後に続く:i32は戻り値の型を指定しています。WapLのmain関数は常にi32という32bit整数の型の戻り値です。
関数の本体は{}に囲まれています。
main関数の本体は、こんなコードになっています:
println("Hello, World!");
return 0s;
WapLでは複数行にわたる括弧の中身はインデントをするのが基本です。また,式の終わりは;で終わるのが原則です。これらは守らなくても正常に動作はしますが、可読性やコードの意味を明示的に示すために守ることを推奨します。
printlnは与えられた文字列を標準出力に出力する関数です。ここでは引数に"Hello, World!"を渡しています。
returnは戻り値を返しています。returnはほとんどのコードを関数呼び出し形式で記述するWapLの中では珍しくreturn 0sのように半角スペースで区切って戻り値を書きます。ここでは特に意味はないですが0sを返しています。0sはi32型の0のリテラルですが詳しくは第2章で説明します。
コンパイルと実行は別ステップ
先ほど打った以下のコマンドの意味について説明します。
$ waplc -i main.wapl -o main
$ ./main
WapLコンパイラ版ではwaplcに-iでソースファイルを、-oで出力する実行ファイルを指定して実行可能ファイルを出力します。そして、二つ目のコマンドで一つ目のコマンドで出力した実行可能ファイルを実行しています。
PythonやRuby、JavaScriptなどの動的言語に造詣が深いなら、プログラムのコンパイルと実行を個別の手順で行うことに慣れていない可能性があります。WapLコンパイラ版はAOTコンパイル(ahead-of-time;訳注:予め)言語です。つまり、実行可能ファイルを誰かにあげ、受け取った人がWapLをインストールしていなくても実行できるわけです。.py、.rb、.jsファイルをあげたら、それぞれPython、Ruby、JavaScriptの処理系がインストールされている必要があります。
簡単なプロジェクトならwaplcでコンパイルするだけでも十分ですが、wapl-cliを使うことでもっと簡単にプロジェクトの作成、ビルド、標準ライブラリなどをできるようになります。次は、wapl-cliについて紹介します。