三星|巴西的编程语言都占领全世界了,中国怎么就不行呢?

三星|巴西的编程语言都占领全世界了,中国怎么就不行呢?

文章图片

三星|巴西的编程语言都占领全世界了,中国怎么就不行呢?

文章图片

三星|巴西的编程语言都占领全世界了,中国怎么就不行呢?

文章图片

三星|巴西的编程语言都占领全世界了,中国怎么就不行呢?

如果看一看主流的编程语言 , 都是由发达国家的程序员创造的 。
C、C++、C#、Java、JavaScript、Go、Rust、PHP诞生于美国;Python诞生于欧洲 。
但是Lua是个例外 , 它出生在遥远南半球、桑巴足球的国度:巴西 。
巴西是个发展中国家 , 经济水平不高 , IT界也不发达 , 但是却创造了一个世界流行的编程语言 , 它到底是怎么做到的?
1编程界有个笑话:骆驼是委员会设计的马 。
笑话讽刺是由委员会设计出的编程语言都不怎么样 , 比如Algol 68 PL/I, Ada都没有达到最初的期望 。
Lua也是一个委员会设计的 , 但是 , 这个委员会非常小 , 只有三个人 , 他们都是里约热内卢天主教大学的同事:Roberto Ierusalimschy Luiz Henrique de Figueiredo 和Waldemar Celes 。

里约热内卢天主教大学和巴西石油公司有一些合作项目 , 需要一个领域特定语言(DSL)来处理数据输入和数据配置 。
三人团队相继创造了DEL SOL这两门语言 , 并且在石油公司的应用中取得了成功 。

随着需求的越来越复杂 , 需要一门真正的脚本语言 , 可以赋值 , 有逻辑控制 , 函数 , 可以嵌入到巴西石油公司的应用中使用 。
什么叫嵌入到别的应用中呢?
举个例子 , 你用C语言写了一个应用 , 其中有一段复杂的逻辑 , 是计算员工工资的 , 但是老板希望在应用发布之后还可以修改工资 , 那么这段薪水计算逻辑就可以用Lua语言来写 , 然后让C语言应用去调用 。
每次老板想改变工资计算逻辑 , 你新写一段Lua脚本 , 发布一下就可以了 , 整个应用不需要改动 。
这样是不是挺爽?
当时市面上用作脚本编程有这些:
Perl :过于复杂 , 不容易嵌入到别的应用中
Python :1.0版还没有发布 , 也不容易嵌入
Tcl:支持嵌入 , 但是语法对于非程序员太复杂了
于是三人决定 , 干脆创造一个新的编程语言吧!
1993年 , Lua正式诞生!

Lua短小精悍 , 直到Lua5.3也只有不到1万行C代码!包含了I/O功能的二进制包也只有200多K 。 (顺便说一句 , 想深入学习C语言和语言设计的 , Lua是个极好的范例)

它移植性很好 , 有着清晰而简单的语法 , 是一个非常优秀的、可扩展的嵌入式语言 。
Lua虽然在巴西石油公司用得不错 , 但是外边就默默无闻了 。
在巴西本地 , 很少有程序员对Lua感兴趣 , 无论是偏见还是实用主义 , 大家都倾向于向外看 , 寻求世界上最流行的技术来解决问题 。
这是不是和现在的中国很像?
Lua这个巴西本地诞生的编程语言未来在哪里呢?
2Lua团队做出了一个“艰难”的决定 , 暂时“切断”和本地的联系 , 走向全球 。
他们说:“Lua 必须在国外取得成功才能在国内获得认可 。 ”
他们决定用英语来编写Lua的文档 , 而不是巴西的官方语言葡萄牙语 。
就连《Programming in Lua》这样的书 , 也只有英文版 。
1996年 , Lua团队开始向IT界最核心的区域——美国——进发 , 他们先后在美国的《Software: Practice & Experience》杂志和《Dr. Dobb’s Journal》杂志发表文章 , 介绍Lua这门可扩展的嵌入式语言 。

恰恰是《Dr. Dobb’s Journal》这本深受程序员喜爱的杂志的报道 , 彻底改变了Lua的命运 。
时任《冥界狂想曲》这款游戏的首席程序员Bret正陷于苦闷当中 。

他希望有一种自定义的脚本语言 , 把游戏引擎和逻辑给分离开 , 这样就可以轻松地编写游戏逻辑:
actor guybrush walk-to banana-treewait-for-actoractor guybrush say-line “Mmm bananas...”actor guybrush face-cameraactor guybrush say-line “Wish I had a banana-picker”

但是 , 自己公司的脚本语言SCUMM却不够用 , 苦恼之时 , 同事给他递来一期《Dr. Dobb’s Journal》杂志 上面有正是关于Lua的介绍 。
Bret看后 , 激动万分 , 如获至宝 , 立刻给Lua开发团队发了一封邮件 , 大意如下: