為什么我拒絕將Multiwfn做成全圖形界面
時常有一些國內的用戶提議將筆者的波函數分析程序Multiwfn (http://www.shanxitv.org/multiwfn)做成全圖形界面(GUI)的程序,本人是拒絕的,原因在之前已經反復提到過。由于近來又有人提到此事,故專門寫個文談談這點。我不指望初級用戶能接受本文的觀點,但我相信隨著使用者水平的逐漸提高,會越來越贊同本文。
Multiwfn目前的界面是文本和圖形混合式界面,不需要圖形界面的地方是純文本顯示,只有需要圖形化觀察結果的時候才會提供圖形界面。這種設計有著很大的好處:
(1)可以十分方便地寫腳本進行批處理,Multiwfn里的每一步操作只需要通過重定向的方式輸入即可,見手冊5.2、5.3節的一些簡要說明,結果也可以直接重定向到文本文件里便于用戶進一步處理,還可以將輸出信息直接從屏幕中復制出來(見手冊5.4節)。只需要稍微懂一些DOS批處理文件的語法或者Linux的shell腳本編寫,就可以很方便地令Multiwfn大批量地分析,這個特征對于產生動畫就顯得特別便利,例如《通過鍵級曲線和ELF/LOL/RDG等值面動畫研究化學反應過程》(http://www.shanxitv.org/200)。對于經常需要分析的任務,也可以寫成特定腳本,到時候一行命令就能完成。鐘成編寫的Multiwfn輔助工具VMwfn(http://emuch.net/bbs/viewthread.php?tid=7308796&fpage=1)也充分體現了這個設計的優勢。文本+圖形界面的混合設計使得Multiwfn十分靈活,而做成全圖形界面的話靈活程度就差遠了,只有屏幕上的控件可以操作,多一點的事都沒法做到(甚至有點被蒙在鼓里的感覺)。
(2)Multiwfn有的功能需要圖形界面,有很多則本身就不需要圖形界面,比如計算鍵級。目前Multiwfn的設計,在啟動程序時不需要終端有圖形的支持,比如可以以SSH方式登錄服務器然后運行Multiwfn。如果非要搞得全圖形界面,那么純文字終端的用戶根本連啟動Multiwfn都不可能。有人誤以為Multiwfn的分析都是不耗時的,因此不需要弄到服務器上跑,實際上這是錯誤的。的確,Multiwfn的效率很高,但不代表所有支持的分析方法都不怎么耗時。例如,aRDG分析,見《使用Multiwfn研究分子動力學中的弱相互作用》(http://www.shanxitv.org/186),由于方法本身的高計算量,對較大體系、較長軌跡做這樣一次分析可能會耗時很長,幾個小時甚至一天都有可能,放到多核服務器上算明顯是有必要的。
(3)便于程序開發。Multiwfn只給真正需要的地方安排圖形界面,因此在大部分的代碼開發中,不需要寫圖形界面的代碼,這比起開發圖形界面程序省時多了去了。Multiwfn程序里有好幾百個選項,全都搞成圖形界面,至少筆者是吃不消的,與其弄這樣虛無浮華的東西還不如把精力用在開發、改進、完善真正最重要的功能上。另外,全圖形界面的話代碼會顯得很臃腫,代碼量、程序體積、編譯時間可能會翻番。這么一來,程序表面雖然看起來仿佛好看了,卻丟失了內在真正的氣質和優美。另外,弄成全圖形程序后調試也會更為麻煩,浪費開發時間。
(4)便于跨平臺。為了照顧廣大用戶,Multiwfn是Windows+Linux+MacOSX三平臺的程序。圖形界面的程序跨平臺,這是個眾所周知麻煩的事。Multiwfn目前的圖形界面使用DISLIN,在不同平臺上顯示效果有差異,比如有的平臺控件大一點,有的小一點,有的操作還有點差異,實際顯示出來的控件排列還往往有差異,弄不好的話嚴重影響使用。如果全弄成圖形界面,那么多菜單得在三個平臺上都測試、修改,筆者沒這個精力。
(5)便于用戶修改。Multiwfn是鼓勵用戶修改程序來實現自己需要的更多的功能的。Multiwfn目前的程序結構很清楚,易讀也容易改,想加個選項立刻就加上去了。要是全圖形界面,若用戶想加個自己的功能,比如僅僅是將內部數據輸出到文本文件里,得花更多時間去了解程序結構,還得去了解DISLIN圖形庫的基本使用,這明顯給用戶增添負擔。
Multiwfn目前的界面操作是最快捷的,大多數任務敲幾下鍵盤就出來。特別是對于有小鍵盤的用戶,稍微使用熟練后,比如作一個ELF平面圖,整個操作過程只需要兩三秒鐘。而弄成圖形界面后,只不過是把按鍵盤改成了點鼠標,這有何意義?根本毫無意義!反倒是,每次移動鼠標瞄準后再去點擊,比起直接敲鍵盤速度還慢,降低了使用效率。
有人覺得,全圖形界面才顯得程序專業,否則就不專業,這種觀點我完全理解不能。全圖形界面的量化程序寥寥,比如Hyperchem就是典型,雖然是全圖形界面卻反倒很難用,早就沒了市場,甚至有人認為已經淪為了本科教學的低端工具。而主流的量化程序,幾乎無一不是純文本的。雖然Gaussian在Windows下有圖形界面,那其實也完全是可有可無的(DOS命令行下照樣可以執行),而且大多數人還是在Linux下面用服務器跑。實際上,設計出對于一個程序的功能來說最適合、最恰到好處的界面,那才叫真正的專業。反倒是,一個程序本來不適合全圖形界面化,而非得強迫弄成全圖形界面,把程序搞得更難用,那才真是顯得很外行,顯得很沒品(就像戴一大砣金鏈子似的)。
但是也不是說目前的Multiwfn的界面就已經完美了,比如顯示等值面圖的速度對于格點精度較高的時候會略慢,而且沒法通過拖動鼠標自由地改變視角。像這樣對使用效率有真正影響的地方,才會在未來的版本中嘗試改進。筆者不會為了沒有任何意義的改進而花費精力的。
Multiwfn全GUI化的好處,說來也就只有一個,就是能討好外行人(剛接觸量化的人也屬于這類),第一次啟動就看到了自己熟悉的圖形界面,使用信心會增加。而啟動后,若看到黑乎乎的文本界面和文字提示,頓時就使心靈大受打擊,傷害了使用信心,甚至就敗退了,從此不用了。這一點,絕對不是程序自身的問題,而100%是使用者的問題!
說到這一點的時候,我就不得不說說現在量化工作者,特別是量化初心者們的研究態度了。60年前,Boys搞量化計算要面對龐大卻又異常緩慢的計算機,成天直接跟1和0打交道,而且能用的機時還非常有限,也沒有現成的程序,甚至沒多少前人的工作可供參考,卻實現了從頭算(可參考JPC,100,6007對Boys的介紹),那是什么樣的研究態度?(甚至Parr那時候還辛苦地搖著手搖計算器算N2呢!)而如今的量化工作者,我不得不說水平正在普遍嚴重下滑,而比起水平下滑更嚴重的是鉆研精神的急劇喪失,者特別是對于那些剛開始搞量化的人而言。這些人當中的很多人,一點理論也不愿意學,就知道拿現成的程序傻算,碰到問題也不過腦子就知道到處傻問。Multiwfn程序啟動后,屏幕上的提示清楚得不能再清楚,手冊寫得已經詳細得不能更詳細了(耗費巨大精力寫了376頁,在手冊第一頁就已經提示了在手冊第四章有教程,稍微看幾眼就能馬上會用),何況還有近30萬字的中文帖子,甚至還專門寫了幫助入門的帖子《Multiwfn入門tips》(http://www.shanxitv.org/167),我真是只能幫用戶到這了。如果用戶僅僅因為沒接觸過命令行界面,就不愿去稍微學習、了解哪怕一點點更多的東西,那么,這樣的用戶,根本沒有最基本的作為量化工作者應有的研究態度,喪失了這樣的用戶我不會覺得有任何可惜的。這樣的用戶,就算用上了全GUI的Multiwfn,筆者竊以為也不大可能會做出很重要的研究成果。而那些勤動腦子鉆研問題、樂意仔細讀手冊的Multiwfn的用戶,我總是盡最大可能去解答他們的問題(只要有時間的話),他們提出的在改進程序上的建議我也很樂意聽取。
值得一提的是,雖然Multiwfn的外國用戶很多,也經常發來郵件問各種相關問題,但是他們當中從沒有人建議要將Multiwfn全GUI化的,而且經常在Multiwfn的易用性上予以積極的評價(例如有個人對Multiwfn的拓撲分析功能就評價道這代表了AIM程序未來的發展方向)。我也感到外國的Multiwfn的用戶的鉆研態度普遍很好,很多Multiwfn里面很深入,可能需要仔細看手冊才知道用法的功能他們都用得很好。比如,Chemical Physics 434 (2014) 11-14這篇文章是一個伊朗人寫的,他目前還沒什么名氣,通過劉述斌提出的位阻分析方法討論水簇的穩定性。這里面涉及到Multiwfn的對實空間函數全空間積分的功能(主功能100里的4),還涉及到steric energy density(自定義函數40),而這兩樣在Multiwfn的眾多功能里算是相對深入的功能和特征。這個伊朗人從沒有咨詢過筆者使用問題,而只是光靠研讀手冊就搞懂了用法(當然,手冊里已經提供了足夠充分的信息),并得到了挺好的研究結果,我覺得這樣的研究者真是Multiwfn用戶里的楷模。
總之,將Multiwfn做成全圖形化的害處遠大于好處,我更不會為了盲目地討得初級用戶的歡心而將之改成全GUI界面。筆者會一直堅持以筆者認為最好、最合理、最正確的方式將Multiwfn做得盡可能完美。