web-dev-qa-db-ja.com

なぜPythonでLuaではないのですか?)

Pythonがgoogleに支えられて急速に人気を博し、Luaはそうではないのはなぜですか?

Luaがバックグラウンドに留まった理由を知っていますか?

47
BenjaminB

私は本当にLuaが大好きですが、いくつかの本当の制限があります。他の人が述べたように、それらは主にLuaの起源から構成ファイル言語として派生し、後に埋め込みスクリプト言語として派生します。

Luaを小さく保つという目標のために、存在する機能が非常に小さい、非常に小さなstandardライブラリのみが存在します。

これは、Lua開発者が広く受け入れられているコアライブラリのセットに共同で作業するのではなく、他の多くの言語の標準ライブラリ自体が提供する機能を再実装したいというLuaサークルの不幸な文化につながりました。

マルチスレッド、正規表現、プラットフォームに依存しないファイルアクセスメソッド、ビット操作(5.2まで)などは、Luaを大幅に遅くするため、すべて「含まれません」。確かに、ライブラリにこれらのことを行わせることはできますが、それらには独立したメンテナと品質レベルがあります。

誤解しないでください。私がリストしたのと同じ理由でLuaが大好きです。

40
sylvanaar

シンプル:LuaにはPythonよりも「ニッチ」な目的があります

Pythonは一般的なプログラミング言語として役立つと考えられています。したがって、多くの場合に役立ちます。よく知られている多くのタイプのアプリケーションをカバーしていますが、特定の制約を対象とする可能性のある他の言語と直接競合することはありません。

Luaは完全に組み込みスクリプト言語を対象としています。ビルドシステムなど、現在他のコンテキストで使用されている場合でも、これは初期の目的です。ソフトウェアに組み込まれ、ドメイン固有のスクリプト関数と構造を簡単に実装できるようにします。それは非常にミニマリストであり、本当に制約のあるハードウェアでも使用できます(私はNintendoDSでLuaを使用しました)、軽量で使いやすく、高速で、そのようなミニマリストの言語ですが、多くの方言(インポートパラダイムのようなパラダイム)オブジェクト指向)が利用可能です。それは非常にポータブル(ANSI C)であり、最新の組み込みソフトウェア用にまともなメモリ量の任意の組み込みハードウェアで使用できます(私がよく覚えている場合、デフォルトのlua vmは約400koであり、オブジェクトの作成をループしない限り、ほとんど成長しません。 ...)。

したがって、Luaは最初、アプリケーションのスクリプト言語を埋め込む必要があるコンテキストで使用されます

Pythonは...よりニッチな言語を必要としないほとんどすべてのものに使用されます(Pythonを使用して非常にパフォーマンスの高いゲームを作成できますが、パフォーマンスが重いゲームの一種では、このようなシステムを回避する必要があります)。

単純にPythonはLuaより多くのコンテキストで使用されます。私の知る限り、Android(それを提供する= Javaとネイティブ言語のサポート)、Googleは組み込みソフトウェア会社ではないため、どこにでもLuaを実際に必要としませんが、Pythonは彼らが行うすべてのことに役立ちます(ウェブ、構築システム、コミュニケーション、ウェブおよびウェブ)。

Pythonは多くのゲームで組み込みスクリプトにも使用されていますが、Luaよりも重くて遅いです。 Python=の構文は、ゲーム構造のスクリプト化された情報に大きく依存する大規模なゲームに適しています(ここでは明確ではありませんが、「実際の完全なスクリプト用の「言語」、埋め込みPythonは良い考えかもしれません。)Pythonは埋め込まれるように作られていないので、細かいです。Pythonに相当するものは、C++に埋め込まれることを目的としています。Falconです。

極端な比較のために、埋め込みを対象とし、最小限のLuaよりも完全な構文を使用しようとし、パフォーマンスを競ういくつかの言語:ChaiScript、AngelScript、Io ...

ちなみに、PreMakeやBamなどの新しいビルドシステムでは、ビルドファイル言語としてLuaを使用しています。そのアイデアは、軽量でゲーム開発者からよく知られているということです(ゲーム開発のビルドシステムは大きな問題です)。したがって、おそらくそれはLuaがより高く評価される可能性がある別のドメインです。それは確かにCMake構文よりもユーザーフレンドリーです...

56
Klaim

Luaで何でもできる、それはプログラムを拡張するためのスクリプト言語として作成されていますか?はい、しかしそれだけではありません。Luaには多くのライブラリがあり、適切なツール(LuaJITのFFIまたはtolua)を使用すると、C/C++ライブラリを使用することもできます。 Python私の観点でより多く使用される理由は年齢のみです、Pythonは多くの大学や学校で第一言語として使用されているため、より多くの人々がいますPythonはLuaよりも知っており、言語が成熟しているため、Python Luaよりも優れたライブラリを見つけるのははるかに簡単です。また、i Pythonについてはあまり知りませんが、私が知っている限り、エンドユーザーからコードを隠すのは簡単です。Luaでは、そんなに簡単ではないでしょうか。

4
Gustavo