21世紀のプログラミング言語研究

2000年ごろから始めてみたい研究テーマとして、 思いついたものを並べてみました。

背景

2010年ころまでにほぼ確実に実現しそうなことについて確認しておく。 また、プログラミング言語関係では、次のことが予測できる。 このような背景から、次のような研究テーマを考えてみた。

21世紀のプログラミング言語(および開発環境)

プログラミングパラダイムは、手続き型言語をベースとするオブジェクト指向言語で ほぼ決まりだが、大規模なソフトウエア開発を支援するツールや、 構造エディタに基づいた開発環境が必要である。

プログラマーは、趣味のプログラマーから、プロのプログラマーまで 階層構造をなす。それぞれの階層に応じて、生産性を高める開発環境を構築する 必要がある。

教育用プログラミング言語

全小学生を対象とする。

プログラミング言語に関する、以下の基本事項を理解させる。

かつての教育言語(BASIC, LOGO)では、1番目は対象とするが、 2、3番目まで教育の対象とする教育用言語はない。 さらに、GUI とマルチメディアに対応した新しい教育用言語が必要である。

この言語は、以下の特徴を持つ。

きっどぴくす的に、簡単なプログラムが書けるようにする。 また、中学校以降に習う実用的なプログラミング言語へも、 できるかぎりスムーズに移行できるようにする。

一般人向けスクリプト言語

10世帯に1人ぐらい存在するようになる、趣味のプログラマーを対象とする。

プログラミングの目的は、次のようなものになるだろう。

例えば、「家庭用ビデオカメラで撮影されたテープの中から、 特定の人物2人が会話している場面を選んで編集する」など。

ここでも、ペン入力、アイコンによるプログラミングを基本とする。 fool proof に徹した知的なライブラリなどを用意する。

職業プログラマー向けプログラミング言語

普通の職業プログラマーを対象とする。

現在のプログラミング言語と違って、以下の特徴を持つ。

また、すでによく言われているが、 大規模プログラミングのサポート、再利用のサポート、 仕様記述とプログラムとドキュメントの一体化、 可視化等によるデバッグのサポートなども 重要である。が、テーマとして新鮮さに欠ける。

スーパープログラマーのサポート

100万人に1人程度いる優秀なプログラマーをサポートする開発環境。 1億〜10億円くらいの装置で、 スーパープログラマーの生産性をさらに10倍〜100倍に高めることを目的とする。 (ひと昔前のスーパーコンピュータの値段と同程度であり、 必要ならば大企業が買える金額である。)

基本技術は、「普通のプログラマー向け」と同じだが、 高額なインターフェースを用意する点と、優秀なプログラマー向けに カスタマイズされている点が異なる。

ハッカーの研究

上記「スーパープログラマーのサポート」とも関係するが、 非常に優れたプログラマーの秘密をときあかしたい。 応用例として、ハッカーの能力のさらなる向上がある。 ハッカーは、プログラミングスタイルのどこかに欠点があったとしても、 他の能力でカバーされ人並以上の成果を出せるため、 その欠点に気づきにくい。 その欠点を客観的に見つけ、修復することで、生産性をより向上させることが できるはずである。

その他、普通のプログラミング言語の研究

一般人うけはしないが、やりたい研究テーマは、他にもある。

プログラミング言語の部品化

(「さきがけ研究21」の研究テーマ。今後3年ほどやる予定。)
コンパイラと runtime system のすべてを部品化した プログラミング言語の設計・実装を行なう。 これにより、パソコンが部品化によって飛躍的に進歩したように、 プログラミング言語を飛躍的に進歩させる。

Java 言語とシームレスに統合されたスクリプト言語

現在は、スクリプト言語と汎用言語など、用途によって 全く異なった言語が用いられている。 しかし、複数の言語を連携させるアプリケーションの構築は面倒なので、 すべての種類の言語をシームレスに統合したい。

その1例として、 EPP を使って、 Java 言語の普通のソースコード中に 埋め込めるスクリプト言語を設計・実装したい。 例えば、今の Java 言語は、 ファイル処理、入出力、 並列処理などを行なおうとすると、かなり面倒である。 しかし、スクリプト言語ならば、これらが非常に簡単に行なえる。

負荷分散

高並列コンピュータ上でのタスクスケジューリングや、 インターネット上でのメタコンピューティングにおけるスケジューリングにおいて、 負荷分散をどうするかが問題である。 タスク投入をユーザの良識にまかせていたのでは、すぐに破綻する。

そこで、計算機資源に市場原理を導入し、 タスク間で、一種の競売を行なわせ、それぞれのタスクの事情に合った 計算機資源が割り当てられる仕掛けを作りたい。

オブジェクト指向言語の研究

現在のオブジェクト指向言語は、クラスとモジュールの役割が 無理矢理 unify されており、 中規模程度のプログラム開発で不都合が生じ始めてしまう。 この問題を解決する system mixin という言語機能を提案しているが、 これの研究を継続し、オブジェクト指向言語の標準的機能にまでしたい。
To Home Page of Ichisugi.