Lua主要基于成熟的编程语言思想吗?

Lua主要基于成熟的编程语言思想吗?,lua,language-design,Lua,Language Design,Lua在可以嵌入的语言空间中占据了很好的位置。Lua设计背后的主要思想是来自实施者的新思想,还是Lua主要是一个执行良好的成熟思想的组合 将Lua的属性和功能与其他PLs进行比较尤其合适。Lua很小,ANSI C中的代码总数只有数万行(Python的代码行数是其他PLs的十倍) Lua非常稳定,或者说,语言现在已经固定了 Lua有很好的工程学。它的代码易于阅读和破解。(也因为小) 它的许可证允许你做任何你想做的事 用Lua编写C扩展比其他语言更容易,比如Python。我认为这是因为Lua相对简单

Lua在可以嵌入的语言空间中占据了很好的位置。Lua设计背后的主要思想是来自实施者的新思想,还是Lua主要是一个执行良好的成熟思想的组合


将Lua的属性和功能与其他PLs进行比较尤其合适。

Lua很小,ANSI C中的代码总数只有数万行(Python的代码行数是其他PLs的十倍)

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

Lua有很好的工程学。它的代码易于阅读和破解。(也因为小)

它的许可证允许你做任何你想做的事


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

我认为这是因为Lua相对简单实用。它并不试图成为构建下一个操作系统Crysis 3或SAP克隆的语言,但它所做的是,它做得很好,即作为脚本语言。

支持函数式编程,它基于灵活而强大的编程风格

在我看来,这是一门有趣的语言

如果您想了解一些关于原型继承的想法,我建议您

阅读Steve Yegge的博客文章。

这是一个非常有趣的问题。我的日常工作是学习编程语言,Lua会报答我的认真学习。我想说的是很少有其他语言(可能是Icon和CLU)。请注意,Lua之所以值得研究,是因为它是一种整体语言,而不是个人特征

这是实施者提出的有趣的新想法的结果,还是良好执行既定想法的结果

两者都有。关于细节,你最好的答案来源是这篇论文,它出现在第三届ACM编程语言历史研讨会上。但我要补充几点意见

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

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

  • Lua的函数特性与Scheme具有相同的语义,但Lua具有一类函数的独特实现,我认为它们应该提交到函数编程杂志上发表

  • 多年来,用于嵌入的API得到了极大的改进。它的主要区别在于,用户定义的抽象类型可以完全参与嵌入。例如,这就是luaapi优于tclapi的特性。LuaAPI在过去的几年中经历了大量的改进,包括自其在2.5版上首次发布以来。Lua的设计师们在这里值得高度赞扬

  • 垃圾收集技术是标准的

  • Lua协同程序代表了对一些非常古老的想法的新接受。新的成果被认为是值得在编程语言和系统的ACM交易中发表的,所以我再次认为Lua团队的独创性得到了认可

  • Lua元表与公共Lisp元对象协议相关

我认为Lua的成功得益于Lua团队的独特优势组合:

  • 如果您阅读了,您将看到Lua团队非常了解编程语言的许多发展,并且能够从最佳想法中进行选择。大多数流行脚本语言的设计者都是业余爱好者,对信息的了解也不多

  • Lua设计精良,使各部件非常完美地贴合在一起,具有极佳的功率重量比。这是随着时间的推移进行了大量改进的结果,PUC Rio愿意Lua团队致力于语言设计和实现,而不是苦读大量的论文。这项工作在北美大学是不可能完成的

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


最后,我想请读者不要低估选择和提炼成熟思想以形成一个连贯的整体的难度。这是一项极其困难的工作,很少有人认识到这一点。

有一个关于Lambda the Ultimate的故事,讨论Robert Ierusalimschy最近在斯坦福大学的同名演讲。目前的讨论集中在表作为唯一容器数据结构的优点上;到目前为止,关于Lua的C接口的讨论还很少

所以这些都算是好的工程,而不是语言设计?不,有很多好的工程,但也有创新的设计决策,正如诺曼所指出的。阅读霍普的论文。谢谢:链接很有趣。Lua的研究始于1993年,在Self发布3年后,以及Borning的“面向对象语言中的类与原型”发布7年后。Lua引入了新的原型编程吗?@Charles,我只在Lua中尝试过原型,我真的不知道你问题的答案。也许其他人可以在上面遮光。当然可以。我当然感兴趣的是,我想不出一种早期的基于原型的语言得到了广泛的使用。+1:目前回答得很好,请参阅“Lua 5.0的实现”,我们正在写那篇论文,Norman,但是Lua 5.2现在正引起我们的注意……TOPLAS的论文《重温协同程序》,在LtU上讨论过,因为某种原因我没有注意到:太棒了,