Scheme処理系は世の中に山ほどある。RnRS準拠(n≧5)に絞ったとしてもかなりある(というかR5RSが多い)。そこで、有名処理系が選ばれる理由を考えてみた。
有名所の処理系
R5RS- Chicken
- Eggが便利
- Cに変換すれば高速に動く
- コミュニティが大きい
- Chez
- 現状最高速の処理系
- Guile
- GNU公式拡張言語
- コミュニティが大きい
- IronScheme
- .Netで動く
- Larceny
- 高速
- R7RSハイブリッド
- Racket
- 高速
- コミュニティが大きい
- Planetが便利
- リッチな環境がついてくる(DrRacket)
- Mosh
- Ypsilon
- Vicare
- ファンが多い?
- Chibi
- コンパクト
- C拡張が書きやすい
- Gauche
- 日本語ドキュメント
- 手軽?
- Kawa
- JVMで動く
あんまりよく考えてないけど考察
Chicken、Guile、Racketはコミュニティの多きさ≒問題解決のしやすさとライブラリの豊富さが大きいかなぁと。Chezは元商用の処理系だけあって速い。Gaucheは日本語ドキュメントが大きいかなぁ(日本限定で考えれば)KawaとIronSchemeは環境固定されるのでその環境で使いたいならほぼ一択状態。流石にJVMだと他にもあるけど、知名度的にはKawa一択だろう。
Larcenyがどれくらい使われているかはちと分からんけど、超有名な処理系なのでそこそこユーザーはいるんじゃないかなぁ。
Mosh、Ypsilon、Vicareはリリースが年単位でされてないから(MoshとVicareはリポジトリの更新があるけど、Ypsilonに関しては多分放棄されてる)、正直これらを選ぶ理由が見つからない。バグリポートしても直らんし。強いて言えばファンが多いくらい?
スペシャリテ?
じゃあどうするか?そもそも知名度が低いという点でどうしようもないんだけど、宣伝するにしても「それなら〇〇でいいじゃん」ってことにならないようにしたい。っで、現状ある武器で考えると以下かなぁ:- R6RS/R7RSハイブリッド
- リーダーマクロ
- そこそこ手軽
- Cトランスレータ有り(バイナリ走らせるのにランタイムがいるけど)
地道にライブラリを増やすとか、環境を整えるとかなぁ。
No comments:
Post a Comment