Luaは、エレガントに設計され、軽量で、拡張が容易な組み込み用スクリプト言語です。Luaを使ったことがある人なら誰でも、「軽量」「高速」「組み込み可能」といったキーワードを連想することでしょう。
言語の人気は言語そのものに依存するのではなく、むしろ業界に依存します。近年では、Luaの人気は、それが影響によってもたらされたWorld of Warcraftの使用のために主に、認めざるを得ないが、これは人々がそれを使用する価値があると思うようにLua自体の特性のいくつかない場合は、それを使用しての前提に到達するためにのみであり、Luaは今、とてもホットを持っていないでしょう。
Luaがゲーム分野や組み込み機器でこれほど支持されるようになった主な理由は3つあると思います:
まず、Luaは十分に小さいです。誰かが、小さいからこそ使えると言いましたか?Luaの公式サイトが公開しているバージョン、例えばLua5.1では、Luaのコア全体といくつかの基本的なライブラリが実装されており、実装全体のコード量はわずか2万行以上と簡潔です。LuaのソースコードはC言語で実装されており、C++のプログラムに簡単に組み込むことができます。 Luaのソースコードはサイズが小さいため、自分の必要に応じて調整することができ、自分のプログラムの要件を満たすことができます。また、ソースコードを読むと、その言語が実際に内部で何をしているのかが明確に理解でき、その言語を導入したために発生する可能性のある予期せぬバグを心配する必要がありません。ソースコードは
もうひとつの重要な理由は、Luaがバージョン5.0からMITプロトコルで配布されていることで、著作権の問題を気にすることなく、ほとんどの人が自分の製品にLuaを組み込むことができることだと思います。それを使うことについて法的な論争があるかどうか、それを変更する自由がそれほどあるかどうかということも、責任あるプログラマが直面しなければならない問題です。
Luaがこれほど多くの開発者に受け入れられているのは当然のことで、プログラミング言語が人気を得るための最も重要な基準の1つは、自分の望む目標を達成するためにその言語を使用できるかどうかです。プログラミング言語がユーザーに愛されるための最も重要な基準の1つは、自分の望む目標を達成するためにその言語を使用できるかどうかです。Luaのサイズが小さく、コードが簡潔であることは、他の巨大なスクリプト言語と比較して大きなアドバンテージとなります。その言語が不必要な冗長構造を排除しているかどうか、すっきりしているかどうか、KISS、これは非常に重要です。また、モジュールの内部実装が論理的に直交しているかどうか、最も単純に達しているかどうか。論理が直交しているかどうか、最も単純に達しているかどうか。私はプログラマーとして、自分が使う言語が、互換性、独立性、完全性を満たす、数学の公理系のように完璧であってほしいと願っています。もちろん、Luaがこの基準を満たしているとは言いませんし、私が使ったことのある言語の中でそのようなものを見つけることはできませんが、Luaのコンパクトなソースコードは目を見張るものがあります。
今、Luaが最も熱いのはやはりゲーム開発だと言わざるを得ません。World of Warcraft』や『Crysis』といったPCの名作に加え、『Angry Birds』やオープンソース版で人気の『Flappy Bird』でも、ロジックからUIまでLuaをスクリプトとして使用しています。私自身のプロジェクトでも、サーバーサイドのロジックとして、クライアントサイドのUI処理として、Luaを多用していますが、Luaの利点は明らかで、その様々な言語機能は随所で驚かされます。Luaで最も重要なデータ型であるテーブル型も、使っていて宝物を発見したような気分になります。 テーブルの実装は配列とハッシュリストの組み合わせを採用しており、クエリや挿入の効率は満足のいくものですが、少なくとも一般的なロジックの問題を扱う上では、テーブルの記述能力と性能は非常に強力です。動的に型付けされる言語として、Luaのgc処理と弱い参照メカニズムも人々を感動させます。動的型付け言語として、Luaのgc処理と弱い参照のメカニズムも印象的です。オブジェクト指向の面では、Lua独自のメカニズムがオブジェクト指向プログラミングを実現する様々な方法を提供します。また、Luaのコプロセッシングメカニズムもあり、並列ロジックを書くのに非常に便利です。非同期のコールバックを持つロジックを同期的な方法で書くことができ、学習に費やす時間を短縮し、使用コストを下げることができます。また、レジスタベースの仮想マシンは、もともとLuaの作者による試みでしたが、結果的に成功しました。Luaは他にも、優れたC APIなど様々な特徴を持っていますので、今後も様々な機器や分野で広く使われていくと思います。
前回の話は、実際には、様々な資料や業界のニュースやブログで見ることができ、私は場当たり的ではなかったことを示すために、Luaの将来についての私の考えの次のビット。
3つ目の考慮点は、Luaが広く使われ、ユーザ数が比較的少ない場合、Luaの作者は、大規模なパニックや不満を引き起こすことなく、言語に大幅な変更を加えることができ、各ユーザは、作者に自分の意見や提案を提出することができます。ちょうど、アメリカのテレビ番組のように、各エピソードは異なる脚本家によって書かれますが、最終的に全体のプロットを把握するのはチーフ脚本家であり、Luaに加えられるすべての変更は、最終的にLuaの作者によって決定され、実装されます。Luaで変更されることはすべて、最終的にはLuaの作者が決定し、実装されるのです。 ユーザ数が少ないうちはこれで良いのですが、ユーザ数が増えてきたときに、この配布方法が現代のオープンソースソフトウェアの開発動向についていけるでしょうか?例えば、Lua5.2とLuaJITの分裂は見ていて痛々しいですし、Luaのバージョン間の非互換性も眠れない原因ですが、いずれ善意で解決されると信じています。
Luaのコアは非常にコンパクトで、強力なスケーラビリティを提供するため、Luaのすべての側面を統一したり、計画することは困難であり、例えば、Luaでオブジェクト指向メソッドの実装など、コードのこれらのスタイルの多くの異なるバージョンが統一することはできません、初心者のLuaになります。これは、Luaは初心者にとってより困難になりますが、もちろん、それはまた、インスピレーションの様々な刺激、結局のところ、言語は活力を持つように開発の途中でなければなりません。
新しい年、Luaはますます使われるようになると思いますし、ウェアラブルデバイスが注目されていることもあり、こうした分野でもLuaが見られるようになるでしょう。もちろん、ゲーム業界では、Luaの本質的なスケーラビリティとパフォーマンスの高い言語特性により、C++で書かれたゲームプログラムがスクリプト言語を選択することが最優先されており、この傾向は今年も変わらないはずですし、モバイルゲームの開発が熱を帯びていることから、Luaを使用する人はますます増えていくでしょうし、Luaの作者も、この言語がこれほどまでに注目を浴びる日が来るとは想像できなかったのではないかと思います。Luaの作者も、この言語がこれほど注目される日が来るとは想像していなかったと思います。





