【问题标题】:Is Lua based primarily on well-established programming-language ideas? [closed]Lua 是否主要基于成熟的编程语言理念? [关闭]
【发布时间】:2011-01-07 05:43:28
【问题描述】:

Lua 在可嵌入语言的空间中占有一席之地。 Lua 设计背后的主要想法是来自实施者的新想法,还是 Lua 主要是成熟想法的良好执行组合?

将 Lua 的属性和特性与其他 PL 进行比较是特别合适的。

【问题讨论】:

    标签: lua language-design


    【解决方案1】:

    这是一个非常有趣的问题。我的日常工作是学习编程语言,Lua 会回报认真的学习。我会说很少有其他语言(可能是 Icon 和 CLU)。请注意,语言作为一个整体,而不是单个功能,使 Lua 如此值得研究。

    这是实施者提出有趣的新想法的结果,还是很好地执行成熟想法的结果?

    两者兼而有之。有关详细信息,此问题的最佳答案来源是论文 The Evolution of Lua,该论文发表在第三届 ACM 编程语言历史研讨会上。但是我会添加一些cmets。

    • Lua 团队发明了将 Lua 表用作唯一可变、非原子类型的数据。他们受到 CLU 发展的启发,我相信他们也知道 Awk 和 Icon 中的类似工作,但这种程度的改进是 Lua 团队的重要贡献。

      表也有一个非常有效的实现,它是由 Lua 团队发明的。

    • Lua 的函数特性与 Scheme 的语义相同,但 Lua 有一个独特的一流函数实现,我认为他们应该将其提交到 Journal of Functional Programming em>.

    • 多年来,用于嵌入的 API 得到了极大的改进。它的主要区别特征是用户定义的抽象类型可以完全参与嵌入。例如,这是使 Lua API 优于 Tcl API 的属性。 Lua API 多年来经历了大量的改进,包括自 2.5 版首次发布以来。 Lua 设计者在这里值得称赞。

    • 垃圾收集技术是标准的。

    • Lua 协程代表了对一些非常古老的想法的新看法。新版本被认为值得在 ACM Transactions on Programming Languages and Systems 上发表,所以我再次认为 Lua 团队的原创性值得称赞。

    • Lua 元表与 Common Lisp 元对象协议相关。

    我认为 Lua 的成功源于 Lua 团队的独特优势:

    • 如果您阅读HOPL paper,您会发现 Lua 团队非常了解编程语言的许多发展,并且能够从最好的想法中进行选择。大多数流行脚本语言的设计者都是业余爱好者,而且知识渊博。

    • Lua 的设计非常出色,因此这些部件可以很好地结合在一起,具有出色的功率重量比。这是随着时间的推移进行大量改进的结果,PUC-Rio 愿意让 Lua 团队致力于语言设计和实现,而不是编写大量的论文。这项工作不可能在北美大学完成。

    • Lua 非常设计。实施非常好。这部分是伟大工程师的出色工作,部分是在 15 年内不断修改设计的机会。

    最后,我将要求读者不要低估选择提炼完善的想法以形成一个连贯的整体的难度。这是一项极其艰巨的工作,很少得到应有的认可。

    【讨论】:

    • +1:很好的答案
    • 目前,请参阅lua.org/doc/jucs05.pdf 上的“Lua 5.0 的实现”@ Norman,我们正在研究那篇论文,但 Lua 5.2 现在正在引起我们的注意......
    • 在 LtU 上讨论了 TOPLAS 论文 Revisiting Coroutines,由于某种原因我没有关注:lambda-the-ultimate.org/node/2868
    • 在我对 Lua 的简短研究期间,我读到的关于 Lua 的文章非常精彩、简洁,而且可能是最有启发性的文章。你真的应该把它发表在博客上,这样很多人都会觉得它很有帮助。
    • 天哪,你的日常工作是什么? :-)
    【解决方案2】:

    Lua支持函数式编程,它基于Prototype-based的编程风格,灵活而强大。

    IMO 这是一种有趣的语言。

    如果你想阅读一些关于原型继承的想法,我建议你
    阅读 Steve Yegge 的 The Universal Design Pattern 博客文章。

    【讨论】:

    • 谢谢:这个链接很有趣。 Lua 的工作始于 1993 年,距 Self 发布 3 年后,距 Borning 的“面向对象语言中的类与原型”一文 7 年后。 Lua 是否为基于原型的编程引入了新的东西?
    • @Charles,我只在 Lua 中试验过原型,我真的不知道你的问题的答案。也许其他人可以对此有所了解。
    • 当然。我想不出一种更早得到广泛使用的基于原型的语言,这当然让我很感兴趣。
    【解决方案3】:

    Lua 很小,在 ANSI C 中总代码只有几万行。(Python 的代码行数是它的十倍)。

    Lua 非常稳定,或者说,语言现在已经固定了。

    Lua 具有良好的工程设计。它的代码易于阅读和破解。 (也因为小)

    它的许可证允许您为所欲为。

    用 Lua 编写 C 扩展比 Python 等其他语言更容易。

    【讨论】:

    • 所以这一切都算是好的工程,而不是与语言设计有关?
    • 不,有很多优秀的工程,但正如诺曼指出的那样,有创新的设计决策。阅读 HOPL 论文。
    【解决方案4】:

    有一个 Lambda the Ultimate 故事,Small is Beautiful: the design of Lua,讨论了 Robert Ierusalimschy 最近在斯坦福大学的同名演讲。目前的讨论集中在将表作为唯一的容器数据结构的优点;到目前为止,关于 Lua 的 C 接口的谈话的另一部分几乎没有说什么。

    【讨论】:

      【解决方案5】:

      我认为这是因为 Lua 比较简单实用。它并没有试图成为构建下一个操作系统、孤岛危机 3 或 SAP 克隆的语言,但它所做的事情,它做得很好,即用作脚本语言。

      【讨论】:

        猜你喜欢
        • 2011-09-05
        • 2011-02-04
        • 2010-09-20
        • 2023-04-10
        • 2019-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-19
        相关资源
        最近更新 更多