Origin绘图软件编程语言的几个层次
Origin是科学绘图和数值分析领域的一个十分强悍的商业软件。即使在开源流行的今天,Origin凭其优势仍可傲视群雄。当今的GUI软件,一个符合趋势的做法是支持脚本或者这样那样的编程扩展。这是由应用的多样化以及GUI程序天然的特点造成的:用户不再满足单一的使用流程,但是GUI程序的界面元素往往是开发时就订死的。Origin也不例外,它从6.0以后也在不断地朝支持编程的方向努力。否则,你看看它的对手们,Scilab, Octave, Qtiplot等好多好多,哪个不是天生就支持一门编程(脚本)语言的呢?
Origin发展到版本8以后,编程扩展的支持已经初具规模。早期的版本支持Labtalk,说实话当年尝试使用labtalk自动化一些操作的时候,一个突出的感觉就是十分混乱、摸不着头绪。这是因为Labtalk并不是一个系统的编程语言,充其量也就是其它软件中Macro的概念,它主要是用于操作一些Origin内置的对象,实现简单的计算。其后,大概是版本7以来,Origin引入了C语言支持,并提供了一个内置的IDE方便撰写C语言的扩展程序,这也被延续到最新的版本。Origin的C应该说绝对是标准C的超集在超集,因为在Origin内部,你可以自由地使用内置对象(如工作表),数值计算库NAG,各种图形元素,甚至还支持matrix和vector之类的数据类型和操作,同时也引入部分C++概念(例如类)以及一些动态语言才有的迭代方法(foreach)。到了最新的8世代,Origin引入了x-function机制。那么这些x-functions到底是什么?其实很简单,我们可以想象Origin所有的界面操作其实都是调用了底层的x-functions,换句话说就是Origin底层的所有操作(例如表格元素复制,积分计算等)都是由x-function实现的,而x-function是用xml记录的。至于x-function是不是最终会执行更底层的C代码,我没有深究(猜想应该是这样),不过如果关心效率则需要考察。x-function机制的好处不仅在于实现了所有的操作,也在于它可以被处处调用。无论是命令窗口,GUI的脚本窗口还是Origin C或labtalk中都可以直接调用,同时Origin提供了一个x-function编辑器以便用户随时扩展。
综上所述,Labtalk,x-function和Origin C是Origin软件中编程扩展的三大利器。它们工作在不同层次,Labtalk是脚本级的,无需编译,用于粘合各种内置函数和GUI对象;x-function实现了所有具体操作和分析计算功能,可以被Labtalk和Origin C自由调用;Origin C是“终极杀手”,所有你认为Origin中不存在的功能都可以用你自己的逻辑去实现。有了这三种编程机制,Origin已经从一个普通的GUI超脱为一个全能选手:从文件IO,到数值分析计算,到强大的绘图功能和外部程序的交互都可以籍此在Origin内部实现。(感觉其终极目标就是变为另一个Matlab,虽然它们的体重和定位有些不同。)
以上是个人对Origin功能的初级理解,仅供参考。如有错误,欢迎指正!