前言

《Igor Pro实用教程——图表绘制、数据分析与程序设计》终于要和读者见面了。此时,我内心非常激动。

这里首先介绍本书创作的缘由。

在笔者就读大学期间,还未听说过Igor Pro。当时,我处理数据用的是Turbo C 3.0。由于没有意识到数据处理软件这种工具的存在(比如最基本的Excel),我觉得数据处理就是编程。以至于后来,我甚至构建了一个雄伟的计划:利用Turbo C设计一个数据处理软件,基本功能是绘图和最小二乘法,甚至连软件架构都写好了。遗憾的是,因为没有计算机,加之学校的机房上机费太贵,这个计划最终被搁浅了(幸亏如此)。随着升入高年级,实验课结束,这个计划终于被彻底忘记了。不过,这种编程处理数据的思路最终还是让我受益匪浅。本书介绍的Igor Pro就是最适合通过编程处理数据的工具。

上研究生时,实验数据处理这个问题再次出现。不过我发现不能再继续用Turbo C 3.0了,因为实验室所有的人都在用Igor Pro,所以我开始了Igor Pro的学习和使用。学习Igor Pro的经历是值得回顾的。

记得第一次看到这个软件,感觉很茫然。按照以往的经验,不懂的内容可以通过Google搜索。可是在Igor Pro的学习过程中,我从来没有用过一次Google或者百度,甚至连这种意识都没有(我想本书的读者和我也是一样的)。原因很简单,网上没有任何关于Igor Pro的学习资料。我能做的,就是向同实验室的人请教,自己在挫折中慢慢摸索;阅读现有的代码,掌握Igor Pro的基本使用方法。这里我不得不感谢我的导师周兴江研究员,他不仅仅是一位在超导研究领域取得卓越成就的科学家,也是一位出色的Igor Pro编程大师。我今天关于Igor Pro的认识,应该说就是从研究他的代码开始的。

学习的经历是艰辛的。任何一个小问题的解决都不容易。现在回顾起来,我发现走了很多弯路,不仅仅是学习的弯路,还有使用的弯路。当时使用的很多方法其实非常笨拙,效率非常低。比如一个最基本的问题,当时程序运行的速度比较慢,绘制一幅费米面的图需要半分钟左右,大家都认为是Igor Pro的问题。后来我发现不是,是我们没有理解Igor Pro下的程序设计机制,没有搞清楚Proc和Function的关系。在搞清楚这个问题后,我对所有的程序进行了一次彻底的升级。然后突然发现,以前几分钟的计算现在一眨眼就可以完成。很难想象我们一直在这种低效率的工作状态下使用Igor Pro很多年,仅仅是因为不了解Proc和Function所致!

诸如此类的问题非常多,如图表绘制、数据拟合、算法设计等,不胜枚举。很显然,要做好这些工作,需要很好地了解Igor Pro。遗憾的是Igor Pro的学习资料太少了。Igor Pro其实是一款非常优秀的数据处理软件,特别是处于大数据时代的今天,它能将编程与数据可视化完美地融为一体,既具有Python、R等脚本编程语言的可扩展性,又具有Origin等数据可视化工具的方便易用性,十分难得。但由于软件的语言(英语)、需要编程的特性以及用户使用群体(主要集中在国外)等原因,Igor Pro一直未被广大用户所了解。这样造成的后果就是没有人去讨论和贡献自己对Igor Pro的心得和使用技巧。Igor Pro本身的软件文档写得非常好,但是作为一个手册,其实是不适合初学者的,只有在一定的基础上看软件文档,才有效果。初学者直接看文档,很容易感到迷茫。

由于学习资料的匮乏,很多人,特别是刚进入实验室的人员对Igor Pro望而生畏,转而去选择其他的工具。其实,Igor Pro更适合他们,更适合他们处理数据。于是,Igor Pro的潜在使用者就这么流失了。反过来,这又影响了后来的人去选择Igor Pro。虽然有所谓酒香不怕巷子深的古训,但是,如果酒是香的,为什么不能将它放到浅一点的巷子里呢?好东西应该是被大众所共享的,而不应只属于个别“资深酒客”。

在这么多年使用Igor Pro的过程中,在帮助他人解决Igor Pro的一些问题时,我对Igor Pro的认识也越来越深刻。我发现,Igor Pro能做的其实远比我们想象的多。但是,很多人,包括在实验室里天天使用Igor Pro的人们,却没有意识到,其实他们使用Igor Pro的水平并不高(这当然是完全可以理解的,由于更专注于科学研究,他们不可能在这上面花太多精力)。

所有的这些,促使我决定编写一本关于Igor Pro使用的书籍,把我这么多年来对Igor Pro的使用心得和经验总结出来,公布于众。所谓授人以鱼,不如授人以渔。我的目的就是希望读者在使用Igor Pro遇到困惑时,能知道去哪儿找到解决问题的方法,少走一些弯路,而不是只寄希望于求助别人或者浪费很多的时间。同时,也更希望读者能利用本书中提到的知识提高数据处理效率,节约时间和精力。当然,我知道本书离这个目标还很远,但至少这是一个好的开始。

本书真正的写作始于两年前。这个过程和我学习Igor Pro的经历一样,也是艰辛的:没有资助,缺乏参考资料只能利用业余时间创作。所有的一切都是靠兴趣、靠对Igor Pro的热爱在支撑。当然这很正常,任何一个新的领域在刚开始时都是这样的。既然还没人做这件事情,那么就从我开始吧。

本书的体例结构都是经过精心设计的,目的就是突出实用性。各章节结构具有相对的独立性,每一小节一般都对应于Igor Pro某个方面的使用。建议读者仔细阅读第1章和第5章,前者是Igor Pro工作原理的基础,后者是程序设计的基础。其他各章节可在需要的时候选择性阅读。另外,读者在阅读本书时,可结合Igor Pro自带的软件手册进行学习,这样会获得事半功倍的效果。

在完成本书的过程中,我曾与周兴江研究员、谢卓晋博士、物理所超导实验室SC7组进行过多次讨论,书中很多创作的灵感都来源于这些讨论,在此表示谢意。

清华大学出版社的盛东亮编辑在本书出版的过程中给了我很大的帮助。盛编辑对新事物的开放和支持态度,对教育科技知识推广的责任心,值得敬佩。这里表示谢意。

最后,由于本书是此领域的第一本书,也限于我的水平,书中难免存在错误之处。在这里恳请读者在阅读过程中发现错误能及时指出,以便我及时修正。

贾小文

2018年1月于天津