なにこの記事
10月30日に某渋谷で行われたdots2周年パーティーでのMatzの講演内容をレポート……レポート?したもの。むしろメモを簡単に要約したといった表現の方が正しそう。
未来はこんな技術が来る!みたいな話よりというよりは、言語開発者なMatzさんから見た、未来の予想するときの考え方であったり重要な能力についての示唆という面が強かったように思う。
免責事項
メモはしてたので話の大筋は思い出せるがうろ覚えで描いているところも多い。
なんかそんなアトモスフィアだったんだぐらいの気持ちで読んでくれるとうれしい。
テクノロジーの変化の話
今回の話は平たく言うと言語デザイナーがどういう風に未来を見ているかという話
結論
未来がわかる人はいないが、予測することはできる
おそらくだが、未来は過去から現在に向かって起きている変化の延長線上にあると考えて間違いない。
現在起きている変化の方向性と、全く異なる向きにテクノロジーが変化するということはありえないだろう。
では、その変化の方向性とは何か?
大きくハードウェアとソフトウェアで大別すると以下のようなことがある。
ムーアの法則によるハードウェアのスペックの爆発的な進化
ex. 世界には5台計算機があれば世界中の計算需要を満たせるといわれていた
→実際には去年のコンピュータの出荷台数10億台(注:講演でも適当な数値と言われていたが、実際には2015年時点でPC・タブレットとスマホ合わせて年間17億ちょっとのようだ)
ex.パソコンのメモリは640kbで十分(1980年代)
→現在のPCのメモリはギガ単位
半導体集積度が2年で2倍、性能は18ヶ月で2倍になるような世界。
20年前の1部屋分のスパコンの4倍の性能がiphone6といったらわかりやすいだろうか。
未来もおおよそこの流れの延長線上にあると考えると、
- 超低価格コンピュータが
- 超大量につくられ
- それが超高速ネットワークでたくさんのコンピュータとつながっている
そんな世界になっているはず。
20年前と現時点に比較で、
クロック数150倍
メモリ2000倍
HD 3200倍
コア(CPU)数4倍
こういう変化が未来まで進むと・・・という風に思考を進めていくとよい。
ハードウェアの進化でソフトウェアの進化が加速する
ハードウェアの進化に伴いソフトウェアもそれに合わせて進化していく。
FORTRANから始まって、LISP COBOL C Smalltalk Erlang Java JavaScript PHP Rubyなどを軽く紹介していく。
その上で言語の進化とは「できなかったことができるようになる」ようなことだ、とのこと。
ここでいう「できなかったことができるようになる」というのは、仕様上不可能だったことが可能になる、ということではなく、人間の脳に負担が大きすぎて仕様上可能でも実現は不可能だったことが可能になることを指す。
例えば、アセンブラだけでアルゴリズムを組んでTwitterを作ることは理論上可能かもしれないが、人間の脳がボトルネックになって到底不可能である、ということ。
これを別の言葉で言い換えると、プログラムをより抽象的かつ簡潔に書けるようにすることで、環境に適応しやすくするという流れがソフトウェアの進化の方向性として存在する。
未来へのキーワード
コンピュータの未来を表す言葉として、いろいろな単語が現れている。
これらの言葉はまだ言葉の定義がはっきりと定まっていない、いわゆるバズワードだがどうしてそういう言葉が注目を浴びるようになってきているのか、これからそうしたバズワードで表現されるような内容が課題やチャレンジであると思っている人がいるよという風に捉えて本質を理解することができれば、有効に扱うことができる。
その他
今後もいろいろ新しい技術がでてくる。
そうした新技術を身につける力はエンジニアには大事。
ただし、新技術なんてものは(みんな知らないので)親切に教えてもらえない
なので、新技術を習得するために求められる力とは
- 調べる力(≒ググり力)
- 調べたことを理解する力
また、未来を予測する上で重要な要素は世界観。
世界観とはコンピュータのビックピクチャというか大枠がわかっているということ。
こういう課題が起きてきて、こういうソリューションが必要だとか考えられる。
大枠を把握していると新しい技術が大きなジグソーパズルのどこにはまるかが理解できるようになる。
なので、どんどん変わるもの(新しい技術要素とか)より変わらないものの方が大事。
- コンピュータサイエンス
- アルゴリズムとか
- アーキテクチャとか
- 基本プロトコルとか
- 人間の特質
そういったことを学んだ方がいい。
最後に
あなたが作っているものはあなたのアプリ専用のDSLを作ることだ。
言語をデザインするという考えでソフトウェア開発に当たるといいと思うよ!