試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Boo言語についてと同言語で書かれたプログラムの実行に関して

Booについて

Booは共通言語基盤(CLI)の実装(Monoや.NET Framework)上で(OSやアーキテクチャに依存せずに)動作するプログラムを記述するための言語名(Boo言語)であり、同言語で書かれたプログラムを扱うツール群でもある(ライブラリ含む)。ライセンスはBSDスタイル(本文)。Boo言語はPythonに近い文法という特徴がある(同一ではない)。
Pythonとは異なるので、Pythonに付属するモジュール群は利用できないが、Mono/.NETの基本クラスライブラリとMono/.NET向け言語バインディングが利用でき、Gtk#のようなGUIツールキットも使用できる。
標準の文法として(Perlのように)正規表現による処理をサポートしている(基本クラスライブラリの正規表現の機能も使用可)。
ツールは「boo」という名前のディストリのパッケージになっている場合が多いので、インストールするにはこれを検索して追加する。

実行

Boo言語で書かれたプログラムには2つの実行方法がある。

プログラムをMono/.NETアセンブリコンパイル(コンパイラboocの使用)

Boo言語のコードをMono/.NETアセンブリコンパイルして実行する方法でboocを用いる。コンパイルしたアセンブリの起動時間は後述のbooiを用いた場合よりも短い(Pythonスクリプトよりは時間がかかる)。
標準ではコンパイル時にコンパイラのバージョンが表示され、これを表示しないようにするには-nologoオプションを付ける。

(コンパイル)
$ booc -nologo ([オプション...]) [.booファイル...] -out:[出力ファイル]

(実行)
$ mono [出力ファイル]

ソースファイルが複数の場合、関数やクラスの定義以外の(メイン)処理を記述できるのは1つのファイルのみ。複数ファイルにメイン処理を記述するとコンパイルエラー「BCE0029: More than one entry point found.」になる。

単一ファイルのプログラムを直接実行(インタプリタbooiの使用)

booiを用いると、コンパイルをせずに直接単一ファイルのプログラムを実行することができる。プログラムの起動に時間がかかるが、コンパイルと実行という2段階の手間をかけずに済み、プログラム記述の作業段階に適する。
.booファイルの1行目を

#! /usr/bin/booi

とした上でファイルに実行属性を付けると、このファイルをそのまま実行することができる。
もしくはbooiコマンドを直接実行して引数にソースファイルの場所を指定する。

$ booi [.booファイル]
シェル(対話型インタプリタbooish)

Pythonのようなシェル(対話型インタプリタ)がBooにも存在する。これはbooishというコマンドで起動する。
終了するには「/q」か「quit()」を入力後Enterを押す。

ソースをコンパイルした場合のMono/.NETアセンブリの依存ファイル

boocコンパイルされたMono/.NETアセンブリは、一部の最低限構成の場合を除いて基本的にMono/.NETアセンブリBoo.Lang.dllに依存する。システム(GAC:Global Assembly Cacheの中)にこれがインストールされていれば特に何もせずに動作し、インストールされていなくても実行ファイルのアセンブリ(.exeファイル)と同じディレクトリにこのファイルがあれば動作する。

関連記事:

使用したバージョン:

  • Boo 0.9.2.3383