“语言是用来进行逻辑编辑的,它通常基于某种抽象逻辑,比如数学,比如符文学,当然为了能让处理器执行,计算机语言已经将数学语言或者符文学语言复杂化了。而另一种东西则是库,也就是通过语言编写和封装的,可以被别人使用的成熟代码段,两者的关系就好像帝国语和诗词的关系,当你感慨‘念天地之悠悠,独怆然而涕下’的时候,就是在调用登幽州台歌的代码段。”
旁边的樾樾眼前一亮,刚想说话,却猛地捂住自己的嘴。
帝国语贫穷如玛丽,并没有感受到诗词中的韵味,但前面的逻辑她懂了大概,“语言只有我们定义,库不仅仅我们定义,也你们定义,也他们定义,和调用。”
“是的”,强忍着玛丽用错误语法编写的帝国语,李力点点头,“当然为了保证语言使用的简洁,编程环境一般都会自带官方库,我们会写一些通用的库内置进去方便调用,尤其是涉及外部硬件控制的指令,都会进行封装。”
“可是,怎么样能保证使用者按照库的编写者要求调用呢?”玛丽又问道,“我们提供库,要使用者调用正确能使用,但是不正确不能,这样怎么办?”
“哦?有一些没法封装的步骤,但需要使用者按正确方式调用么?”李力抬了抬眉毛,“举个例子。”
“材料加工程序,开始前必须检查材料的形状和纯度,一些半永久转换或者对称转换需要结束的时候转换回来。”
听了这个问题,李力摸了摸自己的下巴,“按照开放程度高的语言设计,这种需要前置或者后置的东西通常只是留出语法让使用者自己调用,当然如果对方没有调用就会出现系统级别的故障,比如内存泄露,比如锟斤拷烫烫烫什么的。。。”
“如果限制呢?”玛丽迫不及待地问道。
“这样的话,就需要运行环境,而且如果你真的要限制使用者使用方式,那么你所写的就不是库了。”
“那是什么?”
“框架”,李力说道:“与库不同的一点在于框架是控制反转,虽然这个词听起来挺高大上,不过意思就是原本是由使用者调用库来完成某些工作,但现在是框架调用使用者所写的一些东西来完成某些工作,既然如此,使用者就必须按照框架的使用规则来写这些东西。
“比方说如果你需要使用者在执行对称转换程序时必须初始化和销毁,那么你就必须留出初始化和销毁的接口,让使用者完善它,这样程序就可以在执行主体程序之前调用初始化内容,并在结束之前调用销毁。”
听了李力的话,玛丽兴奋地叫了起来,“就是它就是它!我在写转换程序时思考过这个问题,但是在编写c语言的时候总是无法将这个想法融入里面,原来是我搞错了!”
“c语言。。。”李力满脸纠结地看着玛丽,心想着要不要建议她换个名字,既然想做框架限制的语言类型,不如建议改叫Java?
“当然了,这只是软件级别上的框架,如果你想要做到硬件层面上的框架,要求使用者按照你指定的规则,在你的控制下进行运行,那就是另外一种东西了。”
“什么东西?”
“操作系统。”
喜欢魔法导论请大家收藏:(www.xgxs.net)魔法导论星光小说更新速度全网最快。