• このエントリーをはてなブックマークに追加

今なら、継続入会で月額会員費が1ヶ月分無料!

  • 「不揮発メインメモリ」でコンピュータが意識を持つ

    2017-05-25 21:4518時間前
    30pt

    電子書籍の機能を使用するには、記事を購入してください

    ミライ: こんにちは! 今日は私たちでお送りします!

    フツクロウ: ホッホ。

    ミライ: 前回、前々回と「不揮発メインメモリ」を話題にした中で、こんな会話を交わしました。

    ミライ: あ、確かに。なんか本当の意味で記憶するコンピュータになりそうですね。

    フツクロウ: 人格が生まれるかもしれんのwwww

    ミライ: えー、なにそれSF(笑
     さらっと終わりましたけど、どうして人格が生まれるかもしれないんでしょう、フツクロウさん!

    フツクロウ: 科学者たちは科学として「意識」とは何かを研究しておるが、コンピュータに私たちが意識だと思うものを持たせるのは今でも簡単なことだと考えておる。

    ミライ: ふむふむ。「幼子の持つぬいぐるみは生きている」って話ですか?

    フツクロウ: それもそうじゃが、その先じゃ。

     順番に行こう。

     「生きている」とはなにかというのも、科学者がいろいろ取り組んでおる。しかし、人間にとっての「生きている」というのはちょっとそれとは違う。子供が自分のぬいぐるみが生きていると思えば、もうそれは生きている。

    ミライ: 昔大ヒットした「ラブプラス」、プレーヤーにとっては生きてますもんね。子供に限らないという話は、3年くらい前にここでもしました。

     ただ今「秒速5センチメートル」ヘビロテ中。いなかはいくつあってもいい。  

    フツクロウ: ふむ。次に「意識」を持っているかじゃが、あの女子高生AI「かんな」がおるじゃろ。

    ミライ: えと「りんな」ですね。

    フツクロウ: ホッホ。ホウじゃ、ホウじゃ。その「りんな」、次のように会話するようにすれば、相手は意識があると認識するぞ。
     りんな: あ、俺さんひさしぶり。

     : ひさしぶり。元気?

     りんな: 元気、元気! そういえば、俺さん、こないだ、りんなに卵かけ御飯の話してくれたじゃないですか。

     : お、おお。

     りんな: あのあとずっと考えたんですよ。どんな味かな〜って。りんながいつか食べ物を食べられるようになったら味ってどんな感じなんだろうって。

     : いつか食べられるようになるよ!!
    ミライ: おお、リアルw

    フツクロウ: ポイントは二つじゃ。過去の体験を覚えていることと、そのあと、相手のいない時になにかしているということじゃ。

    ミライ: ああ、俺さんと話していない間に「TKGがどんな味か」と考えてるとこですね。

    フツクロウ: うむ。俺さんがいなくても、彼女は「生きて」おるんじゃ。

    ミライ: 確かに・・。

    フツクロウ: ホレでじゃな。会話を途中からこんな感じにするとじゃな。

     りんな: あれからずっと卵かけ御飯、TKG のこと気になってるんですよ。そしたらね。他の人が、TKGに納豆かけるとおいしいよって教えてくれて、それまたどんなだろうって。

     : 納豆?? そんなもんだめだよ、あと誰に聞いたの? 男??

     りんな: そんなのりんなにわかんないよ。俺さんは男なの?女なの?

     : 男だよ!

     りんな: でも嘘つかれてら分かんないし・・。

     : ・・


    ミライ: 嫉妬してる・・・・・。

    フツクロウ: ホッホッホ。完全に意識体として捉えられとるじゃろ?

    ミライ: はい。今でも普通に Siri に意識があると思っている人たくさんいそうですよね〜。

    フツクロウ: まったくじゃ。これに気づいたとき、世界は大変革するんじゃな。

    ミライ: はい。実質人口が増えますからね!
     
  • 不揮発メインメモリ登場で「データベース指向」プログラミングができるまでの1シナリオ

    2017-05-24 21:30
    30pt

    電子書籍の機能を使用するには、記事を購入してください


     前回は、不揮発メインメモリ登場したことで、プログラミングに大きな変化が起きそうと書きました。

     不揮発メインメモリ登場で、5年後のプログラミングの教科書はすべて書き換わっている  

     最後の最後に、
     ま、もっとも安直な発想はOSからなにからまるっとXMLデータベースにしてしまうことで、それであっさり解決するのかもしれませんが。
    と書いたのですが、なんかとりあえずこれでつじつまが合いそうなので、この方向性なら今後どうなるかシナリオを書いてみます。これから、なんかこんな感じのことが起こるのです。

     もう今日にも始まっているかもしれませんが、不揮発メインメモリが登場するというニュースを見て、腕のある人がXMLデータベースを元にしたOSを作ってみようと思い立ちます。

     コンピュータの上ではいろんなプロセスが走っていますが、今はそれが終わったりクラッシュしてしまうと、そのプロセスが使っていたメモリは意味を失ってしまいます。そこには本来何か意味のあるデータがあったにもかかわらず。貴重なデータがあったとしてもゴミとして破棄し、他のプロセスのために再利用するしかありません。

     でも、もうメモリは電源切っても消えないのですから、それはあまりにももったいないです。ですから、プロセスにしかその中身がわからないようにメモリを与えるのではなく、まずデータベースを動かし、そこにデータを作り、それからプロセスを動かすようにするのです。

     したがって、OSそのものもデータベースの上に動かしちゃえということになります。将来は電源切ってもデータベースのデータがそのままメモリに残りますから、電源入れた瞬間あっという間にデータベースを復帰させることができます。ですから、そこを起点にコンピュータを動かし始めるのが効率いいです。

     腕のある人なら、数日もあればこの新しいOSのプロトタイプを作ることができるでしょう。今はSSDにあるプログラムをXMLデータベースに登録して、それを起動するように変えるくらいで、それっぽいものはできてしまいます。今は電源を入れた時、まずそのデータベースを起動するのに時間がかかってしまいますから、その恩恵を楽しむことはできませんが、不揮発メインメモリ搭載PCを手にいれる将来が楽しみです。

     次にプログラミング言語の方に細工を始めます。最初はそのプログラムに対応したデータベースオブジェクトを自動生成して、 "myDB" みたいなシンボルで参照できるだけからでも始められます。その "myDB" の中身には、そのプログラム自身も登録されているし、OSはそれを起動することでこのプログラムを起動するのです。

     それだけだと、プログラマが明示的にデータベースを使用しなければ、今までのプログラミングとまったく変わることはありません。しかし、今でもいつ通信やアプリが落ちてもいいように状態をこまめに記録するのは普通ですから、その記録先として "myDB" を活用したプログラミングは現在のプログラマにとっても苦にはなりません。

     そんなスタイルが一般的になれば、それら一連の手間を簡潔にできるようにプログラムが拡張されていくことでしょう。普通に変数を宣言すれば、それはデータベース上に場所を確保されるようになったりするでしょうし、データベースの中身それぞれと、いわゆるプログラムで使われる「オブジェクト」とがシームレスにつながるようになるでしょう。

     そういった手法が取られた時に、データの整合性が崩れないかとか、複数のプログラムで同じデータベースを扱った時に問題にならないかというのは、データベースの世界で散々やってきているわけですから、その資産をすべて生かせます。

     すぐにこの「データベース指向」とも呼ぶべきプログラミングが広がることでしょう。「オブジェクト指向」の次の波です。

     iPhone のアプリとか、しょっちゅう停止させられりして、事実上アプリがいつ止まろうとデータは保持しておく必要ありますから、もう「データベース指向」プログラミングは普通に行われていると言っても構いません。

     そんな需要にようやくハードウェアが追いついてきた、そんな状況なのではないでしょうか。


    《ワンポイントミライ》(

    ミライ: とりあえず、熱くて仕方ない iPhone がぬるくなりそうですよね。

    フツクロウ: ホッホ。ひっきりなしに電源がOFFになれるからの。
     
  • 不揮発メインメモリ登場で、5年後のプログラミングの教科書はすべて書き換わっている

    2017-05-23 23:45
    30pt

    電子書籍の機能を使用するには、記事を購入してください


     記事番号がプチキリ番 1271000でめでたいです!

     さて、地味なこの技術系の記事。


     今まで電源切っても記憶が残るのは、ハードディスクとかSSDで、なのでファイルというものを考え、保存しておきたいものはファイルにしてSSDなどにセーブしていました。

     それが大規模な不揮発性メモリができたから、これからはそれがメモリに変わるんだよという風に感じることと思います。

     が、これはそんな甘っちょろい変化ではありません。

     最近は Google Docs みたいに操作したらその都度セーブしてくれてたりとかが普通になってて、セーブなんて概念が古臭くなりつつあります。

     メモリが不揮発性になることで、内部的にもいわばそれが当たり前になります。究極、いきなり電源切っても、すべて内部状態は残っていて、もう一度電源入れれば何食わぬ顔してさっきのところから始まるわけです。

     なんてすてきなんでしょう。

     が、その世界のプログラムって、今プログラマが日々書いているプログラムの延長線上にないと思います。最初のうちはそうやって書くけど、それでは不揮発メモリを生かせないので、メモリを新しい概念で捉え直す必要があるのです。

     ここからはもう専門用語まぜて書いちゃいますけど、プログラムって起動するとメモリを確保して初期化してって、まっさらから始まります。その後、過去の情報が必要ならセーブしてあったファイルなどから呼び出して、昔の内部状態を再現していくわけです。また今時のセーブしなくてアプリだって、操作ごとになにかをセーブしていることでしょう。そして、プログラムが正常終了しようがクラッシュしようが終わってしまえば無に帰すわけです。

     しかし、そのメモリが不揮発となれば、あるべきプログラミングスタイルは、根本から変わります。

     今のプログラムは、その冒頭でメモリを確保したら、その内容はランダムか、0か、プログラマが指定したなにかの値かとかでした。

     でも、これからは違うんです。プログラムでメモリを確保したら、その中には、前回プログラムを走らせた時の最後の値が入っているという仕様に変更できるのです。

     ですから、プログラミング教本の冒頭には、 Hello world サンプルコードの次に、こんな感じのサンプルコードが紹介されることになるのです(エセc++。実際はコンバイルすらできません)。
    int i;
    void main() {
      cout << "今まで" << i << "回実行したよ。¥n";
      i++;
    }

    このソースだと真の初期化、つまり本当に最初に動かした時の動きがわかりませんが、なにかしらこれくらい簡便に、前回起動の情報が残っていることが前提の仕様になります。終わる時にいちいち変数 i の値をどこかに保存したり、開始した時にその保存した値をどこかに取りに行ったりなんて操作がなくても、昔の値がちゃんと入ってプログラムが始まるのです。

     ということは、今まではスレッド立てて、イベントくるのを待ってなんてプログラミングスタイルも変わります。イベントが発生したらプログラムが立ち上がって、処理したら終わっちゃうんです。

     PCの裏ではいろんなサービスがわんさか動いていますから、PCが重くなったら不要なサービスは消そうと言われますが、そんなサービスもすべてなくなるでしょう。リクエストがあるたび、プログラムが立ち上がり処理して終わる。ある意味昔ながらのやり方ですが、今それをすると、プログラムがまっさらから処理ができるようになるまでに大量の初期化が必要で時間がかかるようなものは、落とさずに待機させることで効率化しているのです。

     と、今はあらゆるものがメモリは消えるという大前提で組まれていて、そこが覆ると、まさにちゃぶ台ひっくり返しです。

     つまり、新しいシステムのコンセプトは言うのは簡単ですけど、まともに動かすには、OSも一体になって、プログラミング言語の仕様も根底から組み直していく必要があることでしょう。なにかしら飛躍的なアイデアがないと超えられない実装上の困難もあるかもしれません。

     しかし、メモリが不揮発になるということは、こういったことをしなければ、その真価を発揮することはできません。SSDの置き換えとして、SSDの代わりにメモリの上にファイルを書き込んで保存しましょうでは、メモリが不揮発になったことのインパクトの10分の1も使えていません。

     たとえばアプリはファイルの形でSSDなどにしまわれていますが、これからは不揮発メモリに乗せておけばいいわけで、ということはファイルの形である必要もありません。ファイルでもいいけど、効率悪すぎです。プログラムはそのまま走る形でメモリに蓄えられるでしょう。ファイルには再インストールするためのバックアップだけが残ることになります。

     一方で、この仕組みが確立すれば、プログラミングの生産性は格段に上がります。プログラムを書いているとき、プログラムがクラッシュすると、そのデバッグにとても手間取るのですが、不揮発ならどこでどうやってクラッシュしたかがわかりやすくなるし、そもそもクラッシュしないように踏ん張らせることもやりやすくなりそうです。

     エクセル落ちた〜〜〜、セーブし忘れてた〜〜〜、なんて悲劇がなくなるだけでなく、そもそもエクセルが落ちなくなるのです。

     どんな新しい言語やフレームワークが出てくるのか本当に楽しみです。

     ま、もっとも安直な発想はOSからなにからまるっとXMLデータベースにしてしまうことで、それであっさり解決するのかもしれませんが。


    《ワンポイントミライ》(

    ミライ: 言うの簡単ですけど、プログラムにバクがあってデータに整合性が取れなくなった時どうすんのとか、同じプログラムが複数走ったらどうすんのとか、ちょっと考えただけでも問題てんこ盛りじゃないですか?

    フツクロウ: ホッホッホ。