第53回プログラミング・シンポジウム 2日目

朝食をしっかりとって、早速会場へ。

セッション3

  • FPGA向け高位合成言語としてのJavaの活用手法の検討」
    • HDLを記述できるJavaのサブセット「JavaRock」。なんだか魔法のように思える。
    • 高位合成言語としてみたJava(スライドより抜粋)
      • クラスによるオブジェクト指向設計 : HWのモジュール設計との親和性が高そう
      • Threadやwait-forの仕組みがある : 言語仕様内で並列性の記述ができそう
      • 明示的なポインタを扱う必要がない : 言語の想定するメモリ構造から自由になれそう
      • 動的な振る舞いがたくさんある : ハードウェア化するのは厄介そう
  • 「Continuation based C の GCC 4.6 上の実装について」

セッション4

  • 「Backwards-Compatible, Efficient and Precise Datarace Detection for Multi-Threaded C Program」
    • オブジェクト共有におけるスレッドセーフとか・・・うーん、どうすれば問題が回避できるのかっていうのがちゃんとわかってないっぽい、私が。
  • 「CUDA将棋:GPGPUによる並列ゲーム木探索」
    • 「インターネット上で気になっている人がいるようなのでハッシュタグつけてどんどんつぶやいて下さい」と言われたのでフル稼働でtsudaり続けていました。
      • GPGPUについての説明、それからその応用(モンテカルロ問題など)。今回は並列ゲーム木探索に挑戦してみた。その報告でもある」
      • 「メカウーサーというコンピュータ将棋の大会に出場するも、弱い。将棋プログラムはalpha-beta(木の階層が自分と相手交互に現れる。それぞれのノードには評価値が付与。)探索を基準としており、次の着手を決めているものが多い。
      • 「alpha-beta探索によって自分と相手が最善を尽くした結果を知ることができるわけであるが、その値を計算するにあたって必要ない部分計算を枝刈る(beta cutoff)。この研究ではゲーム木を部分木に分解して並列に探索するYBWCをGPGPUで実装してみる。
      • 「並列とはいっても同期ポイントというものが存在していて、それぞれのノードにタイプが設定されており、各タイプには探索可能であるための制限が設定されている。このあたり文章だけだとうまくイメージできない…プロセッサ群全体に部分問題を行き渡す感じらしい。
      • 「プロセッサ間でやりとりするメッセージ群の紹介。計算を中止するとか、枝刈りとか。これによって計算の効率化をはかることができる。
      • 「将棋の前に小問題としてHexと呼ばれるゲームを実装してみた。Hexと将棋との違いは、可能手生成、評価関数など。CUDA将棋に向けて、並列可能手生成の実装や評価関数の並列実装、スピードアップなどが課題となる。
      • 「おまけ:人工無能メカウーサー @mechawooser

P社の @delta2323_ さまにお声かけいただきながら、昼食。

特別講演

  • 「ハッカーと医療」
    • 非常に面白かったのですが、どこまで書いていいのかよくわからない。
    • 私とか、多分会場では、「医療とハッカー」って言うと、「あぁ、情報科学の力を使って医療を支える話なんだな」って思うんだろうけど、確かに世間一般だと、「え…やっぱり医療現場にもハッカー(正確にはクラッカー)の魔の手が…?」とか思われるんだろうな。(twitter引用)

@sinya8282 さんに正規表現でSATを解くというところを説明してもらった。面白い。

セッション5

  • 「デュアルスタック電卓のプログラミング技法
  • 「デバッギングのためのベンチマークプログラム」
    • デバッグベンチマークする。独自のプログラムのデバッグ過程の提示では、恣意的で共通の比較基盤となりにくい。バグデータベースからの実例では、対象が複雑すぎるし、手法適用が困難。
    • そもそもバグってのは色々あって、ソースコードの「誤り」とその誤りにより動的に引き起こされる「発現」と。しかもそれらはm対n対応。
    • まずバグの出る状況を再現することが大事。それからそのための小さなプログラムを作って、仮説へと進んでいく。

トイレから帰ってきたら、周囲からパソコンのシールについて話しかけていただきました。こういうのは嬉しいですね。どうも多田Labシールを貼ったらという提案でしたが、残念ながらご本人は持参しておらずでした。

セッション6

  • 「soyText - プログラムとデータを一緒に同期してどこでも動くWebアプリケーションフレームワーク
    • 授業では、プログラミングと関係のないところで時間をとられてしまう。そこで環境をWeb上に用意。プログラム共有や指導者の環境セットアップの容易さがある。
    • しかし危険なコードを書かれてしまうことや、学習結果の分散という問題点もある。もっと安全・安心でありたい。
    • システムの「オフライン版」をダウンロード可能。オフライン版での変更点をWebサーバに反映可能。
  • 「文脈によるプログラミング言語処理系によるDSL基盤の試作」

夕食・風呂

女性の方、山口さんとお話できた!しかもどうやらICPC福岡にいらしていたらしい・・・!なんと!

夜セッション

  • 「実学としてのプログラミング」
    • 若手社会人の方々によるパネルセッションです。大学で学ぶ情報科学は、実際に仕事にどう関わっていくのか。
    • 私が最も印象に残った言葉「学部生は、勉強したことなんて、試験が終われば忘れちゃう。でもそれでいいんです。何か用語を聞いたときに、驚かないこと、それが大事。誰かに聞けばわかりそうだ、それでいい。四年間でそんな、わかるわけないんだから。」

自由討論

宴会ですね。まったりですけど。

確か @miyox さんに「twitterに書いてたMAX/Cって何ですか?」と聞いていただいて、MAX/Cのデモをしました。

MAX/Cは、当学科の学部一年生唯一のプログラミング実習で、C言語を学習します。毎回用意された問題を解くのですが、まぁローカルでプログラムを作ってもらって、それをブラウザからアップロードしてもらって自動採点(というか正誤判定)を行います。授業で用いているもので、最初は先生たちが作成したもので、現在は保守や改善をうちの研究室でやっていたりする感じですね。

これを勝手に紹介してきたわけです。VPN接続して。それから、問題生成や判定時の解析などの仕組みをわかる範囲で説明しました。正直、いつも「いやぁ授業で使ってるものですしどこまで外に出していいのか」とか言ってたんですが、なんかもうどうでもよくな・・・いや、なんかもうこれは外へ見せていった方がいいなって。知ってもらいたい、って。

明星大学の長先生という方が興味を持って下さり、お互いの大学の情報科学分野の教育についてたくさんお話しました。今日発表されていましたしぜひお話したいと思っていたので嬉しかったです。このとき、情報処理学会のコンピュータと教育研究会で発表しませんかと誘っていただきました。また先生に相談してみようっと。

あとは @_ko1 さんや @hayamiz さんと、研究についてのモヤモヤを・・・はい。気にせずやれよってのも、あるみたいですが。長先生は、「教育の研究での評価は、定量的じゃなくて、定性的です。たくさんの例があって、たくさんの結果がある。そこから考察していくんです。」とおっしゃっていた。・・・そうですよね。

また和田先生のお話を聞いてから、片付けして、眠りました。