中语言计算技术研究与发展联盟
舒生羽 wzyorg@gmail.com
中语言的数组在语义上完全继承C/C++内对数组的定义,并且自然的获得了GCC对于数组的扩充特性,比如在涉入数组时可进行边界检查的选项,以及各种灵活的初始式。
然而中语言在数组定义的形式上有着根本区别,并由此带来观念上的根本变化。对于C/C++里面的
int a[10];
中语言里面等价表述是:
A: <10, 元>-阵;
虽然初看这似乎带来很大的复杂性,但是实际应用起来并没那么糟糕,反而在阅读上对于汉语使用者来说非常的流利和顺口(至少我是这么认为的,不知你是否同感),而且在维数上可以扩张,比如“<10, 10,元>-阵”表示的是二维的10*10的矩阵.这里想提示一下读者“<>-”这种记号在中语言里面被普遍应用,用于来表达类似我们在中学学到的形容词等东西,而在程序语义上类似于C++里面的模板(template)。我们将在后续的介绍里面深入讲述这种表示,那时你将见证到汉语在程序设计内的强大表达能力。
中语言的过策反复将给数组这种数据类型的处理提供了很大方便。
下面的例子程序所完成的计算是计算一个3*3矩阵的平方。
来 朴库.标准进出; 打印矩阵: (数阵: <3, 3, 元>-阵)->()= { 打印文套("[3*3]矩阵\n"); 过(横@[0 : 2]) { 过(竖@[0 : 2]) 打印文套("%d ", 数阵[横][竖]); 打印字('\n'); } } 道: ()->(元)= { 九宫阵: <3, 3, 元>-阵= {{2, 9, 4}, {3, 5, 7}, {6, 1, 8}}; 打印矩阵(九宫阵); //存放对九宫阵施行矩阵自乘变换的结果 果: <3, 3, 元>-阵= {0}; 打印矩阵(果); 过(横@[0 : 2]竖@[0 : 2]索@[0 : 2]) 九宫阵[横][索] * 九宫阵[索][竖] ->+ 果[横][竖]; 打印矩阵(果); 归 0; }
程序的执行结果如下图所示: