汎用人工知能の開発をするにあたって使う言語とかを考えていた。汎用人工知能(まだそれが何を意味するのか明瞭にはわかってない)で必要なスペックは次のものなのではないかなとあげてみた。
- 高速
- 並列処理に向いている
- 関数型(少なくとも副作用を前提としないプログラム)
ここであげた条件には自分の好み、向き不向きが含まれているけれど漠然とした現状を考えるとこれが妥当なのではないかな。 高速であることはいうまでもない。多分CとかC++が一番よい。でもC、C++はメモリ管理とか大変そうで個人的にはデカイものを書くときには向いてない気がする。 並列処理に向いているというのは機械学習を行わせたいので今流行のMahoutもJubatusも並列で計算をおこなっているのでそれが向いているものがいい。ErlangとかScalaがいいらしい。特にScalaのActorアーキテクチャはデッドロックや並列計算での問題が解消されやすいみたい。
http://www.atmarkit.co.jp/ait/articles/1209/06/news134.html
あと関数型。副作用を前提とした言語だとプログラムを書いていてバグを埋め込みやすいのでできれば関数型言語を使いたい。Haskellなんかは純粋関数型言語で今流行だけど、ライブラリの数とかでは叶わない。あとはちょっとこてこてなのでSchemeとかかな。
というわけで選んだのはScalaです。一番バランスがよかったのでこの言語で作っていこうと思います。今はこちらでScalaの勉強中。
http://www.atmarkit.co.jp/ait/articles/1202/10/news122.html