Subscribed unsubscribe Subscribe Subscribe

石橋秀仁(zerobase)書き散らす

まじめなブログは別にあります→ja.ishibashihideto.net

エンド・ユーザー・プログラミングが普及する文脈を考えるときには二種類の「プログラミング」を区別して語らなければならない

【概要】コンピューターの「世界」も「言葉」から成り立っています。コンピューターが出来ることを広げるためには、コンピューターに「言葉」を教える必要があります。それが「プログラミング」です。この意味での「プログラミング」は高度に専門的な作業であり続けるでしょう。

こんなツイートを見ました:

「プログラミング」には二種類あります。区別したほうがよいと思います。

if-then式のプログラミングは万人の活動になりうる

「家電のプログラミング」的なものは、いわゆる「if-then文」のプログラミング。「もし〇〇なら××せよ」という指令です。

この意味の「プログラミング」は、NUI(自然なユーザー・インターフェイス)による「教示」操作で済むようになるでしょう。例えば、Excelマクロの記録(レコーディング)のように、「やってみせて、覚えさせ、それを『再生』させる」という方法で「プログラミング」できるわけです。

例えば、洗濯機。いちど全手動モードで一連の操作をしたのち、その操作レコードに「名前をつけて保存」します。次からは、その名前だけで使える。つまり「モジュール」になります。これが初歩的なプログラミングです。

次に、そこから一歩進んで「if-then式のプログラミング」もできるでしょう。「もし〇〇なら」という条件を設定し、さきほど保存したモジュールを割り当てるだけですから。わりと簡単な操作で済むでしょう。

ここまでが「if-then式のプログラミング」の説明です。これはそれほど高度なプログラミング能力を要しません。万人の活動になっても不思議ではありません。

コンピューターに「言葉」を教える作業は高度に専門的

一方、オブジェクト指向設計や、ドメイン・モデリングと呼ばれるような「プログラミング」活動は、高度に専門的な作業です。高度に言語的・論理的な活動です。これはかなりの教育と訓練を要しますので、とてもじゃないですが万人の活動になるとは思えません。

コンピューターがどこまで進歩しても、このようなプログラミングの仕事は残るでしょう。もしコンピューター自身がプログラミングするようになったとしても。「世界」は言葉から成り立っているからです。誰かがコンピューターに新しい言葉を教えない限り、コンピューターの「世界」は広がりません。

「if-then式のプログラミング」の限界は、ここで決まっているのです。コンピューターが知らない「言葉」を使って「if-then」をプログラミングすることはできないのですから。

ここでいう「言葉」は、現代のプログラミング技術でいえば「クラス」などに対応します。「ドメイン・モデリング」とも呼ばれるプログラミング作業においては、ある概念を正確にプログラミング言語で表現することが、プログラミング活動の本質です。これは「ドメイン駆動設計」とも呼ばれます。コンピューターに問題領域(ドメイン)の知識を教える活動です。つまり、コンピューターに「言葉」を教えているわけです。

こうした、概念を表現するオブジェクト指向というパラダイムと、オブジェクト指向を用いてメンタルモデルをコンピュータの中に持ち込もうという発想がドメイン駆動設計の出発点となります。 — ドメイン駆動設計入門 - Digital Romanticism

いずれはコンピューターが地力で「言葉」を獲得するようになるのかもしれませんが(それはつまり「人工知能」ということですが)、それまでは後者の意味での「プログラミング」が無くなることはありえません。