オープンソースのプログラミング言語 Red の勉強中
調べたこと、やってみたことなどをまとめていきます。
Redとは?
オープンソースのプログラミング言語です。
Rebolという言語の後継だそうです。
[オフィシャルブログ]
http://www.red-lang.org/
[Githubリポジトリ]
https://github.com/red/red
どんな言語?
公式ブログの「About」に特徴が記載されていますが、たくさんありすぎるので一部だけ抜粋して翻訳
- 同図象性を持つ
- 関数型と命令型のスタイル、かつリアクティブでシンボリック
(シンボリックが何を意味するのかはまだよく分かっていません) - スクリプトのようにも使えるし、ネイティブコードにコンパイルも可能
- クロスプラットフォーム
- 強力なPEGパーサーによるDSL?(ちょっと訳がおかしいかもしれません)
- 楽しい
など。
最後の「楽しい」は、ちょっと触ってみた感じでは私はわりと面白いと感じてます。
メジャーなオブジェクト指向言語とは全く趣が違うので、新鮮です。
Windows、Mac、Linuxいずれもサポートしているようですが、各種記事を見ている感じではたぶん一番サポートされているのはWindows?なような気がします。
Mac版とLinux版については試していなくて詳しくはわからないのですが、Linuxの何かのディストリビューションに同梱されることになったらしい?1
インストール
インストールと言っても以下のダウンロードページから、exeをダウンロードするだけです。
http://www.red-lang.org/p/download.html
2016年8月21日現在、最新の安定版はVer0.6.1のようですが、私は上記のサイトの一番下の「Latest Build」の方を使っています。
最近大きな機能追加がたくさん入っているようなので、そちらで遊んでいます。
ダウンロードしたexeは安定版だと「red-XXX.exe(XXXはバージョン番号)」、Latest Buildだと「red-latest.exe」となっていますが、公式ページ上ではバージョン抜かして「red.exe」と呼称しているので、本記事でもそちらに習います。
ダウンロードしたred.exeをダブルクリックすると、コンパイルが始まります。
コンパイルが完了すると「Red Console」が起動します。
次回以降はred.exeを実行するとすぐにRed Consoleが起動しますが、どうやら「C:¥ProgramData¥Red」フォルダ内の「gui-console-XXXX-XX-XX-XXXXX.exe」が実行されているようです。
コードの実行の仕方
REPLから
Red ConsoleはいわゆるREPLで、コードを打ち込んでEnterすることですぐに結果を確認できます。Hello Worldするには「print "Hello World"」と打ってEnterすればOKです。
スクリプトファイルから
Redのコードを書いた拡張子「.red」のファイルを「gui-console.exe」にドラッグアンドドロップすると、実行できます。
コンパイルする
red.exeで拡張子「.red」のファイルをコンパイルするとexeが作成されるので、それを実行することもできます。
コンパイルは以下のような要領でコマンドプロンプトなどから、red.exeに「-c」をつけて、コンパイル対象のファイル名を渡せばOKです。
C:\ProgramData\Red>red-latest.exe -c "C:\ProgramData\Red>\test.red"
なお、プラットフォームなどに合わせて細かい引数の調整が必要です。
とりあえずサンプル
構文の説明とかを書き連ねてもあまり面白くないし、Hello Worldだけしても言語の雰囲気が分からないので、とりあえずサンプルプログラムを書いてみました。
Red []
dir: request-dir
files: read dir
show-file-or-folder: func [ files [block!] ] [
foreach file files [
print [form file "is" either dir? file ["folder"] ["file"] ]
]
]
show-file-or-folder files
勉強始めたばかりなのでこれがRed的にイケてるコードなのかちょっと自信ありませんが…
実行するとフォルダの選択ダイアログが表示されて、指定したフォルダの中身を列挙します。ついでに中身がフォルダなのかファイルなのかを一緒に出力してみました。
長くなったのでコードの説明はまた次回に…
前述の3つの方法のいずれでも動作させられますが、gui-console.exeにドラッグアンドドロップするのが一番楽だと思います。