37

Luaを見ると、「組み込みに最適」、「高速」、「軽量」、そして何よりも「World of Warcraft」または略して「WoW」という言葉しか読んでいません。

すべてを別のアプリケーションに埋め込むことに限定されているのはなぜですか? Python や Perl のように汎用スクリプトを作成してみませんか?

Lua は速度やメモリ使用量 (最速のスクリプト言語) などの面で優れているようですが、Lua がタスクを自動化するための「デスクトップ スクリプト言語」として使用されているのを見たことがないのはなぜですか? 例えば:

  • 一連のファイルの名前を変更する
  • Web からいくつかのファイルをダウンロードする
  • ウェブスクレイピング

標準ライブラリの欠如ですか?

4

11 に答える 11

40

Lua はクールな言語で、軽量で非常に高速です。

しかし要点は、あなたが言及したタスクにとってパフォーマンスはそれほど重要ですか?

  • 一連のファイルの名前を変更する
  • Web からいくつかのファイルをダウンロードする
  • ウェブスクレイピング

それらのプログラムを 1 回作成し、1 回実行することもあるでしょう。一度だけ実行されるプログラムのパフォーマンスをそれほど気にするのはなぜですか?

例えば:

  1. C/C++ プログラムを作成するのに 3 時間かかり、データを 1 回処理するには、プログラムの実行に 1 時間かかります。
  2. データを処理する Python プログラムを 1 回作成するのに 30 分かかります。プログラムの実行には 10 時間かかります。

最初のものを選択すると、プログラムを実行する時間を節約できますが、プログラムの開発に時間がかかります。

一方、2 番目を選択すると、プログラムの実行に時間がかかりますが、プログラムの実行中に他のことを行うことができます。World of Warcraft をプレイして、ウォーロックでモンスターを倒してみませんか? 私のDOTを食べてください!:P

それでおしまい!Lua を書くのはそれほど難しくありませんが、Lua に関するすべてが効率的に設計されています。さらに、Lua 用のモジュールはほとんどありませんが、Python 用のモジュールは非常に多くあります。一度だけ実行するプログラムのためだけに、C ライブラリを Lua に移植したくありませんか? 代わりに、Python を選択し、それらのモジュールを使用してタスクを簡単に達成することをお勧めします。

参考までに: 実際、Lua を使用して Web スクレイピングを実行しようとしましたが、最終的に、言語のパフォーマンスをそれほど気にする必要がないことに気付きました。ウェブスクレイピングのボトルネックは、言語のパフォーマンスではありません。ボトルネックは、ネットワーク I/O、HTML 解析、およびマルチタスクにあります。私がしなければならないことは、プログラムが機能することを確認し、ボトルネックを見つけることだけです。最終的に、Lua ではなく Python を選択しました。非常に多くの優れた Python モジュールがあります。自作する理由がありません。

ウェブスクレイピングに関する私の経験によれば、ウェブスクレイピング プログラムのバックエンドとして、ネットワーク I/O には Twisted を選択し、HTML 解析には lxml を選択しました。この技術の紹介記事を書きました。

Web サイトからデータを取得するための最良の選択: Python + Twisted + lxml

これが役に立てば幸いです。

于 2008-10-31T08:48:29.583 に答える
23

Lua は Python よりもライブラリが少ないです。しかし、必ずLuaForgeを見てください。LuaCURLwxLuagetoptなど、興味深いライブラリがたくさんあります。

次に、Lua のパッケージ管理システムであるLuaRocksにアクセスします。それを使用すると、依存関係を持つほとんどの成熟した Lua モジュールを検索してインストールできます。RubyGemsとかaptitudeみたいな感じです。

サイトlua-users.orgにも、チュートリアルやLua Wikiなどの興味深いリソースがたくさんあります。

Lua について私が気に入っているのは、速度ではなく、最小限のコア言語、柔軟性、および拡張性です。

そうは言っても、あなたが言及したタスクにはおそらくPythonを使用するでしょう。なぜなら、より大きなコミュニティがPythonでそのようなことを行っているからです。

于 2008-10-31T14:40:55.890 に答える
12

組み込みスクリプトエンジン用の専用言語として(ある意味で)「販売」されているからといって、それに限定されるわけではありません。実際、WoWは、埋め込まれたスクリプト言語としてPythonを選択した可能性もあります。

于 2008-10-30T13:24:26.830 に答える
10

これはおそらく、Luaがスクリプトおよび拡張言語として設計されたためです。公式サイトでは、強力で、高速で、軽量で、埋め込み可能なスクリプト言語として説明されています。汎用プログラムを作成することを妨げるものは何もありませんが(正しく思い出せば、インタープリターとコンパイラーが付属しています)、言語設計者は、主に埋め込み言語として使用することを意図していました(したがって、軽量ですべてです)

于 2008-10-30T13:28:04.123 に答える
9

これはプログラミングの問題ではなく、社会学的な問題です。

私は、Lua を汎用スクリプト作成にほぼ独占的に使用しています。しかし、Lua がシェルでうまく機能するように、数百行のコードを書かなければなりませんでした。これには次のようなトリックが含まれていました

  • シェルから 1 つの単語として認識されるように文字列を引用する
  • シェル $(command) のように、コマンドの出力をキャプチャする関数を作成する
  • Lua posix ライブラリを使用してファイルシステムをクロールし、シェルのグロビング パターンを展開する関数を作成する

(興味があるかもしれない人のために、Lua drop boxにコードを残しました。これには、他のものも含まれています。興味深いものは、おそらくosutilos.quoteos.runfos.captureおよびおそらく にありos.execveます。グロビングは にありposixutil.luaます。どちらも Luiz Henrique を使用していますde Figuereido のLua Posix ライブラリ.)

私にとっては、単純な構文と優れたデータ構造を扱うことができるので、余分な努力はそれだけの価値があります。他の人にとっては、シェルとのより直接的な接続が好まれるかもしれません。

于 2008-11-28T20:56:38.537 に答える
6

間違いなく標準ライブラリが不足しています。また、Python、Perl、または Ruby ほど知られていません。

于 2008-10-30T19:13:31.023 に答える
5

最近、Windows 上の Lua 用にバッテリを含めたインストールを作成しようという動きがありました。その結果は、LuaForgeのLua for Windowsプロジェクトにあります。インタープリターと追加モジュールの大規模なコレクションが含まれており、便利なスクリプトとアプリケーションを作成してすぐに使用できます。

現在、さまざまな Linux ディストリビューションに Lua といくつかのモジュールが含まれており、今後もさらに追加される予定です。

メーリング リストで議論中のモジュール ライブラリの提案もいくつかありますが、コミュニティはまだ「公式」メカニズムとして 1 つを決定していません。

私は、Lua をスクリプト言語としても、典型的なアプリケーションの "メイン" ループとしても使用しています。Lua は、C でより適切に実装されたコードを含む 1 つ以上の DLL によってサポートされているか、特定のプロジェクトで必要な既存のライブラリまたは API 関数をラップしています。IUPwxLua (wxWindows の Lua バインディング)などの GUI ツールキットと一緒に使用すると、Lua を使用すると、小規模から中規模の GUI アプリケーションを簡単に作成できます。

于 2009-02-20T08:31:28.220 に答える
4

標準ライブラリの欠如。限目。ディレクトリ内のすべてのファイルを一覧表示する場合でも、非標準モジュールが必要です。

それには正当な理由があります (厳密な ANSI 移植性を維持し、POSIX を必要としません) が、結果として、一般的なプログラミングでは、Python を好むようになりました。

于 2008-12-16T08:56:51.820 に答える
4

それが「マーケティング」のことであるという答えはおそらく正しいと思いますが、選択できるライブラリの大規模なセットが不足しています。この別のケースを指摘したいと思います: Ruby. Ruby は、汎用のスクリプト言語であることを意図しています。問題は、Ruby on Rails の人気が高まっているため、Rails に関係のないものを見つけるのが難しくなっているということです。Lua も同様に苦しむのではないかと心配しています。Lua を使用するいくつかの主要な理由で人気がありますが、その汚名から逃れることは決してできません。

于 2008-10-31T14:15:15.100 に答える
4

Lua は、TeX の拡張機能であるLuaTeXで組み込み言語として使用され、TeX 開発者の間で急速に人気が高まっています。これは、TeX Live ディストリビューションの一部のユーティリティのスクリプト言語として使用されています。これは、luatexすべてのプラットフォームで利用できるバイナリがあり、Lua インタープリターとしても使用できるためです (いくつかの重要なモジュールが追加されています – slnunicode、luafilesystemなど) これは、以前は追加の Unix スクリプト ツール (ActivePerl など) に依存していた Windows インストールにとって非常に重要です。ConTeXt マクロ言語は、最近では Lua スクリプトを広く使用しています。

それは確かに非常に特殊な分野です :-) しかし、ゲームとはまったく関係ありません!

于 2009-10-08T13:24:02.017 に答える
3

Luaを簡単に埋め込むには、依存関係が少なく、小さい必要があります。そのため、汎用スクリプト言語としてはあまり適していません。汎用スクリプト言語として使用するには、多くの標準ライブラリが必要になるためです。しかし、Luaに多くの標準ライブラリがある場合、(依存関係とメモリフットプリントのために)埋め込むのは難しくなります。

于 2009-04-23T11:32:02.087 に答える