これからの主流は、一度プログラムしたソースを簡略化し安定化できる優れたプログラミング言語だ。(まだそんなの無いけど)

プログラミング

どうも、りーず(leez)です。

色々思うことがあって記事を書くことにしました。

今回は理想論なので、
「そんな意見もあるのか」程度に見ていって欲しいです。まぁ、趣味です。
決して役には立たないのであしからず…。読み物です。

・ムーアの法則の崩壊
・コンシューマはスピードより安定性を求める
・新たなベクトルへの転換が必要になる

という内容です。


・ムーアの法則の崩壊

ここ数年で、「ムーアの法則が崩れたのではないか」と言われています。
ムーアの法則というのは半導体チップのメーカーの大御所として知られるIntelの創業者の一人、
ゴードン・ムーア氏が1965年に論文で提唱した「半導体集積回路のトランジスタ数は18ヶ月ごとに2倍になる」
というものです。

簡単に言うと、一年半でパソコンの性能が2倍になるというもの。
確かにその通りに技術革新は進み、Intelもそれを前提として技術開発のロードマップを描き、発展してきました。

Windows95が出て、5年後にWindows2000が出る頃にはWindows95のパソコンは化石のようなものだった訳です。だからOSも頻繁に変わる必要性があったし、それによってマイクロソフトやAppleコンピュータなどのOSメーカーも「OS新製品」の享受を受けていた。
パーソナル・コンピュータはハードウェアとソフトウェアの両面で進歩し続けてきた訳です。

しかし、2015年の7月15日にインテルが第2四半期の決算報告において、「CPU製造プロセス(プロセスルールの10nm以降)に大幅な遅れが生じている」と発表しました。

CPUの小型化がnmレベルで進み、「よりチップを小さくして性能を良くする」という部分で限界が見えてきたのです。半導体の密度が大きくなると、回路の配線同士が近くなる訳ですから、電子(電気)が流れる際にエラー(短絡不良/ショートなど)が出やすくなります。
ムーアの法則の限界がそろそろ来ている、ということをインテル自身が認めたとも言えます。

事実、ぼくも2011年に購入したsandybridge Core i7 2600のCPUのパソコンを持っていますが、
5年前のCPUであっても、まだ現役。パソコンをリカバリ(初期化)すればまた十分使える性能だと感じます。(CPUより、むしろHDDの劣化のほうが問題)

・コンシューマはスピードより安定性を求める

CPUのスピード向上だけを求めて指針にしてきた時代は転換期にきているのです。
Windows10が発表されましたが、Windows7で十分と思っている人は多いと思います。
中には「Windows XPで良かった」という人もいます。
これはOSが同じCPUで動作するからです。

彼らが何を重視しているかというと、安定性です。
XPは安定して動作するOSでした。Windows7もしかりです。
もちろん速度も求められるでしょう。ですが、速度はあって当然、安定性や使いやすさはどうか?
UIは優れているか?デバイスやソフトウェアの互換性は十分か?業務に支障は出ないか?
といったところに次の時代は価値観が移っていくのではないかと思うのです。

そこで、タイトルのプログラミング言語の話です。
近年のAppleのiOS及びMacのOSであるOS Xの評判はあまり良くありません。
バグが混在しているものを安易にリリースしている。
これは、ハードウェアではなくソフトウェアで付加価値を素早く提示して、他の競合に負けないようにしているためでしょう。ですが、それが完全に裏目に出ています。
開発スピードを求めるがゆえに、iOSやMac OS X自体の品質が落ちている。

もちろんそこに新しい機能や付加価値があるため、ユーザーは新しいものに乗り換えるわけですが、乗り換える前のものより安定性が落ちたら、話にならない。

僕の使っているcubaseというソフトウェアも同じです。
新しい機能をいくら追加しようとも、そのソフトウェア自体がハングアップしたり、仕事ができないような不安定要素があるのであれば、前のバージョンのほうが優れているという判断になる。

自動車業界も同じです。
今後、自動車業界で安全走行システムのために多くのプログラミングコードが書かれることが予想されますが、そこにはバグは絶対にあってはならない。

・新たなベクトルへの転換が必要になる

このような時代に求められるのは何かというと、一度プログラムしたソースを機能はそのままに、後から簡易化し安定化できるような優れたプログラミング言語です。

プログラムは一度書くと冗長になる傾向があります。
そして、そのコードが何をしているか、どのような意図でそのコードを書いたかは、
プログラミングをした本人でないとなかなか分からない。

他の場所で意図しない参照のされ方をしている場合もある。
そうすると、スパゲッティコードになり、手がつけられなくなります。

そしてその部分は放置される。
放置された部分が核となって動く。

そのようなことが繰り返されるとソフトウェアはバージョンを重ねるごとに重くなり、
起動速度が遅くなる訳です。
CPUの性能上昇はなだらかになっていくのだから、もうCPUは頼りにできない。

そもそも一度プログラミングしたものを簡易化・軽量化するという発想自体が少ないのが問題です。
最初からプログラミングし直す、という発想もあっても良いと思います。

だからこそ、次の世代に必要なのは、コード簡略化や単純化が後からできる、後からしたくなるプログラミング言語です。

今、プログラミング言語も飽和の方向に向かっていて、新しい言語はほとんど他の言語の焼き直しです。若干違うな、格好いいな、あれっでも本質的には同じじゃない?、くらいのものです。

そのようなことをするならば、ベクトルを違う方向に向けた方が良いんじゃないか、ということを思い、このエントリーを書きました。

大規模なソフトウェアは、設計書とアルゴリズムからプログラムが自動生成されるような流れになっていくんでしょうかね。