質問
Luaを見たときに読んだのは、「埋め込みに最適」、「高速」、「軽量」だけです。他の何よりも:「World of Warcraft」または短い" WoW"で。
すべてを別のアプリケーションに埋め込むことに限定されるのはなぜですか? PythonやPerlのように汎用スクリプトを書いてみませんか?
Luaは、速度やメモリ使用量(最速のスクリプト言語)などの面で優れているようです。タスクを自動化するには?例:
- 一連のファイルの名前を変更する
- ウェブからいくつかのファイルをダウンロード
- ウェブスクレイピング
標準ライブラリがないのですか?
解決
「マーケティング済み」という理由だけで(一般的な意味で)組み込みスクリプトエンジンの専用言語として、それがそれに限定されることを意味しません。実際、WoWは埋め込みスクリプト言語としてPythonを選択した可能性があります。
他のヒント
Luaはクールな言語で、軽量で非常に高速です!
しかし、ポイントは次のとおりです。パフォーマンスはそれらにとって非常に重要です あなたが言及したタスク?
- 一連のファイルの名前を変更する
- ウェブからいくつかのファイルをダウンロード
- ウェブスクレイピング
これらのプログラムを1回作成し、1回実行することもできます。 一度だけ実行するプログラムのパフォーマンスを重視するのはなぜですか?
例:
- C / C ++プログラムの作成に3時間かかり、データを1回処理するため、プログラムの実行には1時間かかります。
- データを1回処理するPythonプログラムを作成するのに30分かかります。プログラムの実行には10時間かかります。
最初のものを選択すると、プログラムを実行する時間を節約できます。 ただし、プログラムの開発には時間がかかります。
一方、2番目を選択すると、実行に時間を無駄にします プログラムが、プログラムがされているときに他のことを行うことができます ランニング。 World of Warcraftをプレイしてモンスターを殺す あなたのウォーロックで?私のD.O.Tを食べる! :P
それだけです! Luaを書くのはそれほど難しくありませんが、Luaについてのすべては効率的であるように設計されています。一度だけ実行するプログラムのためだけに、CライブラリをLuaに移植したくないのですか?代わりに、Pythonを選択し、それらのモジュールを使用してタスクを簡単に達成することをお勧めします。
FYI:実際、私はLuaを使用してウェブスクレイピングを試みましたが、 しかし最後に、私は言語のパフォーマンスについてそれほど気にする必要はないことに気付きました。 ウェブスクレイピングのボトルネックは 言語のパフォーマンスではありません。ボトルネックがあります ネットワークI / O、HTML解析、マルチタスク。しなければならないこと プログラムが機能することを確認し、ボトルネックを見つけます。 最後に、LuaではなくPythonを選択しました。そうです 多くの優れたPythonモジュール。私が自分で構築する理由はありません 所有。
ウェブスクレイピングに関する私の経験によると、 ネットワークI / Oの場合はツイスト、バックエンドとしてのHTML解析の場合はlxml 私のウェブスクレイピングプログラムの。このテクノロジーの紹介記事を書きました。
ウェブサイトからデータを取得する最適な選択肢:Python + Twisted + lxml
これが役立つことを願っています。
LuaのライブラリはPythonよりも少ないです。ただし、必ず LuaForge をご覧ください。 LuaCURL 、 wxLua または getopt 。
>次に、Luaのパッケージ管理システムである LuaRocks にアクセスします。これにより、依存関係のある最も成熟したLuaモジュールを検索してインストールできます。 RubyGems または aptitude 。
サイト lua-users.org には、チュートリアルや Lua Wiki 。
Luaで気に入っているのはその速度ではなく、最小限のコア言語、柔軟性、拡張性です。
それは言ったが、私はおそらくあなたが言及したタスクのためにPythonを使うだろう。なぜなら、より大きなコミュニティがPythonでそのようなことをしているからだ。
これはおそらく、Luaがスクリプトおよび拡張言語として設計されたためです。 公式サイトでは、強力で高速、軽量、埋め込み可能なスクリプト言語として説明されています。汎用プログラムを書くことを妨げるものは何もありません(私が正しく思い出せば、インタープリターとコンパイラーに同梱されています)が、言語設計者はそれを主に組み込み言語として使用することを意図しました(したがって、軽量ですべてです)
これはプログラミングの質問ではなく、社会学的な質問です。
私は、ほぼ排他的に汎用スクリプトにLuaを使用しています。しかし、Luaがシェルでより良く動作するように、数百行のコードを書く必要がありました。これには
などのトリックが含まれます- 文字列を引用して、シェルから1つの単語として見えるようにする
- シェル$(command)のようにコマンドの出力をキャプチャする関数を作成する
- Lua posixライブラリを使用してファイルシステムをクロールし、シェルグロビングパターンを展開する関数を作成する
(興味のある方のために、にコードを残しました。 Luaドロップボックス:他にもいくつかのものが含まれています。興味深いものは、おそらく os.quote
、 os.runf
osutil にあります。 >、 os.capture
、そしておそらく os.execve
。グロビングは posixutil.lua
。両方ともLuiz Henrique de Figuereidoの Lua Posixライブラリ。
私にとっては、単純な構文と優れたデータ構造を扱うことができるので、余分な努力は価値があります。他の人にとっては、シェルとのより直接的な接続が望ましい場合があります。
間違いなく標準ライブラリの欠如。また、Python、Perl、またはRubyよりも知名度が低いです。
最近、Windows上のLuaのバッテリーを含むインストールを作成するためのプッシュがありました。結果は、LuaForgeの Lua for Windows プロジェクトにあります。インタープリターと、便利なスクリプトとアプリケーションをすぐに作成して使用できるようにする追加モジュールの大規模なコレクションが含まれています。
現在、さまざまなLinuxディストリビューションにLuaといくつかのモジュールが含まれていること、および今後追加されることを知っています。
メーリングリストで議論中のモジュールライブラリの提案もいくつかありますが、コミュニティはまだ「公式」としてそのライブラリに決着していません。メカニズム。
Luaをスクリプト言語と「メイン」の両方として使用しています。 Cでより適切に実装されたコードを含む1つ以上のDLLによってサポートされる、または特定のプロジェクトに必要な既存のライブラリまたはAPI関数をラップする、典型的なアプリケーションのループ。 IUP や wxLua (wxWindows用のLuaバインディング)、Luaを使用すると、小規模から中規模のGUIアプリケーションを非常に快適に作成できます。
「マーケティング」であるという答えはおそらく正しいライブラリのセットが不足していることもあります。この別のケースを指摘したいと思います:Ruby。 Rubyは、汎用のスクリプト言語になることを目的としています。問題は、Ruby on Railsが非常に人気を博しているため、Railsとは関係のないものを見つけるのが難しくなっていることです。 Luaもこれに苦しんでいるのではないかと心配しています。Luaを使用するいくつかの主要な理由で人気がありますが、そのスティグマから抜け出すことはできません。
標準ライブラリの欠如。期間。ディレクトリ内のすべてのファイルをリストするには、非標準モジュールが必要です。
その理由(POSIXを必要とせず、厳密なANSI移植性を維持)がありますが、その結果、一般的なプログラミングではPythonが好まれます。
Luaは LuaTeX (TeX拡張機能)で埋め込み言語として使用され、急速に人気を集めていますそのため、TeX開発者の間で。 TeX Liveディストリビューションの一部のユーティリティのスクリプト言語として使用されます。これは、すべてのプラットフォームで利用可能な luatex
バイナリがあり、Luaインタプリタとしても使用できるためです。追加されたいくつかの重要なモジュール– slnunicode、luafilesystemなど)これは、以前の追加のUnixスクリプトツール(ActivePerlなど)に依存していたWindowsインストールにとって非常に重要です。
それは確かに非常に特別な分野です:-)しかし、ゲームとはまったく無関係です!
Luaを簡単に埋め込むには、依存関係が少なく、小さくなければなりません。そのため、汎用スクリプト言語としてはあまり適していません。汎用スクリプト言語として使用するには、多くの標準ライブラリが必要だからです。しかし、Luaに多くの標準ライブラリがある場合、(依存関係とメモリフットプリントのために)埋め込みが難しくなります。