30代から日課にしていたギターの稽古を今年の春くらいからサボり出して、またコンピュータ関連の勉強を再開することとした。ギターでその道のプロとなり食えるようになれるわけがない、と思い始めたのであった。学生時代にプログラミングと出会った時に俺はこれが天職かもしれんと思ったが、最近小中学校でも習うらしいし、もう学校で習ったアドバンテージも無いんじゃない?と思っていたが、それでも46歳になって技術者全体で見た指標で人並みより出来るらしい。それがギタリストだった場合、もちろんプロの「並」あればプロなんだろうけど、人並みで食える業界ではないという常識に準じたわけです。
まあその意味ではプログラムでも人並みの才能なわけで、それで勝てるのはハードウェアが良く出来ていることが前提としてあって、プログラミングは誰が書こうと同じプログラムなら同じように動くという所に大きな恩恵に預かっているのです。もちろん、プログラムにも個性が出て、同じ目的を持っていてもアプローチの違いでやり方は人それぞれですが、まあ活字と一緒ですよね。同じように書けば同じ、というところを個性を光らせる仕事としてみれば難儀だけど、自分がいちばんとかオリジナルでない時に最高のものが別にあるとすると準じるのが容易というところで、一番手狙いはしんどい仕事だけど二番手以降でもたくさんの人が食える仕事なのかもなと思います。
自分がいちばんだと思えないと仕事が出来ない時期が俺にはありましたが、客観的な負け状況を見つめて、立ち直ったらまた勉強の意欲もわいてきたのです。
今度はプログラムだけではなく、常識レベルのデータベースも勉強して、ちょうどドラクエⅤのAIを開発した開成東大コースの土方さんが「プロセス思考」てのを展開していらして、対してデータベースってデータ中心アプローチなんですよね。これを今勉強している。同じコンピュータでもプログラムはプロセス中心アプローチで、将棋ベーシックを組んだ時には駒の動きや先読みの思考はプロセス中心でした。対して定跡部などはハッシュテーブルを引くというアルゴリズムの要素もあるものの、将棋の指し手を一手指すだけならその一手をデータとして保持しているだけで良いというデータ中心アプローチもあるわけです。考えて導き出すほかに、コンピュータは計算機でありながら記憶装置としても膨大な記憶量があるので、勝ちの指し手を覚えまくったコンピュータてのも強いんとちゃうかと。
それとは別に、コンピュータグラフィックスでも、俺らの年は動画が人気で静止画をじっくりレンダリングする時代から、レンダーをコマ撮りしてアニメーションさせたり、そういうことをやっていました。既成ソフトを何本も使って連携して、動画を作る。その中でプログラミングと3DCGの関係もゲームとかアニメのように「動かせる」というところがプロセス中心アプローチだったわけです。
しかしデータ中心アプローチで考えると、3Dの形状に重きを置くわけです。動かすのは後回しに、点描とかフレームとかポリゴンモデルでロボットとか恐竜を模型のようにデジタルの形状にして記憶として蓄える。ここに重きを置く。
そうしてみると、データ構造というプログラミングのひとつの要素も、データベースのSQLのS(ストラクチュア)とC言語の構造体(ストラクト)で全く同じことなんですけど、データベースが分からないでCとかJavaでファイルシステムやっているうちに、複雑な構造を理解してゆくと、データベースの設計と被るところが出てきたわけです。
んでまあ、プログラムを突き詰めて構造まで来たんだから俺は偉くてデータベースなど勉強しなくて良い!と思うことも出来るのですが、プログラムをほどほどで辞めておいて、データ中心アプローチからもういちどプログラムに戻ってみると「あれ?何を計算しようとしているのだろう?」とメタ的になり、悩みが思考へと前進する感覚です。
それで学生時代の専攻であったCGに戻ってみるとスッキリした頭でサクサクとプログラムが進み、専門書で良く出てくる法線などの問題に速やかにぶつかるわけです。
それらはそれらで俺のプログラムの組み方である自分の頭で考えてみて、それをプログラミングにトレースするという方法から、まず賢い考え方を書物などで学んで、それから目の前の課題に当てはめてみるという方法に変わってきたのです。
まあハードウェアにしてみるとプロセッサを使って課題解決するか、メモリを使って課題解決するかというアプローチの違いです。とかく勉強をガリベンしてみるというのも脳のメモリに着目したデータ中心アプローチで、数学もある程度分かったつもりで今頭にあること中心に考えるけど、考えるのやめてもっと違う人の本を読んでまず勉強するということをした方が前進するだろう。
その意味で、刺激を受けて発想の転換となる本に出会えるかというところもあって、読んでも退屈だなと思う本を例えば一節丸暗記して唱えようとしてみたりすると変わってくるのかもなと。
なんか高校の時の数学のテスト以来、仕事でのプログラミングでも何度もこの感覚あったけど、考えて心地よいをちょっと通り過ぎた頭痛を味わっております。