言語をスクリプト言語にするものは何ですか?「コンパイルされる代わりに解釈されるとき」と言う人がいると聞いています。それはPHPを(例えば)スクリプト言語にするでしょう。それが唯一の基準ですか?または他の基準はありますか?
言語をスクリプト言語にするものは何ですか?「コンパイルされる代わりに解釈されるとき」と言う人がいると聞いています。それはPHPを(例えば)スクリプト言語にするでしょう。それが唯一の基準ですか?または他の基準はありますか?
回答:
スクリプト言語は、他のことを「スクリプト」で実行する言語です。主な焦点は、ブラウザ用のJavaScript、MS Office用のVBAなど、既存のアプリを希望どおりに動作させることほど、独自のアプリを構築することではありません。
シンプル。私が使用する場合、それは現代の動的言語であり、使用する場合、それは単なるスクリプト言語です!
伝統的に、スクリプトとプログラミングの違いについて話すとき、スクリプトは解釈され、プログラムがコンパイルされます。言語はさまざまな方法で実行できます-解釈またはコンパイル(バイトコードまたはマシンコードへ)。これで言語が変わるわけではありません。
一部の目では、言語の使用方法によってスクリプト言語になります(たとえば、主にC ++で開発するゲーム開発者は、Luaでオブジェクトをスクリプト化します)。繰り返しになりますが、線はぼやけています。ある人はプログラミングに言語を使用でき、別の人は同じ言語をスクリプト言語に使用できます。
これは、スクリプト言語に関するウィキペディアの記事からの抜粋です。
スクリプト言語、スクリプト言語、または拡張言語は、1つ以上のソフトウェアアプリケーションの制御を可能にするプログラミング言語です。「スクリプト」は、アプリケーションのコアコードとは異なります。通常、それらは異なる言語で記述され、多くの場合、エンドユーザーによって作成または少なくとも変更されます。スクリプトは多くの場合、ソースコードまたはバイトコードから解釈されますが、スクリプトが制御するアプリケーションは、伝統的にネイティブマシンコードにコンパイルされます。スクリプト言語は、ほとんどの場合、制御するアプリケーションに組み込まれています。
「通常」、「しばしば」、「伝統的に」、「ほぼ常に」の使用に気づくでしょう–これらはすべて、特定の言語を「スクリプト言語」にする一連の明確な属性がないことを示しています。
「台本は俳優に与えるものです。プログラムは聴衆に与えるものです。」-ラリーウォール
違いはほとんどないと思います。いわゆる「スクリプト」言語はしばしばコンパイルされます-非常に迅速に、実行時に。また、「プログラミング」言語の一部は実行時にもコンパイルされ(JITと考えてください)、「コンパイル」の最初の段階は構文チェックとリソース解決です。
それに夢中にならないでください、それは本当に重要ではありません。
これに対する可能な答えはたくさんあります。
まず、スクリプト言語はプログラミング言語であるため、スクリプト言語とプログラミング言語の違いについての問題ではありません。別のプログラミング言語がスクリプト言語ではないのに、一部のプログラミング言語をスクリプト言語にする特性の問題です。
第二に:XYZ言語が何であるかを言うのは、そのXYZが「スクリプト」、「関数型プログラミング」、「オブジェクト指向プログラミング」であるか、何であるかを言うのは本当に難しいです。「関数型プログラミング」が何であるかの定義はかなり明確ですが、「関数型プログラミング言語」が何であるか誰も知りません。
関数型プログラミングまたはオブジェクト指向プログラミングはプログラミングスタイルです。ほぼすべての言語で関数型スタイルまたはオブジェクト指向スタイルで記述できます。たとえば、Linux仮想ファイルシステムスイッチとLinuxドライバーモデルは、Cで書かれているにもかかわらず、オブジェクト指向になっていますが、Webで見られる多くのJavaまたはC#コードは非常に手続き型であり、オブジェクト指向ではありません。。OTOH、非常に機能的なJavaコードをいくつか見ました。
では、関数型プログラミングとオブジェクト指向プログラミングが、どの言語でも実行できる単なるスタイルである場合、「オブジェクト指向プログラミング言語」をどのように定義するのでしょうか。オブジェクト指向プログラミング言語は、オブジェクト指向プログラミングを可能にする言語であると言えます。しかし、それは定義の大部分ではありません。すべての言語がオブジェクト指向プログラミングを許可しているため、すべての言語はオブジェクト指向ですか?つまり、オブジェクト指向のスタイルでプログラミングすることを強制するのであれば、言語はオブジェクト指向です。しかし、それもあまり定義ではありません。すべての言語で関数型プログラミングが可能であるため、オブジェクト指向の言語はありませんか?
だから、私にとって、私は次の定義を見つけました:
言語がスクリプト言語(オブジェクト指向言語/関数型言語)である場合、両方とも
- 容易にスクリプトを(オブジェクト指向プログラミング/関数型プログラミング)、つまりはそれだけではなく、可能にしていますが、作る簡単かつ自然と含まれています助けをそれで、と
- スクリプティング(オブジェクト指向プログラミング/関数型プログラミング)を推奨します。
したがって、5つの段落を経て、「スクリプト言語はスクリプト言語」であることに到達しました。なんて素晴らしい定義でしょう。ない。
明らかに、ここで「スクリプト」の定義を確認する必要があります。
ここで3つ目の問題が発生します。「関数型プログラミング」という用語は明確に定義されており、「関数型プログラミング言語」という用語だけが問題ですが、残念ながらスクリプトでは、、「スクリプト」という用語と「スクリプト言語」という用語のあります。 "は明確に定義されていません。
さて、まずスクリプトはプログラミングです。これは特別なプログラミングです。IOW:すべてのスクリプトはプログラムですが、すべてのプログラムがスクリプトであるとは限りません。すべてのスクリプトのセットは、すべてのプログラムのセットの適切なサブセットです。
私の個人的な意見では、スクリプティングスクリプトを作成し、それを他の種類のプログラミングと区別するのは、…
スクリプトは主に以下のオブジェクトを操作します
- スクリプトによって作成されたのではありません。
- スクリプトに依存しない有効期間があり、
- スクリプトのドメインの外に住んでいます。
また、使用されるデータ型とアルゴリズムは通常、スクリプトではなく外部環境によって定義されます。
シェルスクリプトについて考えてください。通常、シェルスクリプトはファイル、ディレクトリ、プロセスを操作します。システム上のファイル、ディレクトリ、プロセスの大部分は、現在実行中のスクリプトによって作成されたものではない可能性があります。また、スクリプトが終了しても消えることはありません。その存続期間はスクリプトから完全に独立しています。また、実際にはスクリプトの一部ではなく、システムの一部でもあります。あなたが書き込むことによって、あなたのスクリプトを起動していないFile
とDirectory
クラス、これらのデータ型は、あなたの懸念のどれもありません:あなたは、ちょうど彼らがあると仮定し、あなたも知らない(またあなたが行う必要がある、彼らがどのように機能するかを知っています)。また、独自のアルゴリズムも実装しません。たとえば、ディレクトリトラバーサルの場合find
は、独自の幅優先検索を実装するのではなく、単に使用します。
つまり、スクリプトは、スクリプトとは独立して存在するより大きなシステムに接続し、システムの一部を操作して終了します。
そのより大きなシステムは、シェルスクリプトの場合はオペレーティングシステム、ブラウザースクリプトの場合はブラウザーDOM、ゲーム(例:Luaを使用したWorld of Warcraft、またはリンデンスクリプト言語を使用したSecond Life)、アプリケーション(例:AutoLisp)です。 AutoCADまたはExcel / Word / Officeマクロの言語)、Webサーバー、ロボットのパック、またはその他すべて。
スクリプトの側面は、プログラミング言語の他のすべての側面と完全に直交していることに注意してください。スクリプト言語は、強くまたは弱く型付けされ、厳密にまたは緩く型付けされ、静的または動的に型付けされ、名目上、構造的またはダック型であり、型なしでさえあります。 。それは、命令的または機能的、オブジェクト指向、手続き的または機能的、厳密または遅延である可能性があります。その実装は、解釈、コンパイル、または混合できます。
たとえば、モンドリアンは、コンパイルされた実装を備えた、厳密に強く静的に型付けされた遅延関数型スクリプト言語です。
用語の道しかし、これのすべては議論の余地がある、スクリプト言語がされて、本当に現実の世界で使用される、上記のいずれかとは何の関係もありません。ほとんどの場合、単に侮辱として使用され、定義はかなり単純で、単純化されています。
- 実際のプログラミング言語:私のプログラミング言語
- スクリプト言語:プログラミング言語
これは、この用語が最もよく使用される方法のようです。
それはポルノのようなもので、見ればわかる。スクリプト言語で可能な唯一の定義は次のとおりです。
A language which is described as a scripting language.
少し円形ですね。(ちなみに、私は冗談ではありません)。
基本的に、特にその作成者によってそのように呼ばれることを除いて、言語をスクリプト言語にするものはありません。最新のスクリプト言語の主要なセットは、PHP、Perl、JavaScript、Python、Ruby、Luaです。Tclは最初の主要な最新のスクリプト言語です(ただし、それは最初のスクリプト言語ではありませんでしたが、それが何であるかを忘れてしまいましたが、Tclよりも古いことを知って驚きました)。
私の論文では、主要なスクリプト言語の機能について説明しています。
A Practical Solution for Scripting Language Compilers
Paul Biggar, Edsko de Vries and David Gregg
SAC '09: ACM Symposium on Applied Computing (2009), (March 2009)
ほとんどは動的に型付けおよび解釈され、参照実装以外には定義されたセマンティクスはありません。ただし、主要な実装がコンパイルまたはJITされた場合でも、言語の「性質」は変更されません。
彼らが残っている唯一の問題は、新しい言語がスクリプト言語であるかどうかをどのように判断できるかです。まあ、それがスクリプト言語と呼ばれるのであれば、それは1つです。したがって、Factorはスクリプト言語です(または少なくともそれが書かれたときはそうでした)が、Javaはそうではありません。
「スクリプト言語」は、多くのことを意味するこれらのあいまいな概念の1つです。通常、ソースコードから実行に至るまでの1つのステップのプロセスが存在するという事実を指します。
たとえば、Perlでは次のようにします。 perl my_source.pl
上記の基準が与えられた場合、PHPはスクリプト言語です(たとえば、Zendエンコーダーを使用してソースコードを「保護」するときに「コンパイル」プロセスを実行できる場合でも)。
PS。多くの場合(常にではありませんが)スクリプト言語が解釈されます。また、多くの場合(ただし常にではありませんが)、スクリプト言語は動的に型付けされます。
Roberto Ierusalimschy氏は、「Luaでのプログラミング」において非常に良い答えまたは質問をしていると思います。
ただし、インタープリター型言語の際立った特徴は、コンパイルされないことではなく、コンパイラーが言語ランタイムの一部であることで、その場で生成されたコードを実行することは(そして簡単に)可能です。
eval
機能を備えています。
1つの区分は
動的に解釈される言語は実行時に解釈されますが、コンパイルされた言語は実行前にコンパイルされます。
ヨルクが指摘したように、解釈/コンパイルされた区別は言語の機能ではなく、実行エンジンの機能であることを付け加えておきます。
実行エンジンではなく、言語の側面に関連していて焦点が絞られているタイプシステムのこの説明にも興味があるかもしれません。ほとんどのスクリプト言語は動的に型付けされますが、「通常の」言語はほとんど静的に型付けされます。
一般に、静的に型付けされた言語と動的に型付けされた言語の区分はより適切に定義されており、言語のユーザビリティーに大きな影響を与えます。
通常、スクリプト言語は次のとおりです。
通常、非スクリプト言語は次のとおりです。1.静的に型付けされます。2。パフォーマンスを重視してコンパイルされます。デザインパターン
しかし、私の意見では、それは最近の歴史的な違いのより多くです。JavascriptとPerlは小さくて単純なスクリプトを念頭に置いて作成されましたが、C ++は複雑なアプリケーションを念頭に置いて作成されました。ただし、どちらもどちらの方法でも使用できます。そして、多くのプログラミング言語は、現代のものでも古いものでも、とにかく境界を曖昧にしています(そもそもあいまいでした!)。
悲しいことに、「スクリプト言語」として知覚するものを嫌い、単純で強力ではないと考えている開発者を何人か知っています。私の意見は、古い決まり文句-仕事に適したツールを使用することです。
スクリプト言語は、当初、ハードプログラミング言語で記述されたアプリケーションの制御メカニズムと考えられていました。コンパイルされたプログラムは実行時に変更できなかったため、スクリプティングは人々に柔軟性を与えました。
最も注目に値するのは、シェルスクリプトがOSカーネル(従来はMac上のAppleScript)でプロセスを自動化していたことです。ますますPerlの手に渡った役割、そして最近ではそれがPythonに移った役割。レイトレーシングシーンの宣言に使用されるScheme(特にそのGuile実装)を見てきました。そして最近、Luaはスクリプトゲームのプログラミング言語として非常に人気があります。多くの新しいゲームでハードコードされているのはグラフィックス/物理エンジンだけであり、ゲームロジック全体がLuaでエンコードされている点です。同様に、JavaScriptはWebブラウザーの動作をスクリプト化すると考えられていました。
解放された言語。今では誰もOSをアプリケーションとは考えていません(またはOSをまったく考えています)。以前のスクリプト言語の多くは、独自の完全なアプリケーションを作成するために使用され始めました。名前自体は無意味になり、他のシステム内から解釈されるように設計されているかどうかに関係なく、今日使用されている多くの解釈言語に広まりました。
ただし、「スクリプト言語」は「解釈された言語」と同義ではありません。たとえば、BASICはそのほとんどの期間(つまり、その略語性を失い、Visual Basicになる前)に解釈されましたが、誰もそれをスクリプト。
更新:ウィキペディアで入手可能な通常どおりの資料を読みます。
第一に、プログラミング言語は「スクリプト言語」などではありません。それは「スクリプト言語」と他の何かでありえます。
2番目のポイントは、言語の実装者がスクリプト言語かどうかを通知することです。
質問は、「スクリプト言語と見なされる実装では、どの実装でスクリプト言語と見なされますか?」ではなく、「スクリプト言語とプログラミング言語の違いは何ですか?」間にはありません。
しかし、ある種のミドルウェアを提供するために使用されている言語は、スクリプト言語と見なします。たとえば、JavaScriptのほとんどの実装をスクリプト言語と見なします。JavaScriptがブラウザーではなくOSで実行された場合、それはスクリプト言語ではありません。PHPがApacheの内部で実行される場合、それはスクリプト言語です。コマンドラインから実行した場合は、そうではありません。
私はスクリプト言語を、明白でヘビーな感覚の「コンパイル」ステップを必要としないものと見なしています。プログラマーの観点からの主な機能は、コードを編集してすぐに実行することです。
したがって、私はJavaScriptとPHPをスクリプト言語と見なしますが、ActionScript 3 / Flexはそうではありません。
私の友人と私はちょうどこの議論を持っていました:プログラミング言語とスクリプト言語の違いは何ですか。
人気のある議論は、プログラミング言語がコンパイルされ、スクリプト言語が解釈されることです-しかし、私はこの議論が完全に偽であると信じています...なぜですか?
その上で、これはプログラミング言語とスクリプト言語の違いに対する私の議論です。
プログラミング言語はマシンレベルで実行され、マシン自体(メモリ、グラフィック、サウンドなど)にアクセスできます。
スクリプト言語はサンドボックス化されており、サンドボックスに公開されているオブジェクトにのみアクセスできます。基盤となるマシンに直接アクセスすることはできません。
私の意見では、PHP、Rubyなどの動的に解釈される言語は、まだ「通常の」言語であると言えます。「スクリプト」言語の例は、bash(またはkshまたはtcshなど)またはsqlplusのようなものです。これらの言語は、システム上の既存のプログラムを次のような一連の一貫した関連コマンドに連結するためによく使用されます。
だから私は(とにかく)私が言語をどのように使うかにより違いがあると思います。PHP、Perl、Rubyなどの言語は「スクリプト言語」として使用できますが、私は通常、「通常の言語」として使用されていることを確認します(Perlは双方向で動作するようです)。
先に進んで、重複した質問から私の回答を移行します
「スクリプト言語」という名前は、非常に特定の役割に適用されます。つまり、既存のソフトウェアアプリケーションに送信するコマンドを記述する言語です。(従来のテレビや映画の「脚本」のように)
たとえば、むかしむかし、HTML Webページは退屈でした。それらは常に静的でした。その後、ある日、Netscapeは「ねえ、ブラウザでページ内の小さなコマンドを読み取って操作させたらどうなるだろう」と考えました。そのように、Javascriptが作成されました。
簡単なjavascriptコマンドは alert()
、警告を表示するためにWebページを読み取っているブラウザー(ソフトウェアアプリ)に指示/コマンドするコマンドです。
さて、alert()
ブラウザが実際に使用するC ++または任意のコード言語に何らかの形で関連していますかアラートを表示するには?もちろん違います。.htmlページに「alert()」と書いた人は、ブラウザが実際にアラートを表示する方法を理解していません。彼はブラウザが解釈するコマンドを書いているだけです。
簡単なJavaScriptコードを見てみましょう
<script>
var x = 4
alert(x)
</script>
これらは、ブラウザ自体に解釈するために、ブラウザに送信される指示です。ブラウザーが実際に変数を4に設定し、それをアラートに入れるために使用するプログラミング言語は、JavaScriptとはまったく無関係です。
最後の一連のコマンドを「スクリプト」と呼びます(そのため、<script>
タグで囲まれています)。伝統的な意味での「スクリプト」の定義によると、アクターに送信される一連の指示とコマンド。たとえば、脚本(映画の脚本)が脚本であることは誰もが知っています。
脚本(台本)は、俳優、カメラ、または特殊効果ではありません。脚本は彼らに何をすべきかを伝えるだけです。
さて、正確にはスクリプト言語とは何ですか?
ツールボックスには、さまざまなツールのようなプログラミング言語がたくさんあります。一部の言語は特別に設計されました、スクリプトとして使用するためににされました。
Javasriptは明白な例です。スクリプトの領域に含まれないJavaScriptのアプリケーションはほとんどありません。
ActionScript(Flashアニメーションの言語)とその派生物はスクリプト言語であり、Flashプレーヤー/インタープリターにコマンドを発行するだけです。もちろん、オブジェクト指向プログラミングなどの抽象化がありますが、それはあくまでも手段であり、Flash Playerにコマンドを送信するだけです。
PythonとRubyは、スクリプト言語としても一般的に使用されています。たとえば、Rubyを使用してコマンドをスクリプト化し、「このサイトにアクセスし、このリンクをクリックして...」というブラウザに送信して、基本的な自動テストを行う会社で働いていたことがあります。その仕事では、私は決して「ソフトウェア開発者」ではありませんでした。コンピューターにコマンドを送信してブラウザーにコマンドを送信するスクリプトを書いたところです。
スクリプト言語はその性質上、めったに「コンパイル」されません。つまり、マシンコードに変換され、コンピューターによって直接読み取られます。
PythonおよびRubyから作成されたGUIアプリケーションでさえ、C ++またはCで記述されたAPIに送信されるスクリプトです。これは、Cアプリに何をすべきかを指示します。
もちろん、曖昧な線があります。マシン言語/ Cは、コンピューターが基本的なマザーボード/グラフィックスカード/チップとのインターフェースに使用するスクリプトであるため、なぜスクリプト言語であると言えないのですか?
明確にするために描くことができるいくつかの線があります:
スクリプト言語を記述して「コンパイル」せずに実行できる場合、それは直接スクリプトのようなものです。たとえば、脚本で何をするかを俳優に伝えるために、脚本で何もする必要はありません。すでに使用されており、現状のままです。このため、コンパイルされた言語は、スクリプトの目的で使用できる場合もありますが、スクリプト言語と呼ばれることはありません。
スクリプト言語は、複雑なソフトウェアアプリケーションに送信されるコマンドを意味します。それが、そもそもスクリプトを作成する全体の理由です。したがって、ソフトウェアがコマンドを送信するためにソフトウェアがどのように機能するかの複雑さを知る必要はありません。したがって、スクリプト言語は、複雑なソフトウェアアプリケーションに(比較的)単純なコマンドを送信する言語である傾向があります。この場合、機械語とアセンブリコードはそれをカットしません。
多くの人がスクリプト言語から遠ざかっているということをお勧めします。最近のコンパイルされた言語と動的言語に主に要約すると私は言うでしょう。
つまり、Pythonのようなことを実際に言うことはできません、またはRubyはこの時代の「スクリプト」言語です(IronPythonやJIT-your-favorite-languageのようなものさえあり、違いはさらにぼやけています)。
正直なところ、個人的にはPHPがスクリプト言語ではなくなったと感じています。私は人々が彼らの履歴書で言うJavaとは異なる方法でPHPを分類することを好むとは思わないでしょう。
スクリプト言語は、より大きなアプリケーションの一部であるスクリプトエンジン内で実行される傾向があります。たとえば、JavaScriptはブラウザのスクリプトエンジン内で実行されます。
スクリプト言語は、スクリプトが実行されるたびに解釈される言語であり、インタープリターがいることを意味し、ほとんどが人間が読める形式であるため、スクリプト言語は簡単に習得して使用できます。
すべてのコンパイル可能な言語はスクリプト言語にすることができ、その逆はすべてインタープリターまたはコンパイラーの実装に依存します。たとえば、C ++にはインタープリターがあるため、使用するとスクリプト言語と呼ばれる場合があります(C ++として一般的にはあまり実用的ではありません)は非常に複雑な言語です)、現在最も有用なスクリプト言語の1つはPythonです...
したがって、あなたの質問に答えるには、インタープリターを使用して迅速で簡単なスクリプトプログラムを実行し、単純なタスクやプロトタイプアプリケーションに対処することを定義します。コンパイルされたアプリケーション。
「スクリプト言語」という言葉を使わない方が、努力が減ると思います。「スクリプト言語」と呼ばれることが多いPerlなどの言語を取り上げます。
コンパイルされたJavaのような言語とそうでないRubyを区別する必要があるのはなぜですか?ラベル付けの価値は何ですか?
詳細については、http://xoa.petdance.com/Stop_saying_scriptを参照してください。
スクリプト言語とは、プログラムが通常、読み取り可能なテキスト形式でエンドユーザーに提供されるプログラミング言語であり、そのプログラムを直接実行できるように見えるプログラムがあります。(プログラムはスクリプトを内部でコンパイルする可能性があります。ユーザーには表示されないため、ここでは関係ありません。)
スクリプト言語では、ユーザーがプログラムを入力するだけですぐに実行できるインタラクティブセッションをサポートできることが比較的一般的です。これは、これが最初の段落からの必須要件の些細な拡張であるためです。主な追加要件は、実行エンジンに送信できるように、入力されたステートメントがいつ完了するかを把握するメカニズムの追加です。
少し異なる質問については、スクリプト言語はプログラミング言語ですが、プログラミング言語は必ずしもスクリプト言語である必要はありません。スクリプト言語は、システムを制御またはスクリプト化するために使用されます。そのシステムは、スクリプト言語がbashになるオペレーティングシステムである可能性があります。システムは、PHPスクリプト言語を備えたWebサーバーである可能性があります。スクリプト言語は特定のニッチを満たすように設計されています。それらはドメイン固有の言語です。対話型システムはスクリプト言語を解釈し、スクリプト言語が解釈されるという概念を生み出しました。ただし、これはシステムの結果であり、スクリプト言語自体の結果ではありません。
「スクリプト言語」の定義はかなりあいまいです。私はそれを次の考慮事項に基づいて考えます:
スクリプト言語には、通常、ユーザーに表示されるコンパイル手順はありません。通常、ユーザーは1つの簡単なコマンドでプログラムを実行できます。
スクリプト言語のプログラムは通常、ソース形式で渡されます。
スクリプト言語には通常、多数のシステムに存在するランタイムがあり、ランタイムはほとんどのシステムに簡単にインストールできます。
スクリプト言語はクロスプラットフォームであり、マシン固有ではない傾向があります。
スクリプト言語を使用すると、他のプログラムを簡単に呼び出したり、オペレーティングシステムとインターフェイスしたりできます。
通常、スクリプト言語は、従来のプログラミング言語で記述された大規模なシステムに簡単に組み込むことができます。
スクリプト言語は通常、プログラミングを容易にするために設計されており、実行速度はあまり考慮されていません。(高速実行が必要な場合、通常のアドバイスは、時間のかかる部分をCのようなものでコーディングし、言語をCに埋め込むか、言語からCビットを呼び出すことです。)
上記の特性のいくつかは実装に当てはまり、その場合はより一般的な実装を参照しています。Cインタープリターがあり、(AFAIK)明らかなコンパイル手順はありませんが、ほとんどのC実装には当てはまりません。もちろん、Perlプログラムをネイティブコードにコンパイルすることもできますが、通常の方法では使用できません。他のいくつかの特性は、本質的に社会的です。上記の基準の一部は多少重複しています。私が言ったように、定義はあいまいです。
スクリプト言語は、それ自体が定義していないエンティティを頻繁に操作する言語だと思います。たとえば、JavaScriptはブラウザが提供するDOMオブジェクトを操作し、PHPはCベースの関数の膨大なライブラリを操作します。もちろん、正確な定義ではなく、それよりももっと考える方法です。
そうでない場合は/ ではないだろうCPUで実行され実行され私にとってスクリプトです。インタープリターがプログラムの下のCPUで実行する必要がある場合、それはスクリプトとスクリプト言語です。
これ以上複雑にする理由はありませんか?
もちろん、ほとんどの場合(99%)、言語がスクリプト言語であるかどうかは明らかです。ただし、たとえばVMがx86命令セットをエミュレートできることを考慮してください。VMで実行すると、x86バイトコードがスクリプト言語になりますか?誰かがperlコードをネイティブの実行可能ファイルに変換するコンパイラを書くとしたらどうでしょうか?この場合、もう言語自体を何と呼ぶべきかわかりません。重要なのは言語ではなく出力です。
繰り返しになりますが、このようなことが行われたことに気づいていないので、今のところ、インタープリタ型言語のスクリプト言語を呼び出すことに慣れています。
スクリプトは比較的ある小さなプログラム。システムが比較的ある大きなプログラム、またはコレクションの比較的大きなプログラムの。
一部のプログラミング言語は、言語デザイナーやプログラミングコミュニティが比較的小さなプログラムを書くときに役立つと考える機能を使用して設計されています。これらのプログラミング言語は、PHPなどのスクリプト言語として知られています。
同様に、他のプログラミング言語は、言語デザイナーやプログラミングコミュニティが比較的大きなプログラムを書くときに役立つと考える機能を備えて設計されています。これらのプログラミング言語はシステム言語として知られています、Javaなどの。
現在、大小のプログラムを任意の言語で作成できます。小さなJavaプログラムはスクリプトです。たとえば、Javaの「Hello World」プログラムはシステムではなくスクリプトです。PHPで書かれた大きなプログラム、またはプログラムのコレクションはシステムです。たとえば、PHPで記述されたFacebookはシステムであり、スクリプトではありません。
言語がスクリプトまたはシステムプログラミングに最も適しているかどうかを判断するための「リトマステスト」として単一言語機能を検討することには疑問があります。たとえば、スクリプトはバイトコードまたはマシンコードにコンパイルされる場合や、直接抽象構文ツリー(AST)解釈によって実行される場合があります。
そのため、スクリプトの記述に通常使用される言語は、スクリプト言語です。システムを記述するためにスクリプト言語が使用される場合がありますが、そのようなアプリケーションは疑わしいと考えられます。