オースターハウトの二分法とは、コンピュータ科学者の ジョン・オースターハウトによる分類法[1]で、高水準プログラミング言語は、システムプログラミング言語とスクリプト言語という、それぞれが異なる特性と用途を持つ2つのグループに分類される傾向があるというものである。大規模なプログラミングと小規模なプログラミングを比較する。
システム プログラミング言語 (またはアプリケーション言語) には通常、次の特性があります。
- 静的に型付けされている
- 複雑なデータ構造の作成をサポートします
- プログラムは機械語にコンパイルされる
- これらのプログラムは、他のプログラムから独立して動作するように設計されている。
システム プログラミング言語は、オペレーティング システム、データベース サーバー、Web ブラウザーなど、大量の内部機能を備えたコンポーネントやアプリケーションに使用される傾向があります。これらのアプリケーションは通常、複雑なアルゴリズムとデータ構造を採用しており、高いパフォーマンスが求められます。システム プログラミング言語の代表的な例としては、C、OCaml、Modula-2などがあります。
対照的に、スクリプト言語 (またはグルー言語) には、次のような特性がある傾向があります。
スクリプト言語は、ほとんどの機能が他のプログラム (多くの場合、システム プログラミング言語で実装) から提供されるアプリケーションに使用される傾向があります。スクリプトは、他のプログラムを結合したり、既存のプログラムの上に機能のレイヤーを追加したりするために使用されます。Ousterhout は、スクリプトは短い傾向があり、あまり熟練していないプログラマによって作成されることが多いため、実行効率よりも、単純さや他のプログラムとのやり取りのしやすさが重要だと主張しています。スクリプトの一般的なアプリケーションには、Web ページの生成、レポートの生成、グラフィカル ユーザー インターフェイス、システム管理などがあります。スクリプト言語の典型的な例としては、Python、AppleScript、C シェル、DOS バッチ ファイル、Tcl などがあります。
Ousterhout の二分法は、彼の言語Tclの設計の根底にあります。
歴史
この二分法は Ousterhout (1998) で完全に説明されているが、Ousterhout は少なくとも Tcl の設計 (1988) の頃からこの区別をしており、さまざまな時点で公に述べていた。初期のエピソードは 1994 年 9 月下旬から 10 月にかけての「Tcl 戦争」で、リチャード・ストールマンが「Tcl を使うべきではない理由」と題する Tcl 批判の記事を投稿した。[2]これに対して Ousterhout は、自身の二分法を明確に表現して返答した。[3]
ストールマンの Tcl に対する反対は、彼が理解していないか、または同意していない Tcl の設計の 1 つの側面に大きく起因しているのではないかと思います。これは、大規模なソフトウェア システムには *2 つの* 言語を使用する必要があるという提案です。1 つは C や C++ などの言語で、パフォーマンスが重要となる複雑な内部データ構造を操作するためのものです。もう 1 つは Tcl などの言語で、C の各部分を結び付けて拡張に使用する小規模なスクリプトを書くためのものです。
批判
批評家たちはこの二分法は非常に恣意的であると考え、これをオースターハウトの誤謬またはオースターハウトの誤った二分法と呼んでいる。[4]静的型付けと動的型付け、データ構造の複雑さ、依存型と独立型は無関係な特徴であると言えるかもしれないが、オースターハウトの二分法に対する通常の批判は、コンパイルと解釈の区別である。言語実装が機械語にコンパイルされるか、各実行の開始時に解釈、トークン化、またはバイトコンパイルされるか、あるいはこれらの混合であるかには、意味論も構文も大きくは依存しない。さらに、広く使用されている言語は基本的にコンパイラなしで純粋に解釈されるものではない。このため、コンパイルと解釈はプログラミング言語の分類において疑わしいパラメータとなっている。[5]
参考文献
- ^ Ousterhout, John (1998 年 3 月)。「スクリプティング: 21 世紀の高レベルプログラミング」(PDF)。IEEE Computer マガジン。2020年3 月 27 日閲覧。
- ^ Stallman, Richard (1994-09-23). 「Tcl を使用してはいけない理由」.ニュースグループ: comp.lang.tcl. Usenet: 9409232314.AA29957@mole.gnu.ai.mit.edu . 2015-09-13に取得。
- ^ Ousterhout, John (1994-09-26). 「Re: Tcl を使用しない理由」.ニュースグループ: comp.lang.tcl. Usenet: 367307$1un@engnews2.Eng.Sun.COM . 2015-09-13に取得。
- ^ スチュアート・ハロウェイ。オスターハウトの二分法はそうではない。2018年1月17日時点のオリジナルよりアーカイブ。
- ^この記事は、2008 年 11 月 1 日より前に Free On-line Dictionary of Computingの Ousterhout%27s+dichotomy から取得した資料に基づいており、 GFDLバージョン 1.3 以降 の「再ライセンス」条件に基づいて組み込まれています。
さらに読む
- クマール、ディーパック(2010年9月)。「Reflections: language wars and false dichotomies」。ACM Inroads。1(3):10–11。doi :10.1145 /1835428.1835431。S2CID 34789810。
- Grover, Andy (2009 年 6 月 19 日)。「Ousterhout の二分法を乗り越えて、より優れたプログラマーになる」。Open Source Bridge。
