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
© Copyright 2024 ExpyDoc