LuaではなくPythonを使用する理由 [閉まっている]


45

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

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


3
Luaは配列と辞書のふりをするのが好きで、間違った結果だけでなく非決定的な結果を返すことができる長さゲッターを持っています。Googleの理由はわかりませんが、これが嫌いな理由です。
Steve314

4
私にとって、Pythonはコーディングが簡単で、楽しく、機能も豊富です。私の頭からのいくつかの例:ジェネレーターはPython(yield)の一流市民としてやってくるので、Luaにはもっと面倒なセットアップが必要です。Pythonのリストインデックス[::]は非常にプラスです。Pythonには正当なクラスと継承があります。Luaは高速ですが、はい、私は実際に速度が重要なときにPythonで使用するGoコードを書くのが好きです。
フランクブライス

LuaJITは大好きですが、LuaJITへの愛の大部分は、埋め込みのしやすさ、スピード、小さなフットプリントです。私が一日中何かでプログラムしなければならなかったら、私はPythonにもっと傾くかもしれません。

@FrankBryceあなたは逆にそれを得た。Pythonのジェネレーターは、Luaのコルーチンのサブセットです。参照inf.puc-rio.br/~roberto/docs/MCC15-04.pdf
CAPR

回答:


37

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

Luaを小さく保つことを目標としているため、非常に小さな標準ライブラリのみが存在し、必要最低限​​の機能しかありません。

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

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

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


54

シンプル: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構文よりもユーザーフレンドリーです。...


4
埋め込み言語としてのLuaのターゲットは、おそらく大きな貢献者だと思います。しかし、それでもなお、言語の「人気」は、言語自体の実際のデザインや能力とはあまり関係がなく、「適切なタイミング、適切な場所」の問題であると考えています(例えば、PHPを参照)。
ディーンハーディング

まあ、特定の目的をターゲットにした言語は特定のユーザーに自然にアピールし、一般的な言語よりも聴衆を抑制していると思います。汎用言語よりも聴衆が少ないことは、それについて話す人の数に直接影響します。それ以外は、特定のターゲットは特定の機能を意味します。したがって、すべての状況に適しているわけではありません。ここで、たとえば、luaだけではあまり良いGUIプログラミング言語ではありません。本当に便利になるには、いくつかの追加が必要です。
クライム

そうは言っても、私は完全に同意します:phpがWebサイト開発などの広く使用されている分野に使用されなかった場合、それは今どこにでもないでしょう。
クライム

Luaは主に埋め込み言語として使用されますが、汎用プログラミング言語です。たとえば、mod_luaを使用してCGIスクリプトを作成できます。質問を変更して、なぜluaが埋め込み言語として残ったのでしょうか?
ベンジャミン

それが起源だからです。汎用言語としてphpを使用することもできるため、汎用言語として使用できます。Perlを使用して同じことを行うこともできます。しかし、彼らの起源は彼らのオリエンテーションを作ります。繰り返しになりますが、それらの最初の目的は、汎用言語にとって他の言語ほど有用ではありません。Luaには、オブジェクトの方向(簡単に追加できますが、ネイティブではありません)など、GUIシステムで簡単に使用できる機能言語がありません。元々特定の目的のために作成された言語と一般的な言語の違いを確認してください。とにかくすべてに制約があります。
クライム

4

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.