
国際会議Lua in Moscow 2017は、3月の第1日曜日にMail.Ruグループオフィスで開催され、ロベルトエルサレム語の著者による講演と、LuaとLuaJITに関する最高の国内外の専門家による講演が含まれます。
Luaは、コンピューターゲーム業界だけでなく、Redis、nginx、Tarantool、OpenRestyなどのWebプログラミングツールの組み込み拡張言語としても使用されている独自のプログラミング言語です。 Luaは、ビッグデータ分析、科学計算にも使用されます。 多くのルーター、プリンター、およびその他の同様のデバイスにはLuaがあります。
2014年に、Lua Workshopプログラミング言語に関する8回目の年次会議を開催しました。これは、すべての年の参加者数の点で最大です。 それ以来、私たちはIT会議でLuaプログラミング言語を忘れず、mitapとストリームを開催しました。 そして最後に、今年、言語の作者に個人的に質問したり、最高のプログラマーと経験を交換したり、もちろんLuaとLuaJITを使用したベストプラクティスに関するレポートを聞くことができます。

まだLuaで書いていない場合でも、カンファレンスは新しい興味深いものに目を向けるでしょう。


一流の関数(クロージャー、ラムダ、匿名関数として知られる)は関数型言語の定性的な機能ですが、その概念は命令型言語でも便利です。
ただし、ほとんどの命令型言語では、関数をファーストクラスの値として使用するのは簡単なことではなく、経験豊富なプログラマーが使用します。 対照的に、Luaでは、最初のクラスのユーザー定義関数が言語の構成要素です。 Luaプログラマーは、例外処理、モジュール定義、オブジェクト指向プログラミング、イテレーターなどのルーチンを作成するために、その機能の多様なプロパティから常に恩恵を受けています。 さらに、ファーストクラスの関数は、LuaとCの間のAPIで中心的な役割を果たします。
このレポートでは、ファーストクラスの機能のメカニズムがLuaの設計にどのように影響したか、その実装を簡単に見ていきます。

従来のLuaインタープリター(別名PUC-Rio Lua)は非常に高速であり、Lua自体は他のシステムに簡単に統合できる言語として設計されています。 ただし、言語の代替実装が依然として必要な場合があります。たとえば、厳しいビジネスパフォーマンス要件がある場合があります。 一見すると、Luaエコシステムは独自の言語実装ツールを提供します。ライブラリやAPIを含む言語を説明するマニュアルがあります。 適合性テストのパッケージもあります(公式とサードパーティの両方)。
しかし、Luaの独自の実装に取り組んでいる間に、このレポートで議論したいいくつかの問題に遭遇しました。 特に:
- マニュアルの解釈と公式テストスイートとの統合。
- 利用可能な多数の中から検証テストパッケージを選択します。
- APIを標準のLuaライブラリに準拠させる。

TarantoolはDBMSであり、負荷の高いアプリケーションのサーバーであるため、ボード上のプログラミング言語に特別な要求があります。 信頼性とパフォーマンスが主な値ですが、使いやすさを犠牲にすることなくそれらを持ちたいです。
Lua、またはむしろLuaJIT 2.1は現在、アプリケーションを記述するための主要な言語ですが、最近、Rust、Swift、C、C ++のサポートも開始しました。 Luaを「活用」するというユニークな経験があります。 開発と運用の両方で発生するTarantoolユーザーのインシデントとクラッシュを常に分析しています。 その結果、バックエンドの理想的な言語に必要なものを十分に把握できます。
したがって、私のレポートは、「理想的な」言語の仮想要件に専念します。
- 信頼性:言語のプログラムは、いかなる場合でもホストプロセスを完了すべきではありません。
- 予測可能性:ガベージコレクションと言語ランタイムは、開発者にとって予測可能である必要があります。
- セキュリティ-言語構文は実行時に安全でなければなりません。 これは、宣言されていない変数の使用と型システムの両方、特に、オーバーフローまたは0による除算時の動作の両方に適用されます。
Luaはそのような言語になれますか?

LuaJITは驚くほどの速度でLuaを実行できますが、それが何をするのか、いつ実行するのかを理解するのが難しい場合がよくあります。 これは神話とカーゴカルトの作成につながります。 Loomを視覚化および学習ツールとして使用して、Luaソースコードから最終的に実行可能なマシンコードへのステップバイステップの旅を紹介します。


Google Analytics、Yandex.Metrikaなど、オンライン広告の有効性を分析するための多くのツールがあります。コンテキスト広告を管理および自動化するためのツールは少なくありません。Rブローカー、K50、Alyticsなど。 どのような場合に独自のツールキットを開発するのが理にかなっていますか? このツールキットはどのようなものか、どのような順序で開発されるべきか、どのようなサードパーティの開発が役立つか? 著者は、これらの質問や他の質問に自分の経験の例で答えようとします。

Luaは素晴らしい言語であり、複雑なことを非常に簡単に行うことができます。 クロスプラットフォームゲームエンジンでは、1つのLua関数が何百行ものネイティブコード(C ++ / Java / Obj-C)を隠すことができるため、ゲーム開発者は最終製品に集中できます。
このレポートでは、Corona SDKゲームエンジンのネイティブプラグインを作成する方法、異なるプラットフォームでの同じ実装の異なる実装がLua側で美しい均一なAPIになる方法を示します。

IPONWEBは、オンライン広告市場向けのプラットフォームソリューションを開発し、SaaSモデルに従って顧客に提供しています。 ビジネスロジックはLua言語で実装されているため、IPONWEBはLua開発者を探して採用しています。
問題:Luaキーワードを使用してHH.ruで求人を検索すると、約700人の履歴書が作成されます。 キーワードを使用した結果と比較します。
- Perl:9000の再開;
- Python:14,000回の履歴書
- PHP:55,000回の履歴書。
Luaでの開発経験がある労働市場には、ほとんど開発者がいません。 IPONWEBのビジネスは近年非常に活発に成長しており、企業はより多くのLua開発者を雇う必要があります。 どうする? 仕事と職業の成長に理想的な条件を作成します。 これをどうやってやるの? これが私のプレゼンテーションになります。

2017年モスクワのLuaでお待ちしています! 入場は無料です。 登録が必要です。 住所:Mail.Ru Groupのオフィス、レニングラードスキーpr。、39、p。79。