Table of Contents

1 計算論的思考

計算論的思考

Computational Thinkingとは何か - 小さなごちそう http://tannomizuki.hatenablog.com/entry/2016/10/18/125818

2 計算論的思考のまとめ

Jeannette M.Wing: Computational Thinking, COMM.ACM, Vol.49,No.3,pp33-35, Mar.2006

Computational Thinking 情報処理 Vol.56 No.6 June 2015 翻訳

ニュアンスとしては,「情報処理的思考」が近いとの,訳者の弁。

2.1 このエッセイの目的

すべての人が学びたい,そして使いたい,と考えるに違いない 一般的な態度とスキルに関するものである.

2.2 計算論的思考

は計算プロセスの能力と限界の上に成立しているもので,

計算の主体が人間であるか機械であるかは問わない.

2.3 計算手法と計算モデル

は,我々個人が単独では決して達成できないであろう問題を解決したリ,

システムをデザインしたりする勇気を与えてくれる.

2.4 計算論的思考は機械知能の謎に挑む:

  • 人間がコンピュータより優れているのは何か?
  • コンピュータが人間より優れているのは何か?
  • 何が計算可能か? さらに最も根本的な問題

これらの問いに対して,我々はまだ部分的な回答しか知らない.

2.5 計算論的思考は,すべての人にとって基本的な技術である.

すべての子供の分析的思考能力として, 「読み,書き,そろばん(算術)」のほかに計算論的思考を加えるべき である.

コンピュータ科学 (理論)と計算装置が計算論的思考を普及させる

2.6 計算論的思考は

基本的なコンピュータ科学の概念に基づき,

  • 問題解決,
  • システムのデザイン,
  • 人間の理解などをおこなう

そして,コンピュータ科学の広がりを反映したさまざまな思考の道具も含 まれる.

2.6.1 特定の問題解決には,

  • どれくらい難しいか?
  • 最善の解決の道筋は何か?

などを考える.

2.6.2 コンピュータ科学

はこれらの問いに正確に答えるための確固とした理論の上に構築されてい る.

  1. 問題の難しさを述べるためには
    • その土台となる機械̶問題の解決策を探る計算装置─の能力を知らねばならない.
    • 機械の命令セット,計算資源の制約,動作環境などを考慮しなければな らない.
  2. 問題を効率良く解くためには

    次のことを考慮せねばならない.

    • 近似解で良いのか,
    • 乱数化をうまく利用できるのか,
    • また解の判定に偽陽性や偽陰性が許されるのか,

2.7 計算論的思考は一見難しそうな問題を我々がすでに解き方を知っている問題に変換する.

これには簡略化,埋込,変換,シミュレーションなどが使えるだろう.

2.8 計算論的思考とは

  • 再帰的に考えることであり,
  • 並列処理であり,
  • 命令をデータとし,
  • データを命令とする

ことである.

  • それは次元解析の一般化としての型検査である.
  • それは人やモノに2つ以上の名前を付けること(エーリアシング)の利 便性と危険性を理解することである.

それは間接アドレスや手続き呼出しのコストと威力を認識することである.

それはプログラムを正しさと効率からだけではなく,美学的基準や,シス テムデザインの単純さと洗練度からも判断することである.

2.9 計算論的思考とは抽象化と分割統治を用いることである.

問題点の分割である.

  • 巨大で複雑なタスクに挑戦したり,
  • 巨大で複雑なシステムをデザインしたりするときに,

問題の適切な表現法を選ぶことであり,問題を解きやすくするため に問題の適切な側面だけをモデル化することである.

不変項を見つけてシステムの振舞いを簡潔かつ宣言的に記述することであ る.

すべての細部にわたり理解することなく巨大複雑系を使いこなし,変更し, 影響を与えることが自信を持ってできることである.

複数のユーザに備えてサブシステムをモジュール化したり,

将来の利用に備えてデータをプリフェッチしたりキャッシュしたりするこ とである.

2.10 計算論的思考とは予防,防御,そして最悪のシナリオからの復帰という観点を持ち,

そのために冗長性,故障封じ込め,誤り訂正などを用いることである.

それはグリッドロック(超渋滞),デッドロックを判定し,コントラクトインタフェースを 起動することである.

それは会議を設定するときに競合条件の回避を行うことを学ぶことである.

2.11 計算論的思考はヒューリスティックな推論により解を発見することである.

  • それは不確定な状況でのプランニング,学習,スケジューリングのことである.
  • それは探索して,探索して,そしてさらに探索してWebペー

ジのリストや,ゲームに勝つ戦略や,あるいは反例を見つけることである.

2.12 計算論的思考は超大量のデータを使って計算を高速化することである.

  • それは時間と空間のトレードオフ,あるいは計算パワーと記憶容量のト レードオフをすることである.

    以下のような日常の例を考えてみよう:

    あなたの娘さんが朝学校に行くとき,その日必要なものをカバンに詰め る─これはプリフェッチとキャッシュである.

    あなたの息子さんが手袋を失くしたとき,来た道を逆戻りすることを勧 める─これはバックトラックである.

    どの時点でスキーのレンタルを止めて自分用のを買うか?─これはオン ラインアルゴリズムである.

    スーパーマーケットのレジでどの列に並ぶだろうか?─これはマルチサー バシステムの効率モデリングである.

    あなたの電話はどうして停電中も通じるのか?─これは故障からの隔離 であり,デザインの冗長性である.

    完全自動チューリングテストはどのようにしてコンピュータと人間を見 分けるのだろうか,あるいは人間を認証するのだろうか?─これはAIの 解決困難な課題を利用して計算エージェントに箔を付けることである.

    アルゴリズムや前提条件といった用語が人々の日常的語彙となり,非決 定性やゴミ集めの意味がコンピュータ科学者の使うものに変化し,木が 上下逆に描かれるようになったとき,計算論的思考は生活の必須要素と なる.

2.13 私たちは計算論的思考が他の研究領域に与える影響を目撃してきた.

2.13.1 たとえば,機械学習は統計学を変えた.

統計的学習は,ほんの数年前には 考えられなかったような,データ量と次元の巨大な問題に適用された.す べての組織の統計部門はコンピュータ科学者を採用し始めた.コンピュー タ科学の学部では統計学科をすでに擁立していない場合には,新しく設立 している.コンピュータ科学者の生物学に対する最近の興味は,生物学者 が計算論的思考から恩恵を受けると信じていることに後押しされている. コンピュータ科学者の生物学に対する貢献は,単に大量のゲノムシーケン スデータから特定のパターンを見つけ出すことにとどまらない.データ構 造とアルゴリズムという,我々の持つ計算的抽象化と方法論が,タンパク 質の構造を,構造から機能が明らかになるような形で表現できることが期 待されている.

2.13.2 計算生物学は生物学者の思考法を変えつつある.

2.13.3 同様に,計算ゲーム理論は経済学者の思考法を,ナノコンピューティングは化学者の思考法を,そして量子計算は物理学者の思考法をそれぞれ変えつつある

このような思考法は他分野の科学者だけでなくすべての人に必要な技量の1 つである.ユビキタスコンピューティングが今日にもたらした影響と同様 のものを,計算論的思考が明日にもたらす.ユビキタスコンピューティン グは昨日の夢が今日の現実となったものであり,計算論的思考は明日の現 実である.

<コンピュータ科学者のように考えるということは,コンピュータをプロ グラムできるということ以上の意味を持つ.複数のレベルの抽象思考が必 要である>

2.14 それは何であり,何でないか

コンピュータ科学とは計算に関する,すなわち計算可能性と計算方式の, 学問である.

したがって計算論的思考は以下の特徴を持つ:

─ 概念化のことであり,プログラミングではない.コンピュータ科学とい うのはコンピュータをプログラムすることではない.コンピュータ科学 者のように考えるということは,コンピュータをプログラムできるとい うこと以上のものである.それは複数の抽象レベルで考えることを要求 する.

─ 基礎的な技能であり,機械的なものではない.

この基礎的な技能は,現代社会で活動するためにすべての人が知らねば ならないものである.機械的というのはルーチンワークのことである. 皮肉なことに,コンピュータが人間のように考えるというAIのグランド チャレンジをコンピュータ科学が解決するまでは,思考は機械的である.

─ 人間の思考法のことであり,コンピュータのそれではない.

計算論的思考は人間の問題解決法であり,人間がコンピュータのように 考えることを目指すものではない.コンピュータは単調で退屈であるが, 人間は賢くて想像力豊かである.人間がコンピュータを刺激的なものに する.コンピュータという計算装置を持つことにより,我々は計算の時 代以前には挑戦できなかったような問題を解くのに自らの叡智を使うこ とができ,新しいシステムを構築することができる.限界は我々の想像 力だけである.

─ 数学的思考と工学的思考を組み合わせ,補完することである.

コンピュータ科学は本質的に数学的思考の上に成立している.

そのため,すべての科学同様,コンピュータ科学の形式的基礎は数学に ある.

コンピュータ科学は,実世界と相互作用するシステムを構築する場合, 本質的に工学的思考の上に成立している.

それらを司る計算装置の制約が,コンピュータ科学者に数学的だけでは なく計算論的な思考を要求する.仮想世界を自由に構築できるため,物 理世界の制約を超えたシステムの構成が可能である.

─ 概念であり,モノではない.

我々が創造するものは単なるソフトウェアやハードウェアという,物理 的にどこにでも存在し,いつでも触れることのできるモノではなく,問 題に迫り解決するための計算論的な概念で,我々の日常生活を助け,他 の人々とコミュニケーションをとり交流するためのものである;そして

─ それは,すべての人にどこでも.計算論的思考は,人間の努力と一体化 してしたときに現実となり,明示的に哲学する必要性は消えてしまう.

多くの人がコンピュータ科学をコンピュータのプログラミングのことだと思っ ている.

コンピュータ科学を専門とする子供たちの就職先の可能性を狭く捉え る親がいる.

またコンピュータ科学の基礎的研究は完了していて技術的問題だ けが残っていると,多くの人が考えている.

計算論的思考は,この分野に対する社会通念を変えようとするコンピュータ科 学の教育者,研究者,そして実務家を導く主要な観点である.特に,大学入学 前の学生とその教師や親たちを含む人々に対し,以下の2つのメッセージを送 る必要がある:

─ 知的に挑戦的で魅力的な科学的問題が多く残されている.問題領域と解決 策領域を限定しているのは我々の好奇心と創造性だけである;そして

─ コンピュータ科学を専攻した学生は何を専門にしてもよい.英語や数学を 専攻した学生は異なる分野で複数のキャリアを追求しているではないか.

コンピュータ科学もしかり.コンピュータ科学を専攻した後に医学,法律, 経営,政治,そしてあらゆる種類の科学や工学,さらには芸術の分野に進 むことができる.

2.15 計算論的思考は誰のために

コンピュータ科学の教授は「コンピュータ科学者のように考える方法」と 名付けた科目を,大学の新入生に教えるべきである.

そしてそれはコンピュータ科学専門の学生だけでなく他学科の学生たちに も開放すべきである.

大学以前の学生にも計算手法やモデルに触れる機会を作るべきである.

コンピュータ科学に不満を述べたり,それに対する興味を否定するのでは なく,あるいはコンピュータ科学の研究費を却下したりしないで,一般の 人々の興味をこの分野の知的冒険へと導くべきである.

そのようにしてコンピュータ科学の喜び,恐怖,威力を広め,計算論的思 考を一般的なものにしたい.

Author: m

Created: 2018-12-09 日 07:18

Validate