Crystal による数値計算入門です。この入門では、常微分方程式、
特に多体問題等の運動方程式、力学系の数値積分と結果の解析に関する基本的
な知識と技法を身につけることを目標とします。
今回はまずインストールから。
Crystal 公式のWebページに
書いてあるのでその通りに、という話ですが、 Windows10 であれば、
WSL で Ubuntu をいれてそっちでやりましょう。
WSLのいれかたは一杯ドキュメントがありますが、たとえばここに従うことでよいかと思います。
Crystal のインストールができたら、ターミナルのコマンドプロンプトに crystal といれると以下のような出力がでるはずです。
gravity> crystal
Usage: crystal [command] [switches] [program file] [--] [arguments]
Command:
init generate a new project
build build an executable
docs generate documentation
env print Crystal environment information
eval eval code from args or standard input
i/interactive starts interactive Crystal
play starts Crystal playground server
run (default) build and run program
spec build and run specs (in spec directory)
tool run a tool
help, --help, -h show this help
version, --version, -v show version
Run a command followed by --help to see command specific information, ex:
crystal <command> --help
(以下、 「 gravity> 」 はプロンプトだとします) -v でバージョンがでると
のことなのでやってみます。
gravity> crystal -v
Crystal 1.3.2 [932f193ae] (2022-01-18)
LLVM: 10.0.0
Default target: x86_64-unknown-linux-gnu
さて、どの言語でもまずは Hellow world! ということで
print "Hellow World!\n"
と1行書いた、hellowworld.cr というファイルを作って
gravity> crystal run hellowworld.cr
Hellow World!
これで、このプログラムの実行ができたことになります。ファイルの拡張子は
.cr にするのが普通のようです。 crystal run foo.cr で、foo.cr というプ
ログラムがコンパイルされてできた実行ファイルが実行されます。
print なんとか
は画面(ファイル等にもできますが)に 「なんとか」を出力する、Crystal の
文法的には関数で、 print という関数があらかじめ定義されている、という
ことになります。そのあとの "Hellow World!\n" ですが、「"」で囲まれたも
のが「文字列」を直接表すもの(「文字列」型の定数)ということになります。
C言語等と同じで文字列定数の中で "\" は特別な意味があ
り、
"\n" 改行
"\"" 「"」を表示する時
"\\" 「\」を表示する時
"\t" タブ
というあたりが使うことがあるものです。
この章のまとめです。
-
Crystal のインストール方法はCrystal 公式のWebページを参照。
-
Windown 10 なら WSL をいれて Ubuntu を動かすとあとが楽。
-
crystal で簡単なヘルプが、 crystal run foo.cr でプログラムの実行ができる。
-
プログラムの中では print で出力できる。文字列は 「"」で囲む。文字列
の中では "\n"で改行になる。
次から、もうちょっと本格的なプログラムにはいっていきましょう。
1.1. 課題
-
自分の計算機に Crystal をインストールし、
crystal
crystal -v
をそれぞれ実行し、結果が本文と同様のものであることを確認しなさい
-
Hellow World! を出力するプログラムを作成、実行し、結果を確認しなさい。
1.2. 参考資料
https://crystal-lang.org/reference/overview/
https://crystal-jp.github.io/introducing-crystal/assets/pdfs/introducing-crystal.pdf