スクリプト言語
スクリプト言語はいくつかの異なるタイプに分類され、タイプ間でかなりの重複があります。
Glue languagesEdit
スクリプティングは、Ousterhoutの二分法や「大規模でのプログラミングと小規模でのプログラミング」のように、システムプログラミングと対比されることがよくあります。 この考え方では、スクリプティングはソフトウェアのコンポーネントをつなぐグルーコードであり、この目的に特化した言語がグルー言語です。 パイプラインやシェルスクリプトはグルー言語の典型的な例であり、Perlも当初はこの役割を果たすために開発された。 Web開発も、データベースとWebサーバーの間を取り持つグルー言語の一つと言えます。 しかし、かなりの量のロジックがスクリプトで書かれている場合、それは「グルー」ではなく、単なる別のソフトウェア コンポーネントと考えたほうがよいでしょう。
グルー言語は、以下のような記述やメンテナンスに特に役立ちます。
- コマンド シェル用のカスタム コマンド;
- コンパイルされた言語で実装するのに適したプログラムよりも小さいプログラム;
- 実行可能ファイルの「ラッパー」プログラム。
- 変更される可能性のあるスクリプト
- 最終的に別の、通常はコンパイルされた言語で実装されるソリューションの迅速なアプリケーション開発
グルー言語の例:
オペレーティング システムやアプリケーション コンポーネントにさらされるマクロ言語は、グルー言語として機能します。 たとえば、Visual Basic for Applications、WordBasic、LotusScript、CorelScript、Hummingbird Basic、QuickScript、Rexx、SaxBasic、WinWrap Basic などです。 また、AWKのようなツールも、Windowsのスクリプトホストエンジンで実装されている言語(Windowsにデフォルトで搭載されているVBScript、JScript、VBAや、サードパーティ製のRexx、Perl、Tcl、Python、XSLT、Ruby、Modern Pascal、Delphi、Cの実装を含むエンジン)と同様に、グルー言語とみなすことができます。
プログラマブルな電卓のような他のデバイスにもグルー言語があるかもしれません。Windows CE のような PDA の OS には、Windows NT、DOS、一部の Unix シェル、Rexx、Modern Pascal、PHP、Perl などの一般的なグルー言語の実装に加えて、アプリケーションを結合するネイティブまたはサードパーティのマクロツールが用意されているかもしれません。
プログラマブルな電卓をグルー言語でプログラムするには、3つの方法があります。 たとえば、テキサス・インスツルメンツ社のTI-92は、工場出荷時のデフォルトでは、コマンド・スクリプト言語でプログラムすることができます。 TI-NSpireシリーズに搭載されたスクリプト・グルー言語Luaは、これを継承したものと言えるでしょう。 ほとんどのグラフ電卓に搭載されている主要な高レベルプログラミング言語(多くの場合、Basicの亜種、時にはLispの派生版、さらにまれにCの派生版)は、多くの場合、グラフ、リスト、行列などの電卓機能をまとめることができる。 この記事で糊付け言語として挙げられているものに近い、より包括的なBasicバージョンのサードパーティによる実装もあり、TIやHPのグラフ電卓にPerlやRexx、さまざまなオペレーティングシステムのシェルを実装する試みも紹介されている。 TI や HP の一部のマシン用の PC ベースの C クロス コンパイラと、C と Perl、Rexx、AWK、およびシェル スクリプトと Perl、Modern Pascal、VBScript と Perl との間で変換するツールを使用すると、最終的に電卓に (コンパイルされたプログラムとして) 実装するためのグルー言語でプログラムを書くことができます。
エディタ言語Edit
多くのテキスト エディタは、エディタに組み込まれたマクロ言語を使用して書かれたマクロをサポートしています。 SemWare Editor (TSE) や vi improved (VIM) などのエディタに内蔵されているマクロ言語を使用するか、XEDIT などの外部実装を使用するか、または KEDIT などの両方を使用するかのいずれかです。 テキスト エディターや編集マクロは、CMS の FILELIST や RDRLIST のように、他のアプリケーションを提供するために隠れて使用されることもあります。
ジョブ制御言語とシェル
スクリプト言語の主要なクラスは、システム プログラムの動作の開始と制御に関連するジョブ制御の自動化から生まれました。 (この意味で、シェルはまさにこの目的のために使用された IBM の JCL (Job Control Language) の子孫であると考えることができるかもしれません)。 これらの言語のインタープリタの多くは、Unix シェルや MS-DOS の COMMAND.COM
のようなコマンドライン インタープリタを兼ねています。
GUI スクリプティング
グラフィカル ユーザー インターフェイスの出現により、コンピューターを制御するための特殊なスクリプティング言語が登場しました。 これらの言語は、人間が操作するのと同じように、グラフィック ウィンドウ、メニュー、ボタンなどを操作します。 これらの言語は、ユーザーの行動をシミュレートすることで、ユーザーと同じグラフィックウィンドウやメニュー、ボタンなどを操作する。 これらの言語は、一般的にユーザーの操作を自動化するために使用される。
これらの言語は、原理的にはあらゆるGUIアプリケーションの制御に使用できますが、アプリケーションやOSのサポートが必要なため、実際には使用が制限されています。 しかし、アプリケーションやOSのサポートが必要なため、実際には使用が制限されています。この制限にはいくつかの例外があります。 GUIスクリプト言語の中には、画面上のピクセルからグラフィックオブジェクトを認識するものがあります。
IBM Workplace Shell のように、GUI が適切なインターフェイスを提供している場合、GUI スクリプトを書くために OREXX などの汎用スクリプト言語を使用することができます。
アプリケーション固有の言語
アプリケーション固有の言語は、多くの異なるカテゴリに分けることができます。すなわち、スタンドアロン ベースのアプリ言語 (実行可能) や、内部のアプリケーション固有の言語 (広く配布されているスクリプトの一部である postscript、xml、gscript は、Adobe、MS、Google によってそれぞれ実装されています) など、アプリケーション ユーザーのニーズに合わせた慣用的なスクリプト言語があります。 同様に、多くのコンピュータゲームシステムでは、ノンプレイヤーキャラクターやゲーム環境のプログラムされたアクションを表現するために、カスタムスクリプト言語が使用されています。 この種の言語は、単一のアプリケーションのために設計されており、表面的には特定の汎用言語(C言語をモデルとしたQuakeCなど)に似ていても、他とは異なるカスタム機能を持っています。 Emacs Lispは、完全に形成された有能なLispの方言でありながら、Emacsの編集機能を拡張するのに最も役立つ多くの特別な機能を含んでいます。 アプリケーション固有のスクリプト言語は、単一のアプリケーションに特化したドメイン固有のプログラミング言語と見なすことができます。
拡張/埋め込み可能な言語
アプリケーション固有のスクリプト言語に代わって、アプリケーションプログラムに埋め込み可能な言語が数多く設計されています。 アプリケーション プログラマー (C または他のシステム言語で作業します) は、スクリプト言語がアプリケーションを制御できる「フック」を含みます。 これらの言語は、技術的にはアプリケーション固有の拡張言語と同等かもしれませんが、アプリケーションに「共通」の言語が組み込まれていると、ユーザーはアプリケーション間でスキルを移行できるというメリットがあります。
JavaScriptは、Webブラウザ内でのスクリプティングのための言語として始まり、現在も主にWebブラウザ内でのスクリプティングのための言語ですが、ECMAScriptとして標準化されたことにより、汎用の組み込み可能な言語として普及しました。 特に、Mozillaの実装であるSpiderMonkeyは、Yahoo!Widget Engineなどの環境に組み込まれています。
Tclは拡張言語として作られましたが、PythonやPerl、Rubyのように汎用言語として使われることが多くなりました。
Tclは拡張言語として作られましたが、PythonやPerl、Rubyのように汎用言語として使われることが多くなりました。 Perlは汎用言語ですが、Perl4のバイナリにOracle Call InterfaceをコンパイルしたOraperl(1990年)という方言がありました。
その他、複雑でタスク指向のアプリケーションでは、組み込み型のプログラミング言語を組み込んで公開することで、ユーザーがより多くの制御を行えるようにしたり、どんなに洗練されたユーザーインターフェイスでも利用できないような機能をユーザーに提供することがあります。
他にも、より迅速な機能追加や調整と実行のサイクルを必要とするタイプのアプリケーション(ゲームエンジンなど)でも、組み込み言語を使用しているものがあります。 開発中、ユーザーがアプリケーションの内部構造を熟知していたり、調整のたびに再構築する必要がなく (これにはかなりの時間がかかります)、機能をより早く試作し、より自由に調整することができます。 この目的のために使用されるスクリプト言語は、一般的で有名な Lua や Python から、AngelScript や Squirrel のようなあまり知られていないものまでさまざまです。