號稱可替代MATLAB的國產軟件來了,網友熱議:套殼還是真自研?



  本文轉載自:新智元  

來源:知乎   |   編輯:舒婷、白峯

【導讀】「MATLAB熱」整整持續了兩週,關於MATLAB被禁之後中國科研人員如何應對引發了熱烈的討論。近日,國產軟件TRUFFER稱:一年內完全實現科學計算與圖形功能,三年內完全實現 Simulink,100% 自主版權源代碼,這一聲明讓TRUFFER從一個籍籍無名的小軟件被推上風口浪尖。

距離哈工大、哈工程MATLAB被禁已經過去兩週,但是關於MATLAB的討論從未停止。

  

大部分人只是着眼於尋找MATLAB替代品,但是,近日,一個國產軟件TRUFFER站出來了:我就是MATLAB的替代品。

 

一時間,衆生譁然。要知道,尋找「替代品」的道路上,科研人員都專注在將各類主流的開發軟件結合以替代功能,讓國產公司開發新的軟件都是「最末」的事情。現在有一個國產軟件出來「誇下海口」,確實讓科研人員興奮又好奇。

「籍籍無名」的TRUFFER的雄心壯志:1年內實現科學計算與圖形功能,3年內搞定Simulink

走進這個「聲名鵲起」的軟件之前,先看看軟件背後的公司。

 

 

論規模來看,這家公司並不是很大,成立於2002年,就官網介紹而言一開始工作重心應該是在圖形軟件開發上,旗下目前有四款產品,分別是多文檔管理、聯高資產管理、數控加工仿真和“原本”小工具。

 

 

但是就公佈的團隊人員從業年限來看,都是「老程序員」了——分別具有23、25、30年編程經驗,確實是經驗豐富。

 

儘管有小的仿真工具,但這家公司的主要產品和MATLAB確實搭不上邊。另一方面,成立18年卻不顯山不露水,「骨灰級」的程序員不透露姓名,這家公司充滿了神祕色彩。

 

接下來我們看一看這款萬衆矚目的產品:TRUFFER

 

首先是其官方號在MATLAB那條討論下放出的壯志豪言:

 

「半年內實現 MATLAB 科學計算與圖形顯示的 70%;1 年內 100% 全部實現;3 年內完全實現 Simulink;100% 自主版權源代碼;無需 #openGL# 等組件支持的三維、四維圖形顯示。短期內將在周全性(需要積累)、高性能並行計算(需要廠家支持)、專業的擴展工具箱(第三方支持,大家一起努力)等方面會稍微落後,不過足以應付大家 90% 的日常科研需求。我們承諾,至少在 10% 的功能,比 MATLAB 更好用、易用。」

 

「滿足大家90%的科研需求和10%的功能比MATLAB更好用、易用」確實是一個很強的「賣點」。先看一下TRUFFER的部分源碼樹:

 

 

可以看到這個架構設計和MATLAB部分功能還是很貼近,核心在於矩陣的一些運算。根據官方發佈的數據來看,核心運算都能夠完成,並且畫圖的效果非常不錯。

 

以矩形域最小二乘曲面擬合爲例,下圖的三維顯示核心沒有openGL,完全是自主知識產權的,擬合的結果實際上是一個六維曲面。

 

 

 

還有TRUFFER用於SR-71黑鳥超高速流場仿真的基礎圖片,讀取OBJ文件,自主三維渲染。並且是100%C#自主代碼,沒有用openGL或directX。

 

 

TRUFFER官方在迴應的時候也勾畫了一下現行軟件的使用場景

 

第一個是用試驗數據繪製曲線,導出公式;科研人員獲得了一些數據,希望對其進行畫圖擬合。第二個是三維有限元計算(簡單物體);就是解稀疏矩陣。

 

並且TRUFFER是可以爲研究人員提供源碼的,知乎用戶@harryzhou就提供了一份TRUFFER發給他的源碼。

 

 

三個源文件分別是CMatrix.cs,Complex.cs,Matrix.cs,分別對應了複數矩陣、複數和實數矩陣的基本運算。至少在代碼架構上,TRUFFER是能夠完成它現行設計的場景的。當然還有一些常規的矩陣運算。

 

懂一點代碼的開發者看到這個源碼就知道,TRUFFER確實還在開發初期。但是就公司和感興趣的開發人員交流的情況來看,TRUFFER的公司其實是一個比較誠摯、有大理想的公司。畢竟「滿足大家90%的科研需求和10%的功能比MATLAB更好用、易用」不是所有軟件公司都說的出口的。

「只完成1%就來開發佈會」的TRUFFER:有誠意也有差距

對MATLAB稍微有點了解的開發者們應該已經反應過來了:TRUFFER是照着MATLAB去設計的,但是完成的內容實屬冰山一角

 

這個軟件近幾日進入公衆視野之後實屬飽受爭議,主要在以下幾個爭議點。

 

1、「打假」自主研發:套殼Octave

 

知乎網友@立黨指出,TRUFFER是個套殼Octave的「假」自主研發的軟件。

 

 

 

許多知乎用戶都表達了相同的觀點:開源代碼不代表交出版權,指責TRUFFER侵害Octave版權。對此,也有拿到開源代碼的開發者爲TRUFFER「鳴不平」。

 

 

是否套殼,讀一讀源碼就能認知到。按照這位答主說的情況,TRUFFER源碼應該是沒有問題的,純手打,不涉及套殼的問題。至於實際的算法本身沒有什麼可變性,因此很可能導致代碼結構類似。

 

知乎用戶@寂寞在唱歌說的這段換其實很客觀。

 

 

如果真的深究「套殼Octave」這個問題,建議感興趣的研究者可以問TRUFFER官方要一份源碼再品讀一下。

 

2、「技術差距」過大,產品進度堪憂

 

雖然TRUFFER放了源碼,但是一共就幾千行,實現的功能也是最最最基礎的。甚至連求解線性方程組的代碼也沒有放出,實現的功能基本上都是一維的。

 

就連之前爲TRUFFER說話的那位匿名大佬也有些唏噓了。

 

 

甚至有人懷疑這是不是同學課設的大作業的源碼,畢竟這個代碼,確實有點粗陋了。看一下知乎用戶@梨雪梅的發言。

 

 

知乎用戶@architect在Mathmatics工作,看到TRUFFER也不禁從期待到失望。

 

 

但是TRUFFER公司自一開始就聲明瞭,這是「初版」,這幾乎爲以上所有的質疑提供了「看似合理」的解釋。因爲還在開發初期,功能不完善很正常。所以@伍亦勤的這句話很真實。

 

對於秉持各種態度關注TRUFFER的人們而言,還是希望TRUFFER在「替代MATLAB」的藍圖上不是「聽子彈飛」,而是「槍響落地」。

備受關注的MATLAB開發問題?聽聽中科院包雲剛研究員怎麼講

「MATLAB熱」持續了兩週有餘,許許多多專家都參與了討論。其中,中科院計算所先進計算機系統研究中心副主任包雲崗教授在CCF YOCSEF杭州論壇上發表了自己的見解。

 

 

這個演講在計算界影響頗深。包教授的這條微博甚至被轉發了將近4000次。

 

包教授原文強調了,類似於MATLAB這種產品,做出來並且將其應用纔是最關鍵的,而不是爲了「科研成就」去發表論文。同時,把持久戰意識樹立起來,而不是期望速勝論。要承認現今與對手的差距,迎頭趕上。

 

拋開MATLAB這個軟件不談,在思考如何解「MATLAB被禁」這個解燃眉之急的同時,更需要考慮如何才能在未來做出像MATLAB那樣的工作,做出能卡別人脖子的技術。不要別人做好了,想着去「模仿」,而要做出真正的屬於「中國技術」的東西。

最後,回到TRUFFER這個軟件上來。不得不承認,這個軟件現在的功能離「替代MATLAB」這個目標差距非常大,甚至引發的討論熱度都有「炒作」的嫌疑。但是,能說出「1 年內 100% 全部實現;3 年內完全實現 Simulink;100% 自主版權源代碼。」的公司本身就是令人期待的。

 

技術之間的差距是不可否認的,最初的產品可能很簡陋,但不應該被「打壓」。畢竟所有複雜而偉大的成就都是從最簡單的步驟開始,一步步累積起來的。

 

希望TRUFFER能夠實現自己畫的宏偉藍圖,在未來的發展中不負衆望。

附上包教授原文:

「很多人都在思考如何解決“Matlab被禁”這個燃眉之急問題。大家回顧了中國的工業軟件發展之痛,批評國內的盜版問題、知識產權保護問題、重硬件輕軟件等一系列問題。也提出了很多好的建議,比如給了針對Matlab各種功能的開源軟件替代方案。這些都算是“昨天和今天”的事。

現在我想和大家一起討論一下關於“明天”的事。我們每個人可以問自己一個問題:從現在這個時間點開始,給10年時間,甚至20年時間,我們能做出一個卡別人脖子的東西嗎?(並不是說真的要去卡別人脖子,而是說要成爲別人離不開的東西)如果從這個角度來看這次“Matlab被禁”事件,那麼也許可以給我們更多的是啓發——我們都知道Matlab最初只是新墨西哥大學Clever Moler教授在1970年代用於教學中的一個小工具軟件,那它爲什麼能在幾十年後成爲卡我們脖子的利器?

我們一起來梳理一下Matlab發展過程中折射出來的幾個理念:

一、把東西做出來,而不是追求把論文發出來。

Matlab網站上有一篇Moler教授自己在2018年寫的Matlab簡史。他在開頭就寫道,在1971年和1975年他所在團隊向NSF申請了兩個項目,目標是“探索開發高質量數學軟件的方法、成本和資源”。他自己也認爲,某種程度上這兩個項目是失敗的,因爲他們沒有發表出一篇論文,他們只是開發出了兩個軟件:一個是EISPACK,另一個是LINPACK。而且這兩個軟件也談不上多大的學術創新,因爲EISPACK就是把1965-1970年發表論文中用Algo60寫的算法翻譯爲Fortran,而LINPACK則是直接用Fortran重寫一遍。

二、把東西用起來,而不是做完就扔了

雖然EISPACK、LINPACK沒有論文,學術創新也似乎不是很高,但確實兩個很有用的軟件。EISPACK的開發團隊在1974年代寫了一本使用手冊,我在Google Scholar上查了一下,到現在已經被引用了1800多次,1970-1980年代使用非常廣泛。LINPACK更是世界超級計算機排行榜Tops500的基準測試程序,可以說是影響了世界超級計算機的發展。

三、把教學場景用起來,而不是把教學當作負擔。

Matlab是Coler教授想把EISPACK和LINPACK應用於教學過程中的產物。如果Moler教授不是用心去做教學,不是爲了能讓學生更好地掌握線性代數與數值分析,更容易地使用EISPACK和LINPACK這兩個軟件,那麼他就不會有動機自己動手去寫一個Matlab小工具來把這兩個軟件接口封裝起來,從而方便學生使用。

今天,由於嚴苛的科研競爭環境和考覈壓力,很多人都把教學當作了一種負擔,認爲會影響科研。但教學其實是試驗新技術、新工具最好的應用場景,因爲試錯成本很低,而且學生的創新性和主動性,還能幫助改進優化技術和工具。Matlab最終走上商業化,就是因爲Coler教授在斯坦福大學給學生上課時,有兩個學生對Matlab很感興趣,主動提出用C重寫一遍,同時移植到IBM PC上。很多技術最早都是從課堂上發展起來,比如RISC架構是David Patterson教授在伯克利的課程實驗。

四、把持久戰意識樹立起來,而不是期望速勝論。

堅持圍繞一件事做,幾十年後的累積效應是驚人了。中國今天被卡脖子的東西,幾乎都是別人積累了20年以上的東西。從第一版Matlab算起到現在已經有40年,1980年代初的第一代EDA軟件到現在也有快40年,Intel在1970年左右第一代微處理器到現在已經有50年。臺積電1987年成立到現在也是積累了30多年。其實在學術界也有很多有影響力的工作也是積累很多年的產物,我們可以看一下ACM System Software Award,獲獎的軟件基本上都是持續積累了幾十年,比如LLVM持續優化了17年、Eclipse優化了19年、Wireshark優化了22年、Coq優化了31年,GCC則有33年。

再仔細剖析一下Matlab以及對應的公司MathWorks,可以說是持久戰的典範。MathWorks在1984年成立,只有1名員工。第一筆收入是1985年賣給了MIT10個Matlab版權,收入500美元。MathWorks公司早期很不起眼,有個玩笑稱它前7年員工數每一年翻一番,1984年1個員工,1985年2個員工,1986年4個員工,直到7年後的1991年也才只有128個員工。和今天很多初創公司相比,這個成長速度就像是蝸牛了。但是他們力出一孔,圍繞着Matlab不斷增加功能,使Matlab成爲一個行業領先的工具軟件。1997年,MathWorks的營業額達到了5000萬美元,380名員工。如今2019年MathWorks公司營業額是10億美元,3000多員工,全球有400多萬用戶。雖然從營業額看並不大,但其實我們更應該學習這種模式——不斷積累。把一項技術做到極致,成爲某個細分領域的隱形冠軍。

最後總結一下,當我們在思考如何解“Matlab被禁這個解燃眉之急的同時,更需要考慮如何才能在未來做出像Matlab那樣的工作,做出能卡別人脖子的技術。這需要我們做出改變,觀念上的改變,行動上的改變。至於哪些具體的改變,我想前面梳理的四點就算是拋磚引玉吧:(1)把東西做出來,而不是追求把論文發出來,(2)把東西用起來,而不是做完就扔了,(3)把教學場景用起來,而不是把教學當作負擔,(4)把持久戰意識樹立起來,而不是期望速勝論。

——以上爲CCF YOCSEF杭州· Matlab被禁之特別論壇的發言」

參考鏈接:

https://www.zhihu.com/question/403055136

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章