Java EE勉強会

  • 6章と7章
  • timerの周期実行は直列実行の分、遅れていく
  • いろいろあるよ、ってことで
  • いたれりつくせり by koichikさん

GHC(Guarded Horn Clauses)by koichikさん

  • HaskellGHCじゃないよ
  • 第5世代コンピュータプロジェクトで開発されたKL1の基になったもの
  • Prologの特徴の一つが逐次性。GHCは並行処理のために逐次性を排除。選択した節が失敗した場合はやり直さない。ただこれだとどの節を選択するのかが重要になる。そこで導入されたのがガード。GHC=ガード付きのホーン節
  • ヘッド:-ガード|ボディ
  • ガードが真になる節のみが選択される
  • ガードの実行に必要な変数が具体化されるまでは待機
  • 海外で「エレガント」との評価
  • 個々の処理は内部で並行処理できなくてもパイプでつなぐとそれぞれが並行に実行
  • エラストテネスのふるいみたいにどんどん処理が増えていく場合だとわかりやすい。ただし、データ移動のコストのほうが大きいので、実際には高速化しない可能性大。クイックソートみたいに各処理の独立性が高ければ有効か?
  • 処理系としてはKL1からCへのトランスレータであるKLICがある。ただし逐次処理系
  • koichikさんがJava上の処理系を作るつもりだとのこと。処理速度は度外視して実際に並行処理を行うようにするとか
  • ガードを入れるだけでPrologじゃないガラッと違う言語になっちゃうのがおもしろい。ただ、Prologの柔軟性は失われちゃう
  • koichikさんの説明に出てきたパイプは、mapやモナドのイメージなのかなと思った
  • GHCの書き方自体は、出力側の変数を戻り値とみなせば事実上の関数型スタイルなのでそんなに違和感はない
  • GHCは「GHCをすごく速く動作させるハードウエア」があってはじめて意味があるものなので、そうしたハードウエアがこの世に存在しない以上、現世でのメリットはない