哈工大、哈工程MATLAB被禁或嚴重影響高校科研,Python和Octave可替代
近日,哈工大又上了一波熱搜,原因是哈工大學生收到「工科神器」MATLAB正版軟件被取消激活的通知,顯示相關授權已被中止。同樣被禁用的還有哈工程學生。
MATLAB是MathWorks公司的,是世界上最強大的統計編程語言之一。很多高校都購買了正版,這一波幺蛾子正是因為實體清單來的。
Mathworks隨后回應稱,剛接到通知,根據實體清單,無法再提供服務。
或嚴重影響高校科研
說到具體影響,很多同學在說用不了正版用盜版就行了。
但事實上,對學術界的影響還是很大的。畢竟即便你用盜版的MATLAB完成了計算,也無法用計算結果來發表論文。
工程制造方面,包括汽車、電氣、電子信息等,MATLAB都是最基礎的計算仿真工具,國內現行沒有可以完全覆蓋MATLAB工作臺生態的軟件。現今禁令的對象只是兩所高校的學生,如果對象擴展到其他的高校,乃至國內工程師的話,許許多多科研人員的科研將很難開展,工程師也將面臨失業。
往深了說,禁用MATLAB的行為,展示了美國決定保護技術知識產權的決心。其實更應該解決的是軟件的依賴問題。正是因為這種根本性軟件的依賴,才有了諸多卡脖子的境遇。
就像探索科技(techsugar)分析師王樹一在文章中寫道,MATLAB被禁,不代表開源的Python和Julia就可以隨便用,甚至祖宗輩的C語言也不一定安全。就像Arm新技術被禁止華為使用,不代表華為就能自由使用所謂開源的RISC-V,開源技術的主導者仍然是美國。
「被禁用Matlab——如果牛頓定律是美國人發明并申請專利的,估計都要一并被禁用——之后,我們是要認真考慮,是否從底層構建一套非美系開發工具鏈,從語言到編譯器、仿真器,不要依賴于開源軟件,或者幻想專利過期就可以隨便用,如同RISC-V的例子,只要是美國技術,總會找到方法禁止你用。畢竟美國人瘋起來,哥倫布也擋不住。」
兵來將擋,水來土掩。
那么接下來,我們來看看如何搭建工作環境來替代MATLAB的功能呢?
以Python為例,先從IDE說起
由于機器學習大熱,Python在近兩年獲得了許多開發人員的青睞。而語言本身的逐步完善也給開發者很好的編程體驗。以Python為例,把IDE的需求分為兩種場景:普通編程和動態編程。
普通編程,就不得不提到Spyder——一個模仿「MATLAB」的簡單集成開發環境。Spyder的設計高度接近MATLAB,方便開發者觀察和修改數組的值。界面由許多窗格構成:
如果是MATLAB開發者,看到Spyder的界面一定會感到無比親切。總之,在普通編程的領域,Spyder可以提供大部分的功能,同時也更易于上手。
動態編程領域,Jupyter Notebook的人氣非常之高。就開發者使用感受而言,Jupter確實提供了很良好的開發體驗。
一方面,它的文檔集成了所有工作信息,并且導入文件重新運行也很方便。另一方面,Jupyter引入了Cell,每個實驗可以只跑一小個Cell里的代碼,這無疑是開發者的福音。直接看到小段代碼的運行結果而不被冗雜的工作所拖累,大大提高了開發效率。
矩陣運算?符號計算?Python的擴展庫幫了大忙!
其實就軟件開發而言,MATLAB最大的優勢一定是矩陣運算和仿真。MATLAB的全稱是Matrix Lab,翻譯成中文為矩陣實驗室,因此它的基本結構是數組。
但Python為了解決數組數組運算也花了不少功夫。
NumPy可以被稱作MATLAB數組運算的替代品,它的種種操作都高度「模仿」了MATLAB的操作。NumPy支持持高階大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。
除了NumPy,Python還有一個庫叫做SciPy。這個庫提供了一些高階運算功能,它的定位是一個開源的Python算法庫和數學工具包。
SciPy包含的模塊有最優化、線性代數、積分、插值、特殊函數、快速傅里葉變換、信號處理和圖像處理、常微分方程求解和其他科學與工程中常用的計算。
繪圖方面,matplotlib幫了大忙。matplotlib是Python編程語言及其數值數學擴展包 NumPy的可視化操作界面。它利用了通用的圖形用戶界面工具包,如Tkinter, wxPython, Qt或GTK+。
matplotlib在繪圖方面還是很受Python開發者歡迎的,甚至在繪圖效果方面比MATLAB更加優秀,這里就有一個繪圖對比,可以看到matplotlib的繪圖更為清晰。
當然Python還有很多庫也提供了數值分析的幫助,例如Pandas,Blaze等。
Simulink或成MATLAB最大優勢?
Simulink是MATLAB生態中一個非常重要的「特色」。它是用于動態系統和嵌入式系統的多領域模擬和基于模型的設計工具,在各個領域都為工程師提供了很大的幫助。
Python中暫時沒有官方的文檔和相應的庫來替代Simulink的功能,其他語言中也很難找到類似的仿真環境。
但是,Github上有這樣一個開源的工具叫做Simupy,看到這個名字開發者大概就已經恍然大悟了,這確實是一個意圖替代Simulink的Python仿品。
Github的介紹中提到,Simupy是用于仿真互連的動態系統模型的框架,并提供了一個基于Python的開源工具,該工具可用于基于模型和系統的設計和仿真工作流程中。
如果Python想在主流語言上站穩腳跟,發布官方的Simupy應該也只是時間的問題。總的來說,討論MATLAB禁用的問題時,Simulink確實很難去尋找替代品。
吳恩達推薦的Octave:MATLAB強有力的競品
吳恩達在自己的機器學習課程中也推薦過可以替代MATLAB的Octave。
也有專家表示,「Octave本來就是MATLAB強有力的競爭品,捏著鼻子大部分場景應該能替代。」
Octave界面,和MATLAB很像,因此對于換軟件的開發者來說,極易上手,幾乎是保留了原本的工作臺生態。
在費用上,Octave占了很大的優勢。Octave 完全免費且開源,MATLAB是商業軟件,價格很昂貴。
價格昂貴意味著完善的服務,大量的資源。但同時也意味著:需要龐大的空間。在這方面,Octave的安裝程序占用空間和MATLAB比可謂是「滄海一粟」。許許多多工科生不得不卸載MATLAB的主要原因還是為了內存空間。
因此,對于需要做深度科學研究的學者來講,完整的豐富的MATLAB庫提供了非常大的幫助。而對于普通的科研小白,或許Octave也是個不錯的選擇。
在語法和繪圖功能方面,Octave和MATLAB極其類似。語法幾乎是完全遷移,并且增添了許多人性化的設計。繪圖功能也并不弱于MATLAB,甚至輸出格式更多,公式更強大。有開發者反應Octave繪圖速度要比MATLAB慢一些。
展望未來:MATLAB不是無可替代,國產軟件厚積薄發
也有知乎網友激動地表示,國產軟件已經在路上了。半年內實現MATLAB科學計算與圖形顯示的70%;1 年內100%全部實現;3年內完全實現Simulink。
畢竟MATLAB的源代碼是用三種不同的語言編寫的,即C,C + + 和 Java。禁了MATLAB不假,我們自己寫!
總體來說,MATLAB的生態龐大,確實功能齊全。從1984年誕生到現在,已經有36年的歷史了,比Python還要早7年。
2020年6月份TIOBE編程社區最新發布的編程語言排行榜上看:
Python位居第三位,MATLAB位列第15。
如果禁用持續下去,轉戰Python將是一個不錯的選擇,除了Simulink之外,Python其實可以解決絕大部分MATLAB的應用問題,Simulink也有其他的替代方案,比如控制系統仿真用MSC Easy5等等。
科學計算方面,還可以用Octave,Julia,R等替代。
另外,更重要的是要加快替代軟件開發,同時規范商用軟件市場,讓國產軟件有發展空間和用武之地。
期待國產軟件在路上。