前言:
GMGL语言是目前最为简便快捷的魔法编写语言,其通用性强和新手友好向特点,使得这门语言成为了已知世界当中最合适的魔法编写语言。希望CUMA的同学们在经过不懈努力以后,通过对本门课程的学习,能够具备作为一个魔法师的更强的能力。为这个世界的和平,献出自己的力量。(作者:基陆雅·玛丽安·阿斯拉蒂、赛扬·舍伍德、温蒂·圣·莫达亚纳)
精灵魔法是目前最常见最简单实用的魔法,它的魔法架构语言易学难精,魔法的变化也是层出不穷永无止境。但是精灵魔法无法概括已知世界的一切魔法,当然也无法跨种族地使用。即便是曾经在第一次最终战争当中与精灵同为一个阵营的人类,也不能对精灵魔法灵活自如地应用。异族施法的高精神力消耗、魔法易崩溃等缺点,已经越来越明显,除了精灵本身以外的种族,必须找到另一种更适合自己的通用型魔法而不可以继续在精灵魔法这条路上越走越远。而这一种通用型魔法,就是我们曾经提到过的类魔法。
定义:
类魔法是一切超自然现象的统称,精灵魔法在广义上而言,是类魔法的一种特殊情况。
为了了解、使用、研究类魔法,我们提出一种全新的语言,GMGL(General Magic
Guiding Language通用魔法引导语言)。这种语言比魔法架构语言更加快捷方便,让魔法师的施法变得更加安全、稳定和高效。
相比于魔法架构语言基于文字、表达式描述的特点,GMGL是基于文字、函数、表达式描述的。这就是说,在某些复杂魔法发动的时候,GMGL可以简洁明了地准确描述这个魔法而不用担心出现混沌系魔法或者超出临界时间而导致精神力广播过载这样的悲剧。因为GMGL比起魔法架构语言而言,增加了时间可控性。
在GMGL中,Bn mp语句以Yn表示,Bn Mu(An)以Xn表示,函数关系以Fn表示,并且要区分大小写。
GMGL基本结构:
1、库函数
2、主函数
3、子函数
库函数是由舍伍德实验室在数学上研究和定义出来的函数组成,这些函数以库函数的形势保存在GMGL编写环境当中,以便GMGL识别这些函数。
主函数是负责魔法的发动,子函数是通过被主函数不断调用来完成LW、EF、SP、AX的工作,所以运行模式上而言,GMGL和魔法架构语言是一样的。
GMGL可用语言:
任何数学语言都是可以被GMGL识别的,而已知世界的函数需要舍伍德实验室带领数学家们持续研究和发现,GMGL会同步更新可识别函数。
任何非数学语言都是不可被GMGL识别的,GMGL不会开发出基于文字的编写环境。
魔法架构语言编写的魔法,只能先通过GMGL环境转换成以子函数存在的形势被调用,而且魔法架构语言编写的魔法必须拆分成LW、EF、SP、AX这4部分,然后才能分别被转译为GMGL语言所编写的子函数。
GMGL的兼容性差是最大的缺点,魔法架构语言编写的魔法不能直接放入GMGL环境中,它们无法被识别或者正确发动。
GMGL时间函数:
凡是GMGL编写的魔法,必定会有某些参数Xn会影响施法时间,施法时间T=Fn(Xn)。当T值达到临界时间附近的时候,中断函数就会以最高优先级中断的方式进入到主函数当中,将主函数直接跳转到结束部分,从而终止施法。这是GMGL相比于魔法架构语言而言最大的优点之一,它直接保证了魔法师的生命安全。
此外,GMGL允许子函数共用。当编写了一个子函数以后,不论是记录在实际媒介还是抽象媒介上,这个子函数可以被施法者同时在好几个他所写的主函数中调用,也就是所谓的多重施法。如果保存妥当的话,这些子函数是可以多次重复使用的,比起魔法架构语言的一次性而言,这是GMGL的另一个优点,可重复使用性。
主函数编写格式:
magic Yn=Fn(Xn); 魔法元素引导
use stdio;
使用库函数
entity Xn is 定义实体
port(X1,X2,……,Xn);
穷举所需实体,此处可以定性描述所需的那一类实体
end Xn;
结束实体定义
architecture Fn of Yn is 定义主函数
…… 子函数调用
End Fn;
结束主函数定义,发动魔法
其中,子函数的编写是施法者事先完成的,只要承载子函数的媒介在施法者身边充分近的地方就可以进行调用。一般,为了施法更加方便、稳定、高效,施法者通常采用记忆的方式构筑主函数而常用子函数则是以笔记本记录下来妥善保存,这些笔记本就是他们的魔法书。魔法师是不怕魔法书被盗取的,因为非本人编写的魔法是无法在GMGL环境下发动的,这也是GMGL编写魔法的好处,保密性。不过作为熟练的魔法师而言,还是不希望自己的魔法被别人抄袭的。
子函数编写格式:
void yn=fn(xn); 子函数参数传递
begin
…… 子函数定义
end;
return;
子函数返回主函数
各种数学表达式就在子函数中出现,对参数xn以映射方式fn进行处理,随后赋值给因变量yn。这里的xn来自于主函数的Xn,而主函数的Yn将得到子函数中yn的数值。不同的运算方式和数值大小就代表了对应魔法发动以后的效果、属性、作用范围等要素。
库函数编写格式:
set up stdio;
y1=f1(x)=cos(x);
y2=f2(x)=a*x+b;
y3=f3(x)=x^a;
y4=f4(x)=ln(x);
……
end stdio;
库函数的编写就是把数学上使用的函数不断地写入到stdio函数库当中,更新的工作有专门的GMGL开发团队来完成,当然这个团队和舍伍德实验室的关系是十分紧密的,否则他们无法得到最新的函数模型。这个stdio函数库有多个副本同时起作用,每当其中之一被更新以后,其余的都会同步更新,表现为记录库函数的魔法书上自动出现新增的公式。库函数的作用范围是整个已知世界,它保证了GMGL环境对使用库函数当中函数的识别,避免出现魔法师正确写出子函数但是不被GMGL识别的情况。但是如果出现stdio中没有记录的函数,那么GMGL还是不会识别的,比如说复合函数在stdio中就没有记录,不论它是由多么基础的函数构成的。所以一般来说,除非是直接调用基本初等函数,否则对于初等函数和复合函数,熟练的魔法师们一般会采用自己写子函数的方法来避免GMGL不识别自定义函数的情况。
以上是对GMGL的粗略介绍,从中我们可以看出,GMGL相比于魔法架构语言而言,有时候显得结构过于繁杂,相对冗余度在实现简单魔法的时候尤其高于后者。然而,GMGL在实现高阶魔法和多重施法等超大型魔法组合式发动的时候,比逐一编写而且只能一次性地实现魔法发动的魔法架构语言而言,拥有更大的优势。因而,现代魔法师们通常在发动小型简单魔法的时候,采用魔法架构语言,而在魔法对抗甚至魔法战争的时候,采用GMGL来实现多重施法和超大型魔法。GMGL和魔法架构语言都是作为一个合格的魔法师所必须掌握的能力,希望同学们在参考本书的同时,听从魔法导师的建议,勤加训练,成为一个熟练的魔法师。
战地指挥官提示您:看后求收藏(卧龙小说网http://www.wolongxs.com),接着再看更方便。
好书推荐:《等我穿上小裙子你们就完蛋啦》、《好感度破亿的病娇缠上我了》、《无尽宇宙探索指南》、《我穿越到了全是女生的世界》、《星门》、《我穿越到全是女孩子的世界》、《玲珑塔》、《绝对肉体改造计划》、《灵魂控制器》、《二战德国之红警来临》、