天天看點

關于國産科學(計算)軟體的一些思考

關于國産科學(計算)軟體的一些思考

這一段一直在問自己這個問題:“在我們常用的科學計算軟體當中,有多少國産的?”,在記憶裡面搜尋了很久,似乎真正能夠數得上“常用”或者“聽過名字”的,一個是叫作FEPG的有限元源碼生成器,這幾年不時在一些論壇上見過他們的廣告;另外一個是CTEX套裝軟體,作科學排版的,聽說是中科院的人參與了一些工作。此外,實在想不起來還有什麼。當然不排除學校課題組自産自用的軟體,但斷言我們沒有發展出象matlab/mathematica/maple/lapack等這樣一批影響科技發展的科學工具也是不失偏頗的。

科學計算軟體的匮乏反應了中國軟體開發能力和科技應用水準的不足。國内對科學計算軟體的需求是很大的,但令人擔憂的是,幾乎整個市場都被國外的軟體占據了。有限元的論壇上,言必稱的是ANSYS, Fluent, Abaqus...,電路模拟的論壇上,熙熙攘攘的是HFSS, ADS, microwave office,...,,計算化學的讨論中,

<edit>Gaussian</edit>

, NWChem, ADF占據了大面積的篇幅,而我參與了很久的數學工具的讨論中,幾乎也充滿了matlab, mathematica, tecplot和IDL的大名。我們很少有機會看到大家熱烈地讨論一個自創的軟體,或者計劃編寫、合寫這樣的軟體。造成這種情況的原因很多,最重要的有下面幾條:

1. 盜版軟體太容易獲得。國外很多科學軟體,包括一些開源的、免費的軟體都是被商用軟體“逼”出來的,由于企業、科研機關需要某種科學計算功能,而商用軟體的licensing費用太高,導緻企業或者科研院所自行編寫适合自己的軟體,并且軟體或者以商業化,或者以免費的形式釋出出來滿足社會上類似的需求。而在中國,幾元一張的盜版CD光牒上,幾千、幾萬美元的科學軟體一應具有,再加上科研、商業的誠信制度還沒有完全建立,盜版軟體成為很多人的首選,大家非但不以使用“盜版”軟體為恥,反而堂而皇之使用他們來發表文章,開發産品(當然,慚愧的是,幾年前的我也處于這種思想境界)。甚至,有人聲稱這是“拿來主義”。殊不隻,這隻是大家為了不正當地使用别人的勞動編出來的冠冕堂皇的借口。除了“拿來主義”,魯迅先生還有另外一句名言也被盜版趨之若鹜者引為經典,就是“竊書不算偷”,認為由于“學問”這個詞彙本身的純潔性就可以抹煞”偷“這樣一種行為的可鄙性。甚至很多人聲稱,中國使用了全世界最好的軟體。但具有諷刺意義的是,我們用了最好的軟體,我們作出的東西是不是最好的。這說明了什麼呢?使用盜版軟體就像全民健保時,可以免費地拿到抗生素來吃。一旦全民健保沒有了,而長期吃抗生素導緻身體抵抗能力嚴重下降,稍微患上一點感冒就會要命,

2. 寫軟體能力強的人,科學計算背景不足;科學背景能力強的人,計算機應用能力不足。高校當中,計算機好的,一般都去到企業編寫界面、資料庫、網絡開發,然後順理成章地到IT去發展、賺錢,他們并不關心偏微分方程怎麼解,高斯積分在奇異點處怎麼算,如何求解稀疏帶狀矩陣等等這類科學問題。而專業學得好的人當中,計算機基礎好的,能夠編寫高品質代碼和程式的人,少之又少,大多數人還停留在詢問matlab中如何設定計算精度(實際上隻是顯示精度)、安裝matlab後啟動總是有一個matlabserver.exe運作這樣一類低級問題的階段。他們哪怕有自己的一套理論或者算法,也很少有人會想過如何把代碼子產品化,怎樣釋出,使用什麼樣的license,如何管理代碼的版本這樣一些軟體開發的問題。在國外,很多科學、工程課程的作業都是需要用計算機來完成的,寫代碼,寫報告,作講演,經過幾年的訓練下來,畢業的學生對作業系統的基本操作、科技軟體的簡單使用都具備了基本概念,也至少掌握了一兩門計算機語言,這樣,在今後的科研道路上,就會使用這些計算機工具來開發新的計算功能。而我們國内這個方面的訓練還是遠遠不夠。

3. 科研創新精神不夠,沒有ambition。Stanford的幾個學生就可以把google從一個idea做成一個舉世矚目的全球公司,而一個VT的碩士生能搞出一個數一數二的數學知識庫PlanetMath,matlab是Cleve Moler在U. New Mexico教學時設計的,mathematica是Wolfram在研究複雜系統中逐漸開發出來的,Lapack的作者Anderson, Bai等人也是在U. of Tennessee在linpack/eispack的基礎上開發出來的,這樣的例子舉不勝舉。但為什麼我們的高校中這樣的例子卻不多呢?

現狀是不容我們樂觀的,我們需要作一些事情,或者我們呼籲科技主管部門來作一點事情來改變它,我們需要有數學和計算機背景的人來參與開發科學軟體,提高科技力量中計算機工具的使用能力進而提高科研效率,我們要鼓勵一切形式的科學軟體開發工作(在滿足軟體版權和使用許可的前提下),包括商用的、免費的、開源的,并号召學術論壇、學術網站等交流管道為這樣一種(協同式)開發提供便利。大家群策群力,讨論一下我們最需要哪些科學計算功能,按照算法和程式難度制定一些開發計劃,大家既可以當成課外愛好,或者當成适當規模的project參與到這種開發當中,學生社團、科研機關也可以通過經費申請為這樣的project提供經濟支援。

從初期的發展來看,提倡開源或者免費的軟體是有意的,因為一則在開發初期,軟體水準畢竟還是無法跟國外發展很多年的大型的商用軟體比較,而一些寫得好的開放的軟體代碼可以為今後其他軟體的開發提供基礎和子產品,孕育出一大批好的軟體來。但我們需要注意從現在開始培養版權意識,要選擇合适的使用許可的形式,使得科學軟體能夠在法律的保護下健康發展。

當然,上面隻是一個倡議,我自己的數學水準和計算機程式設計水準都很一般,沒有經過正規的程式設計訓練。但我還是希望上面的這些的想法能夠給大家一些啟示,特别是國内的在校大學生和研究所學生,大家能動手寫一些東西,或者聯合起來完成一、兩個好的科學軟體開發工程。我這一段比較忙,但一直有一個想法,就是寫一個類matlab或類matcom的C++庫,這個庫将在CLAPACK的基礎上添加一個wrapper,提供matlab/matcom中常用的計算函數和矩陣操作,這樣利用LAPACK提供的強大的數學計算功能,和wrapper提供的易用的接口,為今後開發其他計算軟體作一個基礎。除了這個計劃,我手頭上還有幾個其他程式,包括網格生成、排版、繪圖等,雖然都是小程式,但我想今後用适當的方式釋出出來,大家一則可以免費的使用,或者以合适的方式參與到軟體的擴充和改進中來。

希望今後在科學軟體中看到越來越多的讓我們自豪的Made in China的标記,到那時,我們才具備了科技強國的實力。

( 粗淺觀點,僅供大家批駁)

撰寫:fangq 時間: 11:02 PM | 跟貼(3)

繼續閱讀