鲁班编程语言

 

黄晓川

 

2005.8

 

 

 


          

 

1. 什么是鲁班... 4

2. 脚本鲁班... 6

2.1 第一个鲁班程序... 6

2.2 鲁班脚本基本结构... 6

2.3 常数, 变量和表达式... 7

2.4 鲁班顺序执行语句... 8

2.5 鲁班数据类型... 9

2.5.1 整数和双精度浮点数... 9

2.5.2 逻辑类型... 9

2.5.3 字符类型... 10

2.5.4 字串类型... 10

2.5.5 数组,字典和集合... 11

2.6 鲁班数据类型通用操作... 12

2.6.1 类算术操作... 12

2.6.2 枚举循环语句(foreach) 14

2.6.3 通用成员函数... 14

2.7 空值null和错误类型error 15

2.8 高级鲁班脚本技术: 多线程并行及协调... 15

2.9 线程陷阱举例... 16

2.10 鲁班简单的世界: 一切都是对象... 17

3. 鲁班部件入门... 18

3.1 鲁班部件构造... 18

3.2鲁班部件的输入和输出属性... 19

3.3 鲁班部件的多种用法... 20

3.4 鲁班的传值调用规则... 23

3.5 鲁班脚本程序和鲁班部件定义程序... 23

4. 鲁班部件组合入门... 24

4.1 简单组合举例... 24

4.2 组合单元详述... 25

4.2.1 不定型单元... 25

4.2.2 定型单元... 26

4.3 组合部件内部执行顺序... 27

4.4 数据流定义规则... 29

4.4.1能改变自己不能改变外界... 29

4.4.2 数据流不能循环... 30

4.5 过程与组合的选择... 30

4.6 部件界面继承和异步单元... 31

5. 鲁班部件界面定义及继承详述... 32

4.1 界面属性的流向和读写权限... 32

9. 输入输出对象类型及部件... 33

9.1 终端, 文件和网络SOCKET. 33

9.2 文件读写举例... 34

9.3 网络读写举例... 35

9.4 标准屏幕打印部件: std::println  std::print 36

9.5  标准对象恢复部件std::des. 36

12. 鲁班命令行解释器使用说明... 37

12.1 运行鲁班程序文件... 37

12.2 交互式执行鲁班脚本或部件定义程序... 38

12.3 其他命令行参数... 39


1. 什么是鲁班

 

Windows were shakin' all night in my dreams

Everything was exactly the way  it seems

-         Highlands, Bob Dylan

 

鲁班是一个面向部件的编程语言. 鲁班也是一个整合语言或者叫脚本语言.鲁班语言中的很多构筑和搭积木,做家具,造房子非常相似. 所以作者把这个新语言命名为鲁班, 以凸显鲁班建筑工艺和鲁班语言特色的异曲同工之处. 也算是对自己的文化渊源的一种反映和尊重.

有的朋友可能说, 现在脚本语言已经很多, 我们真的需要另一种脚本语言吗? 鲁班的作者确实对脚本语言非常推崇. 因为容易上手, 非专业人士都可以学会. 然而从实践中作者发现, 现有的脚本语言有一个有一个很大的弱点, 就是没有一个适合的部件模型(Component Model). 就象在沙子上做东西, 容易开始, 可做不大. 有朋友可能又指出, 已有面向对象脚本语言, 可用对象模型来组织代码. 对于这点, 作者个人认为, 在脚本语言里构筑对象模型不是脚本语言强项. 因为对象模型对于专业人士都难于把握, 完全超出了一般脚本语言用户的掌握范围. 用脚本语言写对象类型没有优势, 比不过更正式的语言象C++JAVA.

由此来看, 脚本语言要超越写小脚本程序的圈子, 就需要一个适于脚本语言环境的部件模型. 在编程语言光谱上确实存在一个空白地带. 鲁班的发明就是着眼于填补这个空缺.

鲁班首先是一个脚本语言, 易学易用, 无须编译. 而且鲁班是一个更好的脚本语言, 因为它的语法更简洁, 类似于C++/JAVA. 一般编程用户几乎不用学新的东西就可以开始用鲁班写程序.

鲁班超越一般脚本语言之处是鲁班部件模型. 鲁班语言把部件定义为属性构成的对象, 类似于JAVA BEAN的概念. 部件的定义, 归类, 存放及组合是鲁班语言的核心特色. 还有一点和面向对象语言不一样的是, 如果你只是用鲁班写一点小脚本程序, 你可以不用知道什么是鲁班部件. 鲁班把对新用户的要求降到最低.

还有值得一提的是鲁班的部件组合功能. 部件组合是一种全新的编程方法. 传统的编程都是定义代码的执行顺序, 而部件组合定义的是一个模块内部件之间的数据依赖关系, 就象搭积木. 鲁班引进部件组合是因为它简单而直接, 一看即明. 最好的证明是EXCEL. 几乎人人都会用EXCEL. 编写EXCEL实际上就是部件组合. 鲁班是第一个正式支持部件组合的软件编程语言.

鲁班语言是一个以人为中心设计的语言, 希望是更多的人能有效的用计算机做事情, 而且能共享他们的工作成果. 鲁班是一个脚本语言, 可作者希望它能走的更远. 所以也叫它整合语言.

 

顺便说一句, 本书每章开头的引言, 是作者随意摘抄的, 有些是歌词, 有些是有人随意说的话. 和鲁班技术细节没有直接关系. 这些东西很难翻译, 我就不糟蹋别人了. 想看的朋友可以看着玩, 不想看不看就罢了.


2. 脚本鲁班

 

In the beginner’s mind there are many possibilities,

 in the expert’s mind there are few.
- Shunryu Suzuki, Zen Master

 

这一章讲述基本的鲁班顺序执行语句构造, 包括变量, 常数, 表达式和语句. 看完这一章就可以用鲁班写一般的脚本程序了. 已经掌握C++/JAVA的朋友, 用五分钟就可以看完这章. 因为鲁班的语句和表达式和C++/JAVA基本相似, 需要看的只是鲁班扩展和不同的部分. 而那部分也是很简单, 一看即明的.

 

2.1 第一个鲁班程序

学习一个新的语言的最有效的办法莫过于看看程序例子. 好的语言总是以一个世界, 你好程序例子开始. 鲁班也不例外. 下面是鲁班的世界, 你好程序.

 

            Std::println(obj=”Hello, World”);

 

把以上代码敲进一个叫helloworld.lbn的文件里. 然后在你的操作系统命令行敲以下命令.

 

            Mycomputer > one helloworld.lbn

     Hello, world!

 

这个鲁班程序有一点象C”HELLOWORLD”程序. 里面代码做的事就是调用一个叫做std::println的鲁班部件, 调用时把字串”Hello, World”设置到&#