web-dev-qa-db-ja.com

Luaは主に確立されたプログラミング言語のアイデアに基づいていますか?

Luaは、埋め込むことができる言語の分野で良い場所を占めています。 Luaの設計の背後にある主要なアイデアは実装者からの新しいアイデアですか、それともLuaは主によく確立されたアイデアのうまく実行された組み合わせですか?

Luaのプロパティと機能を他のPLと比較することは特に適切です。

62
Charles Stewart

これは非常に興味深い質問です。私の1日の仕事はプログラミング言語を学ぶことであり、Luaは注意深い研究に報いる。他のごく少数の言語(おそらくIconとCLU)についてはそう言えるでしょう。 Luaを研究する価値があるのは、個々の機能ではなく、全体として言語であることに注意してください。

これは、実装者が持っていた興味深い新しいアイデアの結果ですか、それとも、確立されたアイデアの適切な実行の結果ですか?

どちらも。詳細については、この質問への回答の最良のソースは、論文 The Evolution of Lua であり、プログラミング言語の歴史に関する第3回ACMシンポジウム。しかし、私はいくつかのコメントを追加します。

  • Luaチームは、only可変で非アトミックタイプのデータとしてLuaテーブルを使用することを考案しました。彼らはCLUの開発に触発され、AwkとIconでの同様の作業を知っていたと思いますが、この程度の改良はLuaチームの重要な貢献です。

    テーブルには、Luaチームが開発した非常に効率的な実装もあります。

  • Luaの関数型機能は、Schemeと同じセマンティクスを持っていますが、Luaにはファーストクラス関数の一意の実装があります。これは、Journal of Functional Programming

  • 埋め込み用のAPIは、長年にわたって大幅に改良されてきました。その主な特徴は、ユーザー定義の抽象型が完全に埋め込みに参加できることです。これは、たとえばLua APIをTcl APIよりも優れたものにするプロパティです。 Lua APIは、バージョン2.5での最初の公開以降を含め、長年にわたって多くの改良が行われてきました。 Luaの設計者は、ここで多大な信用を得るに値します。

  • ガベージコレクション技術は標準です。

  • Luacoroutinesは、いくつかの非常に古いアイデアの新しい見方を表しています。新しいテイクはACMTransactions on Programming Languages and Systemsで公開する価値があると考えられていたので、Luaチームは独創性の功績を認めたと思います。

  • Luaメタテーブルは、Common LISPメタオブジェクトプロトコルに関連しています。

Luaの成功は、Luaチームの長所のユニークな組み合わせによるものだと思います。

  • HOPLペーパー を読むと、Luaチームはプログラミング言語の多くの開発をよく知っており、最良のアイデアの中から選択することができたことがわかります。人気のあるスクリプト言語のほとんどの設計者はアマチュアであり、あまりよく知らされていません。

  • Luaは見事に設計されているので、ピースは非常にうまくフィットし、優れた出力重量比が得られます。これは、時間の経過とともに多くの改良が行われた結果であり、PUC-RioはLuaチームが膨大な数の論文を精査する代わりに、言語の設計と実装に取り​​組むことを望んでいました。この仕事は北米の大学ではできなかったでしょう。

  • Luaは見事に設計されています。実装は驚くほど良いです。これは、部分的には優れたエンジニアによるすばらしい作業であり、部分的には15年間にわたって設計を改訂し続ける機会です。

chooseingrefiningの難しさを過小評価しないよう読者にお願いして締めくくります-)一貫した全体を形成するための確立されたアイデア。これは非常に困難な作業であり、実際に認識されることはほとんどありません。

134
Norman Ramsey

Lua は関数型プログラミングをサポートし、柔軟で強力な Prototype-based プログラミングスタイルに基づいています。

IMOそれは興味深い言語です。

プロトタイプの継承について考えを読みたい場合は、
Steve Yeggeの The Universal Design Pattern ブログの投稿を読んでください。

7

Luaは小さく、ANSI Cではコード全体が数万行にすぎません(Pythonのコード行は10倍以上あります)。

Luaは非常に安定しています。つまり、言語は現在修正されています。

Luaのエンジニアリングは優れています。そのコードは読みやすく、ハッキングも簡単です。 (また小さいから)

そのライセンスにより、あなたは何でも好きなことができます。

LuaでのC拡張機能の記述は、他の言語よりも簡単だとPythonは言います。

4
Yin Zhu

ラムダザアルティメットストーリー Small is Beautiful:the the design of Lua が、同じ名前のスタンフォードでのロバートイエルサリムシの最近の講演について議論しています。現在の議論は、テーブルを唯一のコンテナデータ構造として持つメリットに焦点を当てています。これまでのところ、LuaのCインターフェースを扱った講演の他の部分についてはほとんど何も言われていません。

2
Charles Stewart

Luaは比較的シンプルで実用的だからです。次のオペレーティングシステムであるCrysis 3やSAPクローンを構築するための言語ではありませんが、機能することで、スクリプト言語として機能します。

0