Prologは新世代のリテラシープログラミング言語になるのか

| Comments

computational-thiking, prolog

Island Life - 広義のプログラミング
このshiro氏の、プログラミングリテラシーに関する記事を読んでいて、 そういえば近しいテーマでかのウルフラムさんが論じていることを思い出した。

Programming with Natural Language Is Actually Going to Work « Wolfram Blog

この記事での主張を要約すると以下のようなものになる。

今後、自然言語で話しかけるようなプログラミングができるようになっていく傾向は加速する、 一方で従来のプログラミング言語も、より広く普及し使用される機会は増えていくだろう

ちなみにコメント欄では賛同にあふれかえっている。 やはり、プログラミングは今後も広く浸透していくこと、 一方でそれに合わせて機械とインタラクトする方法を大きく変えていく必要がある と考える人間は多いようだ。

これら記事を読んでいると、やっぱり、 「エージェントと対話をし回答を得るような能力」が、リテラシーになっていくのかな、 と誰しも思い浮かんできていることだと思う。Prologみたいな制約プログラミング言語を操る能力。

それでなのだが、さらに思い出したいことがあった。コンピューテーショナルシンキングという考えだ。

そもそもそれがどんなものか、何故重要化ということを、タイトルを語る前にまず知っておくほうが意図を理解 していただけると思う。 それを以前、僕はブログで紹介記事や概要を書いていたのだけど、その後日本において、予想していたよりも注目 されなかったため、あまりキャッチアップもしてこなかった。

流行っていない?のはマーケティングの観点から、さしておいしさがない、ということはあると思う。 売りつける商品、それっぽいソリューションを横流し導入するだけのコンサルティング、 そういったことのし易さがない。 ムーブメントには商業的な要素が必須だと言って遠からずなのであれば、 教育に関わるようなテーマはどうしても、その目的には結びつきにくい。だから流行らない。

Googleブログの記事にも過去に出てきてはいたものの、特にその後Googleの教育プロジェクトなどで リードコンセプトみたいな役割を得ている訳でもないようだ。実はもっと広範囲に注目されると思ってたんだけどなあ。

勿論その理由が、推進する人たち・ひいてはこの概念そもののにないわけでもない、ということもそれはそうだ。 当然、概念であることからひどく抽象的なことだし、 “そもそもコンピューテーショナルシンキングなんて何なのか”なんてことが、 ワークショップでもっとも盛り上がる議題であった、という現実がそれを表している。 そのころから状況は変わったんだろうか。

­ - -

そんなことを思いながら情報を漁っていたおり、こんな本を見つけた。

Amazon.com: Thinking as Computation: A First Course (9780262016995): Hector J. Levesque: Books

パズルや現実世界の問題を解くことを通じて、コンピューテーションの思考方法を学ぶことを目的としている。 対象は学部生、教養コースなので学部1,2年生と思われる。 情報科学先行者ではなくその他を専門とする学徒たち、それもプログラミングをまったく知らず、 数学に抵抗感さえあるような生徒たちだ。 そんな彼らでも、楽しく、コンピューターを用いて問題を解くことの基本的スキルの要請ができる、 そんなことを目指しているということらしい。

solving puzzles, understanding natural language, recognizing objects in visual scenes, planning courses of action, and playing strategic games.

上記のような例題が含まれており、従来の、 “データを集計・加工するプログラミングのスキル、アルゴリズムを用いて大量・高速な計算をするスキル” というより、「コンピューターを使って問題を解くとはどういうことなのか」 ということを身につけさせることを目的としている。 今時の実利主義な科学者や学生は既に危機感を持ってこのような能力の強化に勤しんでいるんじゃないのか と何も知らずに何となく想像していたが、次の記事をみる限りそれほどそうでもないようで、 ニーズは結構大きそうだ。

少しでも研究に興味がある人,面白いテーマを探している人は「研究に必要なたったN個の事」とかいう記事を読まずに今すぐに”How to do good research, get it published in SIGKDD and get it cited!”を読むべき - 糞ネット弁慶

彼らは概してコンピュータサイエンスに関する知識は乏しいので何がコンピュータにできるのかを知らない事が多い この本は、ここのぽっかり開いた穴を埋めるアシストをする、そういう目的に合致するものだと思う。 この本が持っている問題意識、強化したいスキルは、 まさに冒頭の紹介記事二つに出てくる、将来の専門家が必要とするスキルの片輪のように見える。

僕は研究どころか社会科学の調査系タスクにすらまともに取り組んだことはない、だから そんなんマセマティカで何年も前からやってる 、 やってるやつはperlやRを駆使してガリガリと集計・加工、モデル作りなりしてる、 いまどきRは既にリテラシーになりつつあるだろ という声はあるのかどうか、よく知らない。 prologを用いて、実際の研究のアシストができる!というイメージを持っているわけではまったくない。

それでも、なぜこのカリキュラムが制約型プログラミング言語である、 Prologを採択したのか、ということを考えることで、 将来のプログラミングリテラシーにイメージを得ることができるのではないかと思っている。

年々あがる一方の、コンピュータと対話する言語の抽象度、そしてファジイ度の向上が背景にあると思う。 Prologなど、まだまだプログラミングしてる感が満載の活動だけれど、 もっと進んだ先は、大雑把に言ってしまうと、” エージェントと対話する能力 “が 将来リテラシーとして求められるものになるだろう、と想像できる。 [fn:1]
その機械と対話する能力をより効率のよいものにしていくためには、 人間の言語も形式に近づく努力をしなければならないのかもしれない。 (機械・人間が双方歩み寄り、ともにLojbanのような言語を話すような日が来るんだろうか)

­ - -

脱線と言えるほど道が通ってないこの記事だけど少し脱線。 教育xプログラミングリテラシーというテーマで考えたとき、関連して思いだしたことが他にもあった、 以前Oazoにてぱらぱらと立ち読みしてい本にこんなのもある。

The Haskell Road to Logic, Maths and Programming (Texts in Computing): Kees Doets, Jan van Eijck: 9780954300692: Amazon.com: Books

すべてきちんと読んだ訳ではないけど、 「数学の証明の技法を、Haskellを通してまなぶ」 というコンセプトの本みたいだ。 このコンセプトにひっかかるものはないのだけど、 内容について見たとき、はっきり言って、おそろしくつまらなかった。(でも米Amazonレビューの評価は高い..)
論理式をベースにした証明ををボトムアップで書いていく、そんな演習が延々と続く。 高校生にとって数学的に興味をもたせるような面白そうな証明がいつまでたっても出てこない。 つまり記号操作の練習をhaskellでしているだけ、ということなのだ。 フィードバックがある分、それを紙でやるよりは学習効率がいいと思う、 でもそれとプログラミングの、数学の面白さが伝わることは違っている。

まあこれは置いといたとして、

  • Haskell(あるいはCoqとか)で証明を、
  • Prologeで科学の調査手法一般を
  • Rで統計学を

なんてカリキュラムが高校レベルで組まれる日は近いのかもしれない。 これらは伝統的な教育を置き換えるわけではなく、それら領域と実技を結びつけるもの、 問題に取り組むひとたちに新たな釣具をもたらすものだ。なんて言っちゃったりもするような。

[fn:1] 荒唐無稽なイメージとしては、イーガンの万物理論の**みたいな。 そこで主人公は声による命令だけで、○○の統計レポートを得ている。 があれは必要な形式がごく簡単なものではあるな..

Comments