Rubyを完全に理解した勢の@dosaidonです。さて、来年に向けてこんな機能がRubyに欲しいを二つほど書いてみました。
超多次元のデータ構造
RubyのArrayは異常に良くできている。複素数をサポートしているのも良い。一方で、1次元の列ベクトルと行ベクトル、2次元のマトリックス、3次元以上のテンソルとかの数値計算に必要なデータ構造とクラスの話が無いのが気になる。「たのしいRuby」は入門書のせいかもしれないが一次元のArray(列ベクトルでも行ベクトルでもないリスト)は出てくるが2次元以上のn次元のデータ構造の話がいくら読んでも出てこないので入れて欲しい。
さらに、超多次元のデータ構造にDataFrameのようなラベルでのアクセスがあるともっと嬉しい。なお、DataFrameは2次元の行列データに行ラベルと列ラベルが追加されたもので、まあエクセルの表みたいなデータ構造のこと。
2年4組
前期
行ラベル/列ラベル 算数 国語 理科 社会
青木一郎 99 85 95 70
佐藤二郎 69 87 85 55
山田三郎 99 85 93 -
2年4組
後期
行ラベル/列ラベル 算数 国語 理科 社会
青木一郎 99 78 95 70
佐藤二郎 69 58 70 64
山田三郎 99 69 93 80
データ構造があれば計算するクラスやメソッドは自分で作れるけど、基本的なデータ構造を作るのは難しい。
p seiseki_hyou["算数"]["青木一郎".."山田三郎"]["前期"]["2年4組"].average
科目、名前、クラス、前期後期の成績データがあるとして、こんなのが簡単に出来ると嬉しい。次元nはメモリが許す限り制限無しが良い。
マトリックスの並列計算
$x=\left( A^{T}\cdot A\right) ^{-1}A^{T}b$
こんなやつをGPU、CPUを沢山積んだMacを使いRubyのRactorで高速に解きたい。
以上、Rubyにこんな機能が欲しい二つでした。