PythonがGoogleに支援されて急速に人気を博し、Luaはそうではないのはなぜですか?
Luaがバックグラウンドに留まっている理由を知っていますか?
yield
)の一流市民としてやってくるので、Luaにはもっと面倒なセットアップが必要です。Pythonのリストインデックス[::]
は非常にプラスです。Pythonには正当なクラスと継承があります。Luaは高速ですが、はい、私は実際に速度が重要なときにPythonで使用するGoコードを書くのが好きです。
PythonがGoogleに支援されて急速に人気を博し、Luaはそうではないのはなぜですか?
Luaがバックグラウンドに留まっている理由を知っていますか?
yield
)の一流市民としてやってくるので、Luaにはもっと面倒なセットアップが必要です。Pythonのリストインデックス[::]
は非常にプラスです。Pythonには正当なクラスと継承があります。Luaは高速ですが、はい、私は実際に速度が重要なときにPythonで使用するGoコードを書くのが好きです。
回答:
私はLuaが大好きですが、いくつかの本当の制限があります。他の人が述べたように、それらは主に構成ファイル言語としてのLuaの起源に由来し、その後埋め込みスクリプト言語として派生します。
Luaを小さく保つことを目標としているため、非常に小さな標準ライブラリのみが存在し、必要最低限の機能しかありません。
これにより、Luaサークルでは、Lua開発者が、広く受け入れられているコアライブラリのセットをまとめて作業するのではなく、他の多くの言語の標準ライブラリ自体が提供する機能を再実装したいと考えています。
マルチスレッド、正規表現、プラットフォームに依存しないファイルアクセスメソッド、さらにはビット操作(5.2まで)などは、Luaが大幅に大きく低速になるため、すべて「含まれない」ものです。確かに、ライブラリにこれらのことをさせることができます-しかし、それらには独立したメンテナーと品質レベルがあります。
誤解しないでください。リストに挙げたのと同じ理由で、Luaが大好きです。
シンプル:LuaにはPythonよりも「ニッチ」な目的があります。
Pythonは、一般的なプログラミング言語として有用であると考えられています。そのため、多くの場合に役立ちます。よく知られている多くのタイプのアプリケーションをカバーしていますが、特定の制約を対象とする可能性のある他の言語と直接競合することはありませんが、その構文は単純です。
Luaは完全に組み込みスクリプト言語を対象としています。ビルドシステムなど、現在他のコンテキストで使用されている場合でも、最初の目的です。ソフトウェアに組み込まれ、ドメイン固有のスクリプト関数と構造を簡単に実装できるようにします。非常にミニマリストなので、実際に制約のあるハードウェア(NintendoDSでLuaを使用しました)でも使用でき、軽量で使いやすく、高速であり、そのようなミニマリスト言語ですが、多くの方言(インポートパラダイムのようなオブジェクトの向き)が利用可能です。移植性に優れているため(ANSI C)、最新の組み込みソフトウェアに十分な量のメモリを備えた組み込みハードウェアで使用できます(デフォルトのlua vmは約400koであり、オブジェクトの作成をループしないとほとんど成長しません) ...)。
そのため、Luaは最初、アプリケーションにスクリプト言語を埋め込む必要があるコンテキストで使用されます。
Pythonは...ニッチな言語を必要としないほとんどすべてに使用されます(Pythonを使用して非常にパフォーマンスの高いゲームを作成できますが、パフォーマンス重視のゲームのいくつかはそのようなシステムを避ける必要があります)。
PythonがLuaよりも多くのコンテキストで使用されているというだけです。私の知る限り、Android(Javaおよびネイティブ言語サポートを提供する)を除き、Googleは組み込みソフトウェア会社ではないため、どこでもLuaは必要ありませんが、Pythonは何をするにも便利です(Web、ビルドシステム、コミュニケーション、ウェブ、ウェブ)。
Pythonは組み込みスクリプト用の多くのゲームでも使用されていますが、Luaよりも重くて遅いです。Pythonの構文は、ゲーム構造内のスクリプト化された情報に大きく依存する大規模なゲームに適しています(明確ではありませんが、スクリプトに「真の完全な言語」が必要な場合は、Pythonの埋め込みがパフォーマンスが良い場合は、良いアイデアです)。Pythonは埋め込まれるように作られていなかったので、それで問題ありません。C ++に埋め込まれることを目的とするPythonに相当するのがFalconです。
極端な比較のために、埋め込みを対象とし、ミニマリストのLuaよりも完全な構文を持ち、パフォーマンスを競おうとするいくつかの言語:ChaiScript、AngelScript、Io ...
ところで、PreMakeやBamのような新しいビルドシステムでは、ビルドファイル言語としてLuaが使用されています。アイデアは軽量であり、ゲーム開発者からよく知られているということです(ゲーム開発システムのビルドシステムは大きな問題です)。それで、それはLuaがもっと評価されるかもしれない別のドメインかもしれません。確かにCMake構文よりもユーザーフレンドリーです。...
Luaで何でもできます。プログラムを拡張するスクリプト言語として作成されていますか?はい、しかしそれはそれだけにとどまりません。Luaには多くのライブラリがあり、適切なツール(LuaJITのFFIまたはtolua)を使用すると、C / C ++ライブラリを使用することもできます。私の観点でPythonをもっと使用する理由は年齢だけです。Pythonは多くの大学や学校で第一言語として使用されています。言語がより成熟しているためです。また、Pythonについてはあまり知りませんが、知っている限りでは、エンドユーザーからコードを簡単に隠すことができます。Luaでは、そう簡単ではないでしょうか?