解釈されたプログラミング言語の (主要な/唯一実行可能な) 実装の速度は、今日の基準ですか?
速度と抽象化の間の最適なバランスは何でしょうか?
スクリプト言語は、パフォーマンスに関するすべての考えを完全に無視し、迅速な開発、読みやすさなどの概念に従うべきですか?
現在、いくつかの実験的な言語とインタープリターを設計しているため、これを求めています
解釈されたプログラミング言語の (主要な/唯一実行可能な) 実装の速度は、今日の基準ですか?
速度と抽象化の間の最適なバランスは何でしょうか?
スクリプト言語は、パフォーマンスに関するすべての考えを完全に無視し、迅速な開発、読みやすさなどの概念に従うべきですか?
現在、いくつかの実験的な言語とインタープリターを設計しているため、これを求めています
最近、なぜ誰かがインタプリタを書くのか理解できません。CLR (+DLR) と JVM という 2 つの優れた仮想マシンがあります。いずれかのランタイム用のコンパイラを作成するのは簡単です。そうすれば、膨大な量の既存のコードとの相互運用性、優れた標準ライブラリ、多くの言語で言語の速度が問題にならないようにする JIT コンパイラの利点が得られます。ケース (確かにどのインタープリターよりも高速です。)
開発者にとって単なる好奇心以上の言語を作りたいなら、これは間違いなく最近の方法です。
確かに速度は重要ですが、通常、スクリプト言語は実行速度よりも I/O コストが重要な場合に使用されるため、それがすべてではありません。それよりもはるかに重要なのは、言語の構造と機能です。最初にそれらに取り組み、次に実行速度に対処します。
そうは言っても、新しい汎用言語を構築しようとしている場合、最終的には、ほとんどの言語が行っているルートに進むことになると思います。つまり、バイトコードへの事前コンパイルと実行中の JIT コンパイルです。
開発者が必要とするだけの速さ。
ルールはありません。餌を与える必要があるだけです。
実験の目的に基づいて、これらの質問に自分で答える必要があります。
あなたの言語が役に立たない限り、速度は常に重要です。もしそれが役に立つなら、人々はそれを使って重い物を持ち上げようとするでしょう。これは、速度を最適化する価値があることを意味するものではありません (目標によって異なります)。また、その方法を説明するものでもありません(たとえば、バイトコードへの高速なコンパイルと、C で記述された高レベル ライブラリにアクセスする方法を作り直して、インタプリタはそれを呼び出す前に行うことはさらに少なくなります)。
速度と抽象化の最適なバランスは、解決する問題の種類によって異なります。一般に、コンピューターの時間は人間の時間より価値がありませんが、どちらもある程度の価値があります。コンピューターの時間を完全に無視しても、結果を待って作業する人が合計でどれくらいの時間を費やすかを検討することは依然として有用です。コーディングと実行の合計時間が最小限に抑えられれば、言語のユーザーは最大限満足するはずです。(最大限に強力なビジネスケースを作成したい場合は、コーダーとユーザーの給与で重み付けしてください。)
前の 2 つの点から、インタープリター言語がパフォーマンスを完全に無視するのは良くないと思います。もちろん、言語自体が実験的なものである場合は、機能を追加する代わりにパフォーマンスにどれだけの時間を費やしたいかを自問する必要があります。より頻繁に使用され、より要求の厳しいタスクに使用されるにつれて、徐々に最適化される場合、最初の実装が恐ろしく遅くても問題ありません。JavaScript はその好例です。
個人的には、優れた API を備えた言語を選びます。Lua を見ると、人々が作成する Lua C コードの 90% は単なるボイラープレートです。より遅い言語で、はるかに優れた C++ API が登場した場合、私はすぐにそれに切り替えます。
結局のところ、「時期尚早の最適化は諸悪の根源」です。つまり、言語には優れた機能が必要であり、かつ高速である必要があります。ユーザーがオペレーティングシステムを実装する必要があるアセンブラと同じくらい使いやすい場合、高速であっても意味がありません。
このような質問に対する唯一の答えはありません。考えられるすべての目的と対象者に 1 つの答えを適用することはできません。
おそらく、考慮すべき最大の要因は、その言語をほとんどスタンドアロンにするつもりなのか、それとも他の何かと組み合わせて使用するつもりなのかということです。Lua のように、他のもの (Lua の場合は C) と一緒に使用することを主な目的として (または排他的に) 使用することを意図したものを作成すると、速度はそれほど重要ではなく、興味深いものになります。主にそれ自体で使用されるものを作成すると、速度がより重要になります。