ひつじのにっき

mhidakaのにっきです。たまに長文、気が向いたとき更新。

【12-C-2】未来へつながる言語〜ある言語おたくの視点から

【12-C-2】未来へつながる言語〜ある言語おたくの視点から
まつもとゆきひろさん。


次に来る言語は関数型言語の影響を受けるのでは?
と触発されたので(私の)やる気があるうちに勉強しておきたい!

12-C-2 未来へつながる言語 〜ある言語おたくの視点から〜 まつもとゆきひろ
※トーカー注意:実務に役立たない話です。(会場笑い)

◆まつもとゆきひろ自己紹介
 鳥取県米子市
 高校からプログラミング。Basicに限界を感じてパスカルの書籍を購入。
 ただし、実行環境が無くて本を読んで理解したつもりになった。

 そのときは本屋とマイコン誌が唯一の情報の入手手段
 パスカルLispに出会うことでプログラミングの世界が広がる

 自分で言語を作ったきっかけは
 「誰かがつくったのなら自分で言語つくれるのでは?」が最初の発想
 
◆プログラミング言語の流れ
 Q.世界最初の言語は?
  1954年 FORTRAN…のまえに
  1948 Plankalkul
  
 Plankalkul
  ドイツ。コンラッド・ツーゼ。
  制御構造がある。例外処理まである!
  ただし、仕様が複雑すぎて実装できなかった
  ⇒ 2001年で初めて実装された(会場笑い)

◆初期の言語
  FORTRAN数値計算に特化
  COBOL  :レコード・汎用機・オフコン
  LISP   :(前置き無くひとこと)不滅です。(会場笑い)
           人工知能・大学や研究機関で利用

  ⇒ プログラミング言語は寿命が非常に長いことがわかる★

◆システム言語
 BLISS/C/C++

◆現代的言語
 C/C++
 Java
 Perl/Python/Ruby (←PHPはわざと入れてないよ)

◆数多くのプログラミング言語の陰にロストテクノロジーが存在する
 言語の進化要因は以下の4つ
 1.簡潔さ:簡潔さは力なり
  いろんなプログラミング言語がでてきたが環境に適応できた言語のみが残存。
  ポール・グレアム:昔の言語に比べて今の言語はパワーがある。抽象化が簡潔さ。

  「人月の神話」よりBrooksの法則
  あるプログラマが生産できる行数はプログラミング言語によらず一定である。★面白い
  たとえば500行書く手間は一緒である。
  → プログラミング言語を変えることで、より生産性が高くなることを示唆

 2.新パラダイム
  ・構造型プログラミング
  ・オブジェクト志向。
   データと手続きをオブジェクトとして一体化
    → 2000年以降の言語はほぼ例外なく搭載しているメインストリーム
  ・論理プログラミング
   Prolog等。
  ・関数型プログラミング★
   最近のホットトピック。より間違いのない宣言的なプログラムをかけるのでは?と期待

 3.外的要因
  ・マシンコストや人件費
   コンピュータが高かった頃、コンピュータにプログラムを入れる前に
   机 上デバッグしてた時代があったが、いまはそんなことはしていない
    →コンピュータをつかってアシストされている
  ・ソフトウェア開発費
    いかに生産性を高くするかが重要に
  ・ハードウェア
    ムーアの法則は、そろそろ物理的な限界に。熱の問題も。
    マルチコア/メニーコアでの性能向上が計られる。
     → ソフトウェア側の支援が必要になる★ただ乗りは終わり。

 4.温故知新
  たとえばJavaの特徴
    VMGC、例外 これらは古くからあった技術。
    化粧直しをして再紹介されたに過ぎないが時代が進んで受け入れた

◆言語進化のパターン
 パターンは次の3ステップ★
 冒険:新たなアイディア・
 改良:洗練、一部で受け入れられる
 普及:普通の人が使える技術、広く受け入れられる

 例
  冒険:Simula シミュレーションベースのオブジェクト志向
  改良:Smalltalk,
  普及:Ruby Java
  
◆今流行の言語
 Java,RubyHaskellErlang

◆これから来る言語
 RubyHaskellErlang
 HaskellErlangといった関数型言語の影響を受けると予想★
  → 並列プログラミングと相性がいい。
 
◆例えばAPL
 だれのアンテナにもかかっていないものの中で、
 次に来る言語として予想

 特徴
  ベクトル演算(行列配列演算)
 
 省略前の名前はA Programming Langage
  実は考案当初は「読めない、書けない、特殊な文字が多すぎる」という難点があった。
  専用の端末が必要だったぐらいで普及しなかった。
  → 最近、Unicodeで入力できるようになったので入力はできるよ。

 APL以外ではK/Jといった言語もでてきている

 APLの概念を普通のプログラミング言語に入れることで普及するかもしれない。
 →「R」言語といったものもある