SymPyを知らなかった自分が怖い

自分のネイティブプログラミング言語は Lisp といいたいところだけど、それは若い時で今は Ruby がほぼその位置をしめている。
Python の隆盛が聞こえてきて、ディープラーニングなんかはほぼ Python という状況だけど、NumPy や GPU 関係のライブラリの出来がいいためであって Ruby 圏だってそのうち追いつくんじゃないかと思ってた。
だけど最近量子コンピュータとか勉強しはじめて、線形代数や固有値問題を再勉強しながら「こんな式変形、機械にやらせればいいじゃん」と思いながら SymPy にたどり着いたところ。SymPy すごすぎ。30×30 の行列なんて手で処理するはずないけど、SymPy ならたちどころに処理する。
よくよく見ると Python 周りには巨大な数学文化が囲っている。Ruby は整数に限界がないし、はじめから Rational クラスとかついていて数学的な素養はそれなりのはずなのだけれど、Python 周りの数学関係の圧倒的な人数は短時間でどうにかできる問題ではないような気がする。
別にネイティブ言語は 1 つという決まりはないし、これからは Python もちゃんとやろうと思う。ちなみに Lisp が今でも現役なのは Maxima とかそれなりに数学文化が根付いているというのも一因なのかなとも思う。恐るべし数学文化。

言語非統一

正月を祝って、彼岸に墓参りし、ハロウィンで騒ぎ、クリスマスにツリーを飾る。
おおよそそんな感じである。プログラミング言語を統一してどこでも同じ言語を使おうという考えは昔からあったけど結局「究極のプログラミング言語」を生み出し続けることになっているだけだと思う。
なんであれモジュールをAPIとかRPC的な使い方にしてしまえば、どんな言語で書かれていても問題ない。言語間の比較をどうでもいいところまでする必要もない。
僕としてはグルー言語としてはRubyを使い、抽象的なツリー構造を「飾る」にはLisp系の言語を使おうと思う。

ソフトウェアシステムをメンテするシステム

大抵のソフトウェアシステムにはメンテナンス要員が必要になる。
メンテナンスも含め完全自動化ができればいいが、現実的にソフトウェア修復ができるディープラーニングシステムはない。(現在のディープラニングシステムには論理的な演繹系や帰納系がうまく結合できていないと思う。)今のところ、ソフトウェアシステムのメンテナンスの自動化を考える場合は、人間の関与を入れるのが現実的だ。

 ソース解析
    +-モデルDB(S式?)- +- UI(Web.メール)
プロセス解析            |
              問い合わせDB (S式?)

とりあえずソフトウェアシステムの抽象表現として木構造をS式などでデータベース化するだけでも自動化の端緒になるのではないだろうか。
ユーザインタフェースは「人間的に」Webとかメールにしておいて、問い合わせ回答やアドバイスが出せるようにしておく。

ゆくゆくはそれらのS式をディープラーニングにかけて一つ上の自動化ができるかもしれない。