[1]
语言理想主义者,热爱优雅和简洁。
挑战:设计并实现一种拥有所有功能的小型语言。哦,也许对于一个随意的挑战来说这有点难!
一些历史:我最初接触 Lua 是因为我对虚拟机的兴趣,并且立即将其丢弃,因为它的 VM 是特定于语言的。这完全不是 Lua 的错。然后,当我进行一些脚本编写并第 N 次诅咒 Perl 时(我不是巫师;我只是记不住所有魔法!),我记起了它,并发现它是一门多么可爱的语言。有一段时间,我用 Lua 完成了大部分脚本编写;现在我使用 Python,因为它拥有更丰富的标准库集。我曾使用 Lua 进行可移植编程:我用 Lua 重写了 [GNU Zile],并提倡将其用于 POSIX 编程。
Lua 兴趣
- 编程:我喜欢在 Lua 中进行函数式和面向对象编程的方式。这反映在我的对 SampleCode 的贡献中。我在 Protechnic Exeter(现已倒闭)使用 Lua 进行应用程序开发,在那里我在一个庞大(约 1 MLOC)且古老的 C 应用程序之上编写了一个薄薄的 OO Lua 层(1.5 kLOC),但我最大的 Lua 项目是用 Lua 重写了 GNU Zile(约 6 kLOC,并且还在下降!)。
- 库:我启动了 [stdlib] 项目,该项目以纯 Lua 提供基本数据结构和算法。我实现了现已废弃的位运算库 bitlib(被 Mike Pall 的 [BitOp] 取代,后来被 Lua 自己的位运算符取代)以及广泛使用的正则表达式库绑定 [lrexlib](现在由 Shmuel Zeigerman 维护,并支持 PCRE、POSIX、TRE、GNU 和 Oniguruma 正则表达式库)。我还维护并贡献了各种 C 绑定,包括 [lcurses]、[luaposix],以及 [lua-mode](Emacs 的 Lua 编辑模式)和最小的 Lua-C 绑定 [clue]。
- 补丁:我维护了许多主要是小型且向后兼容的 LuaPowerPatches。我曾经尝试制作一个稳定的 table.sort 函数:我制作了一个归并排序,但更愿意制作一个稳定的快速排序。
- 语言:在这方面,我一直都是嘴上说说(参见 LocalByDefault),没有实际行动。Edgar Toernig 的 Sol(“Lua 的儿子”;似乎已废弃)很有趣;我也喜欢 Lua-in-Lua,正如 [Yueliang] 所实现的那样。
- 移植: 我维护了一个 [EPOC 移植版](目前版本为 5.1.4),它以 DLL 的形式提供,并附带 OPX,因此可以从 C/C++ 和 OPL 中使用。我还为 Symbian 做了一些 UIQ 版本的工作,但由于它们不支持 OPL,所以进展不大。我曾经维护过一个 Linux RPM(专门针对 Fedora),现在由 Andre Costa 维护,我还做了一个早期的 RISC OS 移植版,但后来让给了更有活力和能力的 GavinWraith。
- 感谢您提供的示例代码,其中包含一些非常好的材料。getopt 真是个大块头!:-) --NickTrout
- 我同意!任何我能看到的 lua 代码都很棒,但这简直太棒了。--JamesHearn
- 我同意 Perl 是一种恐怖的语言。我想你一定遇到过 Python 吧?我只是想知道你为什么选择 Lua 而不是 Python,尤其是在系统/解析脚本方面。-- 你有函数式编程的经验,我没有。学习哪种函数式编程语言可以让你对它们有所了解?也许应该有一个 HowLuaComparesWithOtherLanguages? 页面?有时,看到功能比较会很有帮助。它还会促使人们尝试在 Lua 中实现这些功能。嗯,我之所以在这里提出建议,是因为我认为如果你愿意,你更有资格创建这样的页面 ;-) --NickTrout
- 我终于在 2010 年开始学习一些 Python,并为自己过去几年没有学习而感到后悔(我清楚地记得大约 2000 年的时候,我在一家书店里拿着一本 Python 书,经过几分钟的考虑后,我又把它放回了书架上...)。OCaml [2] 可能是学习函数式编程的最佳语言,因为它将丰富的语言与优秀的编译器结合在一起。Haskell [3] 更加纯粹地遵循函数式编程,具有惰性求值和适当的函数式 I/O,但理解它需要更多时间。--ReubenThomas
- Python 是一种值得学习的语言。它很容易学习(我想你只需要一个下午的时间就能学会),并且支持多种编程风格,包括函数式编程。遗憾的是,它的 lambda 在语法和变量访问方面受到限制(记住只读上值?)。Python 的库很多,但语言本身却很小。它有足够新颖的功能,值得语言收藏家收藏。--DavidJones
最近更改 · 偏好设置
编辑 · 历史
最后编辑于 2020 年 7 月 12 日凌晨 12:00 GMT (差异)