FLTV

なんか世紀のイベントっぽい感じだったので見学してきた。すごかった。

真っ黒Scheme

Schemeで書かれたSchemeにより、処理系を(かなり自由に)書き換えられるようにする。
部分評価(結果が不変の部分をコンパイルしておく)により、数倍〜数十倍の高速化が可能。
使い道が思いつかないので用途募集中とのこと。
SICP読書会を3年やってるのはすばらしい持続力。

ハードウェア記述言語について

SystemVerilogは言語仕様に乱数が入ってる。重みづけと周期が指定可能。解が存在する場合は必ず乱数の組を返すように処理系に求めている(!)。
SystemCはZ(ハイインピーダンス)とX(不定)が削られていてソフト寄り。検証系が充実している。
FPGA速いよという例としてOpenSPARCのSoraris起動時間 VCS:15年、FPGA:19分
Cynthesizer: SystemC→Verilog変換、Verilogを覚えなくていいのがメリットだが手間はかかるので生産性はVerilogと大差ない
reconfigurable processor: AOIテクノロジーは2007に解散、IPFlexは今年7月倒産(お疲れ様でした…)
未来の可能性として注目しているのはErlang(見た目がVerilogに近い)、Bluespec(商品化されてる)、AutoESL(Intel/Microsoftが注目)
ハードウェアと並列記述言語は親和性が高い、というのは当たり前ではあるのだが、並列記述言語で書くとある部分が自動的にハードウェアで実行されるような環境は割と近い将来でてきそう。

並列にうごかす何か

Molatomium=mol+atom
開発効率(開発現場はCしか書けない)と実行速度(C)と実行効率(軽いRuntime)の追求
汎用ヘテロ環境に対応(CellだけでなくGPUでも使用可能)
Mol…並列性記述言語、きもいC、Atomを制御・実行
Atom…性能を追求、nativeで記述
名前が良い。Ubigraphでの描画結果がかっこいい。

Haskell98以降の(大雑把な)進化

規格上はUnicodeが扱えるがCUIのI/Oが部分的に非対応になっている。Windowsのコンソールでcode page APIを使わずにlatin-1で適当に変換してたりとか。
既存のコードが大事なのでなかなか取り入れられない&規格化が遅い→Haskell 2010としてとりあえず規格化
commiterになりたければMicrosoftインターンGoogle Summer of Codeに参加すればよい(って普通のアプローチなのか?)
悲しいかな近所の本屋でHaskell本を探したが一冊もなかった。Amazonで買うことに。

未来言語Alloy

オブジェクト指向っぽい記法
制約条件を与えると(現実的な範囲で?)問題を解いてくれる
良い抽象化は単純化される。一方、抽象化がまずいと修正が複雑になる
設計を検証するのにも使えるらしいが、実際どんなもんなのか想像がつかない。

Dream C Club

pureな遊びについての強烈なプレゼン。
(言語についての)肝心の部分がさっぱりわからなかったが、マクロを使うとPrologでも手続き型言語風とか関数言語風に書けるよってことってことかな。

国に消される前に

効率化を追求することはつきつめると社会全体が高速化され、個人にとってはきつくなるだけであまり幸せではないかもしれないので高速化より好きなことを追求しようとかそういう話

豆タンクさんと豊作プログラミング

数行しか書いてなくて、プレゼンが未完成なのでみんなでプレゼンを完成させよう!という建前なのだが、色々調べて考え抜いたら無が残りました、というようなノリ。
文章で問題が与えられる→問題の理解→言語で記述という遷移において、プログラミングするという行為とは一体なんだろうとかプログラミング言語で本質的なものとは一体なんだろうかとかそういう話。
その場で「これいらないから消しますね」とかで修正するのが面白かった。

language transparancy

証明系(仕様記述言語)とマルチコア系(関数型言語とか並列記述言語とか)など問題領域毎に別々の概念が使われているが、未来においてはそれらは融合しているはず。実行環境に非依存な中間表現(例えばXML)になるのではないか。
どこでも実行できる中間表現….NET?

Luciferの設計コンセプトと導入予定の機能紹介

人間の能力の特性(同じものを見ても出力が違うとか)を考慮できるとよい
可視性に見合った操作性が必要(大量のデータに対して大量の入力を求めるのは良いI/Fではない)
神性(直交性)と魔性(現実性)のバランスが取れているのが良い言語、という表現がかっこいい。

C++Javaジェネリクスっぽい機能を入れる案

templateは汎用型の記述をするのがきつかったり罠があったり(特殊化とか)するので、もっと手軽な汎用型の記述方法があっても良いんじゃという話。ネットブックVMwareOCamlSDLが重すぎ&HDMIの受け口がないということで壇上では発表せず。
コンテナとどう違うのか自分では消化できず。

レトリカル・プログラミング

自然言語にある優れた機能を取り込む話。
路上実演販売のように滑らかかつ納得させられる素晴らしいプレゼン。

その他

言語の未来についてということで自分の妄想も何となく考えていたのだけど、言語というよりは実行環境でlanguage transparancyの発表が一番近い感じかなと思った。

  • 妄想1 半導体のコストが限りなくゼロに近づく
  • 妄想2 莫大なトランジスタが稼動するため(割合としては小さいが絶対値としては)無視できないエラーが発生
  • 妄想3 エラーが許容される処理(画面への表示とか)と許容されない処理(お金の計算とか)とが分離される
  • 妄想4 エラーや処理時間の不確定性を見越して1つのクエリーが複数の環境で実行される
  • 妄想5 保持データ種別、実行・入出力可能内容、制御方法、距離、CPUパワー、消費電力などのパラメータが標準化
  • 妄想6 実行結果(確度、エラーレート、条件など)の中間形式、実行結果をマージするための処理方法が標準化

まあ妄想なんだけどあやふやなクエリーがそれなりに(あやふやな感じで)未確定のまま何となく処理できる処理系ってのはでてきそうな気がしないでもない。