前言
《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月于天津