研究者需要随时改变问题

交互式数据语言,英文为Interactive Data Language,简称IDL,起源于戴维·斯特恩在科罗拉多大学参与的科学数据处理工作。交互方式回应一个实际需要:研究人员需要检查数据、改变处理办法,再观察结果,而不必每次提出问题都另请程序员开发完整应用。

公司沿革把前身追溯到用于水手号火星探测资料的光谱编辑程序。光谱是一串随测量通道变化的数值,研究者要从中选取区段、比较特征,并查看处理后的曲线。把这些操作组织在可反复使用的程序环境中,比为每项研究临时编制独立工具更容易延续工作。

参考:[1] [2]

1977年的产品化

1977年,斯特恩创办Research Systems公司,并商业发布IDL。2002年公司向国际摄影测量与遥感学会介绍自身历史时,也把1977年和IDL这项首个产品联系起来。这个年份标示从大学研究环境转为独立提供软件的阶段;软件所依赖的研究问题和前身程序,则在公司成立之前已经存在。

公司的回顾列出美国国家航空航天局戈达德航天飞行中心和鲍尔航天公司等早期用户。它们面对的共同需求是科学数据分析与显示。IDL由此面向需要自行编写算法的研究人员,而不是只提供固定菜单、处理一种仪器资料的单一应用。

参考:[1] [2]

小型计算机上的数组工具

IDL早期曾有PDP-11版本,随后也有VAX/VMS实现。厂商保留的EXTRAC说明记录了一项具体延续:从数组提取子区段的EXTRAC原为PDP-11版本内置过程,在最初VAX/VMS版中继续保留,后来改写为语言库函数。一个操作的用途被保留下来,实现所在的层次却可以改变。

输入输出文档还说明,早期IDL使用PDP-11、VAX机器的浮点数格式。旧数据后来转入采用IEEE浮点格式的机器时,需要注意数值表示与字节顺序。交互分析软件因而同时依赖语言、机器和文件格式;程序能够继续运行,并不表示不同年代的数据可以未经处理就互换。

参考:[3] [4]

用两条指令截取一段数据

以现行手册保存的简单例子说明数组方法:先输入A = FINDGEN(1000),建立一千个浮点数,值依次等于各自下标;再输入B = EXTRAC(A, 200, 300),从下标200处取三百项,得到至下标499为止的区段。提取的单位是一段数据,不需要把三百次复制分别写出来。

相同办法可以扩展到二维数组,例如从图像中截取一个矩形区域。EXTRAC还规定,选区超出原数组时,以零填补越界部分。这个规则会影响结果的解释:图像边缘出现零值,可能是提取操作补入的数据,而不是仪器真正测得的暗区。例子展示的是文档所保留的操作方法,具体写法不作为1977年首版界面的复原。

参考:[3]

连续操作与版本的边界

命令行使使用者能够临时分析数据、编译程序并运行应用。先观察一小段资料,再改变区段或处理参数,是交互方式的实际用途;等操作稳定后,又可以把步骤写成可重复执行的程序。IDL把研究者对数据的判断,转成可以保存和重新执行的指令。

后来版本增加了工作台、命令历史以及更多显示和分析能力。了解其起步时,应把1977年的商业发布同后来的工具发展分开。早期数组操作留下的兼容记录,能够说明某些方法如何延续;今天手册中完整的命令集合,则不能全部归到首个商业版本。

参考:[5] [3]