PowerPoint プレゼンテーション

Programming2.0
ユーザ指向のプログラミング
安村通晃
慶應義塾大学 SFC2.0
インタラクションデザインラボ
2006. 9. 4
情報処理学会 夏のシンポジウム
「夢をかけるプログラミング〜世代を超えて・夢の再発見」
あらすじ
現状:使いにくいプログラミング言語&面倒なプ
ログラミング
 そもそもプログラミングは必要か?
 これから:構文指向から意味指向へ
 意味指向プログラミング言語の実現に向けて
 関連研究
 今後の方向性

さまざまな2.0
SFC1.0
SFC2.0
Web1.0
Web2.0
Porgramming1.0
Programming2.0
Human Interface1.0
Human Interface2.0
Lisp1.0 → Lisp1.5
Lisp1.9 → (lisp2.0?)
はじめに: 中島敦「名人伝」
趙の都邯鄲に住む紀昌という男、弓の名人にな
るため、名人飛衛から学び修行を積んだ。
 最初は瞬きをしない練習、次に「視る」練習。
これを5年間続けて奥伝を伝授された。これに
よって、百発百中の弓の名人となった。
 さらに蘊奥を極めるために老師甘蠅師の元で修
行を9年間積み「不射の射」の技を得た。
 それから40年近くたった死ぬ1、2年前のこ
と、名人紀昌はある道具を見せられたが、それ
がもはや弓だとは気がつかなかった。

自己紹介

学生時代(学部)


大学院時代



ミニコン用アセンブラを開発。
Pascal処理系開発、Pascal等の言語処理系に興味。
メーカー研究所時代




単なるユーザー。Fortranなどを授業の実習で学ぶ。
内蔵アレイプロセッサのFortranコンパイラ開発。
スーパーコンピュータ用ベクトルコンパイラ開発。
Lisp処理系とLispコンパイラ開発。
大学に移って後

主として、教育と研究に専念。
研究の背景
今のプログラミングは、専門家が頑張って行な
わなければならない。
 面倒で時間がかかる。
 エラーがあるとシステムから叱られる。
 多くの人工物は「ヒューマンインタフェース」
の進展により、ユーザにとって使い易く、分か
り易いものに変わってきた。

プログラミングの夢

かつての”Automatic Programming”


コンパイラを用いた高水準言語のこと
これを越えるプログラミング上の発明はない(?)
プログラミング言語のポリシー
~全体主義言語と無政府主義言語

全体主義言語




強い型付け
宣言が必須
(例): Pascal, Java, XML
無政府主義言語



動的型付け
宣言はなくて良い
(例): Lisp, HTML
人間と機械の違い
「人間の特性 8箇条」(高橋秀俊)
人間は気まぐれである
 人間はなまけものである
 人間は不注意である
 人間は根気がない
 人間は単調を嫌う
 人間はのろまである
 人間は論理的思考力が弱い
 人間は何をするかわからない

現在の多くのプログラミング言語
構文指向
 厳密:細かいエラーも許さない
 約束事が多い
 記憶再生型
 認知的負荷が高い
 「直接操作」的ではない --- 結果がすぐに反映
しない

人間の特性
意味指向
 曖昧性を許容、解釈の自由性
 インタラクティブ
 メニュー駆動型
 人間同士の会話ではある程度の意味を拾うこと
ができるし、誤りも許容。

ヒューマンインタフェースの世界
とっくに「ユーザ指向」
 基本的な考え:「使えないとすれば、ユーザでは
なくシステムの問題」
 ユーザの主体性
 見えないものを可視化(GUI方式)
 直接操作性:操作対象が画面上に表示されており、
その変化、結果が直ちに表示される。
 記憶の再生ではなくメニューによる再認がベース

プログラミングになる/ならない?
料理のレセピー
 数学の証明
 作曲
 脚本や台本の制作
 建築の設計
 街づくりのデザイン
 人生設計
 旅行の計画
 ロボットに指示
 犬の訓練と指示
 Google で検索?

料理は誰でもできるのはなぜか?
具体物が対象。
 結果がすぐ分かる(味は別)。
 料理のレセピーはどこまで指定しているのか?
 基本的なことは知っている必要がある。




包丁の使い方。
煮物や焼き物の仕方。
味付けの基本。
設計と実行が分かれているもの
と分かれてないもの

分離





演劇
音楽
建築
プログラム
一体


絵画
彫刻
プログラミングは必要か?
プロのプログラミング --- 必須&高度な訓練を
伴う
 素人のプログラミング --- 今後必要性が高まる
 理由:





ユビキタスコンピューティングの浸透
家電機器等のアプライアンスの複雑化
インターネット利用の高度化
ホビー(日曜大工的)なプログラミング
2つのアプローチ(従来 vs これから)

きちょうめんプログラミング

いいかげんプログラミング

Syntactic Programming
Logical Programming
Rigid Programming
Master Programming
Negative Programming
Individual Programming
Closed Programming
Stingy Programming
ケチプログラミング

Semantic Programming
Cognitive Programming
Sloppy Programming
Maid Programming
Positive Programming
Social Programming
Open Programming
Generous Programming
太っ腹プログラミング
















提案:
Generous Programming
いい加減プログラミング
↓
いい加減に書いても動く
実現と基本設計に向けて
コンパイラ(言語処理系)が頑張る
 常識を持ち、ある程度の推論を行なう
 分からないときは、ユーザ(プログラマ)に聞く
 とりあえず(常に)実行結果を出す
 インタラクティブに動く
 曖昧さを許す
 検索機能をもつ
 「エラ−」という言葉は使わない。

関連研究
マインドストーム --- Visual Programming
 びすけっと --- Visual Programming+制約指向
 さっと英作 --- 自由英作文の添削
 HTML --- とりあえず結果は出る
 その他

今後の展開〜将来の可能性
(夢)
Generous Programming システムの設計と実装
 プログラム検索と異種プログラム組合せ法の検討
 OJTで学ぶロボットの設計と試作

Programming2.0における限界
新しい概念の取得
 プログラマが知らない概念を用いたプログラミ
ング
 専門家向きのプログラミングは対象外

まとめ
現状の構文中心の厳密さをベースにしたプログ
ラミングから、意味中心の融通の効く新たなプ
ログラミングスタイルProgramming2.0を提唱
 Programming2.0の持つべき要件を整理
 Programming2.0の将来の可能性と限界を提示

参考文献






原田康徳, 加藤美由紀, Richard Potter, Viscuit: 柔軟
な動作をするビジュアル言語, WISS2003.
西村則久, 明関賢太郎, 安村通晃, 英作文における自動添
削システムの構築と評価, 情報処理学会論文誌, Vol.40,
No.12, 1999.
高橋秀俊, ヒューマン・ファクターと信頼度, コンピュー
タにおけるヒューマン・インターフェースシンポジウム報
告集, 1983.
江渡浩一郎, なぜそんなにもWikiは重要なのか, 私信,
2006.
Beck, K., Cunningham, W., Using pattern languages for
Object-Oriented Programs, OOPSLA-87.
中島敦, 名人伝, ちくま文庫, 1992.
http://www.aozora.gr.jp/cards/000119/files/620_14533.html