多くの人が指摘しているように、ソースにアクセスできるからといって、それを好きなように操作できるわけではありません。
あなたが尋ねる
ほとんどすべてのスクリプトが解釈されませんか? つまり、スクリプトを解釈するデバイスは、定義上、「ソース」を必要としないのでしょうか。
いいえ。インタープリターでも、ソースは解釈される前にいくつかの変換を経ます。最終的に解釈される形式は、多くの場合、スタック ベースまたはレジスタ ベースの仮想マシンの一連の命令です。このような命令は通常「バイトコード」と呼ばれます。内部ツリーを比較的効率的に解釈することも可能です。主に教育目的で設計された通訳者は、さらに非効率的な方式を使用する場合があります。
一部の実装では、内部形式を取得してディスクに書き込み、そこから再度読み取って解釈することができます。通常、認識される利点は、
主な欠点は、典型的な内部形式は通常、ソース コードよりも移植性が低いことです。これは、おそらくバイト オーダーまたはワード サイズの違いが原因です。
Lua の特定のケースでは、luac
コンパイラはバイトコードをディスクに書き込みます。バイトコードは移植性がなく、コンパイラはすでに非常に高速であるため、めったに使用されません。World of Warcraft の特定のケースでは、Lua を使用してインターフェイスを変更し、エクスペリエンスをカスタマイズすることを実際に奨励しています。彼らは誰もがコードを共有することを望んでいるので、オープン ソースを維持します。WoW には 1,000 万人を超える加入者がおり、少なくとも 5,000 人がコードに貢献しています。これはコードを提供したユーザー ベースの 0.5% であり、職業としてのプログラミングの将来について私は嬉しく思います。