近日,哈工大、哈工程MATLAB被禁用一事引發(fā)熱議。工科生如果失去MATLAB使用資格,是否在科研上寸步難行?此外,還有Python,Octave等可以作為開(kāi)發(fā)者和學(xué)術(shù)研究人員的替代之選。近日,哈工大又上了一波熱搜,原因是哈工大學(xué)生收到「工
近日,哈工大、哈工程MATLAB被禁用一事引發(fā)熱議。工科生如果失去MATLAB使用資格,是否在科研上寸步難行?此外,還有Python,Octave等可以作為開(kāi)發(fā)者和學(xué)術(shù)研究人員的替代之選。
近日,哈工大又上了一波熱搜,原因是哈工大學(xué)生收到「工科神器」MATLAB正版軟件被取消激活的通知,顯示相關(guān)授權(quán)已被中止。同樣被禁用的還有哈工程學(xué)生。
MATLAB是MathWorks公司的,是世界上最強(qiáng)大的統(tǒng)計(jì)編程語(yǔ)言之一。很多高校都購(gòu)買(mǎi)了正版,這一波幺蛾子正是因?yàn)閷?shí)體清單來(lái)的。
Mathworks隨后回應(yīng)稱(chēng),剛接到通知,根據(jù)實(shí)體清單,無(wú)法再提供服務(wù),這或會(huì)嚴(yán)重影響高校科研。
說(shuō)到具體影響,很多同學(xué)在說(shuō)用不了正版用盜版就行了。
但事實(shí)上,對(duì)學(xué)術(shù)界的影響還是很大的。畢竟即便你用盜版的MATLAB完成了計(jì)算,也無(wú)法用計(jì)算結(jié)果來(lái)發(fā)表論文。
工程制造方面,包括汽車(chē)、電氣、電子信息等,MATLAB都是最基礎(chǔ)的計(jì)算仿真工具,國(guó)內(nèi)現(xiàn)行沒(méi)有可以完全覆蓋MATLAB工作臺(tái)生態(tài)的軟件。現(xiàn)今禁令的對(duì)象只是兩所高校的學(xué)生,如果對(duì)象擴(kuò)展到其他的高校,乃至國(guó)內(nèi)工程師的話,許許多多科研人員的科研將很難開(kāi)展,工程師也將面臨失業(yè)。
往深了說(shuō),禁用MATLAB的行為,展示了美國(guó)決定保護(hù)技術(shù)知識(shí)產(chǎn)權(quán)的決心。其實(shí)更應(yīng)該解決的是軟件的依賴(lài)問(wèn)題。正是因?yàn)檫@種根本性軟件的依賴(lài),才有了諸多卡脖子的境遇。
就像探索科技(techsugar)分析師王樹(shù)一在文章中寫(xiě)道,MATLAB被禁,不代表開(kāi)源的Python和Julia就可以隨便用,甚至祖宗輩的C語(yǔ)言也不一定安全。就像Arm新技術(shù)被禁止華為使用,不代表華為就能自由使用所謂開(kāi)源的RISC-V,開(kāi)源技術(shù)的主導(dǎo)者仍然是美國(guó)。
「被禁用Matlab——如果牛頓定律是美國(guó)人發(fā)明并申請(qǐng)專(zhuān)利的,估計(jì)都要一并被禁用——之后,我們是要認(rèn)真考慮,是否從底層構(gòu)建一套非美系開(kāi)發(fā)工具鏈,從語(yǔ)言到編譯器、仿真器,不要依賴(lài)于開(kāi)源軟件,或者幻想專(zhuān)利過(guò)期就可以隨便用,如同RISC-V的例子,只要是美國(guó)技術(shù),總會(huì)找到方法禁止你用。畢竟美國(guó)人瘋起來(lái),哥倫布也擋不住。」

那么接下來(lái),我們來(lái)看看如何搭建工作環(huán)境來(lái)替代MATLAB的功能呢?
以Python為例,先從IDE說(shuō)起
由于機(jī)器學(xué)習(xí)大熱,Python在近兩年獲得了許多開(kāi)發(fā)人員的青睞。而語(yǔ)言本身的逐步完善也給開(kāi)發(fā)者很好的編程體驗(yàn)。以Python為例,把IDE的需求分為兩種場(chǎng)景:普通編程和動(dòng)態(tài)編程。
普通編程,就不得不提到Spyder——一個(gè)模仿「MATLAB」的簡(jiǎn)單集成開(kāi)發(fā)環(huán)境。Spyder的設(shè)計(jì)高度接近MATLAB,方便開(kāi)發(fā)者觀察和修改數(shù)組的值。界面由許多窗格構(gòu)成:
如果是MATLAB開(kāi)發(fā)者,看到Spyder的界面一定會(huì)感到無(wú)比親切。總之,在普通編程的領(lǐng)域,Spyder可以提供大部分的功能,同時(shí)也更易于上手。
動(dòng)態(tài)編程領(lǐng)域,Jupyter Notebook的人氣非常之高。就開(kāi)發(fā)者使用感受而言,Jupter確實(shí)提供了很良好的開(kāi)發(fā)體驗(yàn)。
一方面,它的文檔集成了所有工作信息,并且導(dǎo)入文件重新運(yùn)行也很方便。另一方面,Jupyter引入了Cell,每個(gè)實(shí)驗(yàn)可以只跑一小個(gè)Cell里的代碼,這無(wú)疑是開(kāi)發(fā)者的福音。直接看到小段代碼的運(yùn)行結(jié)果而不被冗雜的工作所拖累,大大提高了開(kāi)發(fā)效率。
矩陣運(yùn)算?符號(hào)計(jì)算?Python的擴(kuò)展庫(kù)幫了大忙!
其實(shí)就軟件開(kāi)發(fā)而言,MATLAB最大的優(yōu)勢(shì)一定是矩陣運(yùn)算和仿真。MATLAB的全稱(chēng)是Matrix Lab,翻譯成中文為矩陣實(shí)驗(yàn)室,因此它的基本結(jié)構(gòu)是數(shù)組。
但Python為了解決數(shù)組數(shù)組運(yùn)算也花了不少功夫。
NumPy可以被稱(chēng)作MATLAB數(shù)組運(yùn)算的替代品,它的種種操作都高度「模仿」了MATLAB的操作。NumPy支持持高階大量的維度數(shù)組與矩陣運(yùn)算,此外也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫(kù)。
除了NumPy,Python還有一個(gè)庫(kù)叫做SciPy。這個(gè)庫(kù)提供了一些高階運(yùn)算功能,它的定位是一個(gè)開(kāi)源的Python算法庫(kù)和數(shù)學(xué)工具包。
SciPy包含的模塊有最優(yōu)化、線性代數(shù)、積分、插值、特殊函數(shù)、快速傅里葉變換、信號(hào)處理和圖像處理、常微分方程求解和其他科學(xué)與工程中常用的計(jì)算。
繪圖方面,matplotlib幫了大忙。matplotlib是Python編程語(yǔ)言及其數(shù)值數(shù)學(xué)擴(kuò)展包 NumPy的可視化操作界面。它利用了通用的圖形用戶(hù)界面工具包,如Tkinter, wxPython, Qt或GTK+。
matplotlib在繪圖方面還是很受Python開(kāi)發(fā)者歡迎的,甚至在繪圖效果方面比MATLAB更加優(yōu)秀,這里就有一個(gè)繪圖對(duì)比,可以看到matplotlib的繪圖更為清晰。
當(dāng)然Python還有很多庫(kù)也提供了數(shù)值分析的幫助,例如Pandas,Blaze等。
Simulink或成MATLAB最大優(yōu)勢(shì)?
Simulink是MATLAB生態(tài)中一個(gè)非常重要的「特色」。它是用于動(dòng)態(tài)系統(tǒng)和嵌入式系統(tǒng)的多領(lǐng)域模擬和基于模型的設(shè)計(jì)工具,在各個(gè)領(lǐng)域都為工程師提供了很大的幫助。
Python中暫時(shí)沒(méi)有官方的文檔和相應(yīng)的庫(kù)來(lái)替代Simulink的功能,其他語(yǔ)言中也很難找到類(lèi)似的仿真環(huán)境。
但是,Github上有這樣一個(gè)開(kāi)源的工具叫做Simupy,看到這個(gè)名字開(kāi)發(fā)者大概就已經(jīng)恍然大悟了,這確實(shí)是一個(gè)意圖替代Simulink的Python仿品。
Github的介紹中提到,Simupy是用于仿真互連的動(dòng)態(tài)系統(tǒng)模型的框架,并提供了一個(gè)基于Python的開(kāi)源工具,該工具可用于基于模型和系統(tǒng)的設(shè)計(jì)和仿真工作流程中。
如果Python想在主流語(yǔ)言上站穩(wěn)腳跟,發(fā)布官方的Simupy應(yīng)該也只是時(shí)間的問(wèn)題。總的來(lái)說(shuō),討論MATLAB禁用的問(wèn)題時(shí),Simulink確實(shí)很難去尋找替代品。
吳恩達(dá)推薦的Octave:MATLAB強(qiáng)有力的競(jìng)品
吳恩達(dá)在自己的機(jī)器學(xué)習(xí)課程中也推薦過(guò)可以替代MATLAB的Octave。
也有專(zhuān)家表示,「Octave本來(lái)就是MATLAB強(qiáng)有力的競(jìng)爭(zhēng)品,捏著鼻子大部分場(chǎng)景應(yīng)該能替代。」
Octave界面,和MATLAB很像,因此對(duì)于換軟件的開(kāi)發(fā)者來(lái)說(shuō),極易上手,幾乎是保留了原本的工作臺(tái)生態(tài)。
在費(fèi)用上,Octave占了很大的優(yōu)勢(shì)。Octave 完全免費(fèi)且開(kāi)源,MATLAB是商業(yè)軟件,價(jià)格很昂貴。
價(jià)格昂貴意味著完善的服務(wù),大量的資源。但同時(shí)也意味著:需要龐大的空間。在這方面,Octave的安裝程序占用空間和MATLAB比可謂是「滄海一粟」。許許多多工科生不得不卸載MATLAB的主要原因還是為了內(nèi)存空間。
因此,對(duì)于需要做深度科學(xué)研究的學(xué)者來(lái)講,完整的豐富的MATLAB庫(kù)提供了非常大的幫助。而對(duì)于普通的科研小白,或許Octave也是個(gè)不錯(cuò)的選擇。
在語(yǔ)法和繪圖功能方面,Octave和MATLAB極其類(lèi)似。語(yǔ)法幾乎是完全遷移,并且增添了許多人性化的設(shè)計(jì)。繪圖功能也并不弱于MATLAB,甚至輸出格式更多,公式更強(qiáng)大。有開(kāi)發(fā)者反應(yīng)Octave繪圖速度要比MATLAB慢一些。
展望未來(lái):MATLAB不是無(wú)可替代,國(guó)產(chǎn)軟件厚積薄發(fā)
也有網(wǎng)友激動(dòng)地表示,國(guó)產(chǎn)軟件已經(jīng)在路上了。半年內(nèi)實(shí)現(xiàn)MATLAB科學(xué)計(jì)算與圖形顯示的70%;1 年內(nèi)100%全部實(shí)現(xiàn);3年內(nèi)完全實(shí)現(xiàn)Simulink。
畢竟MATLAB的源代碼是用三種不同的語(yǔ)言編寫(xiě)的,即C,C + + 和 Java。禁了MATLAB不假,我們自己寫(xiě)!
總體來(lái)說(shuō),MATLAB的生態(tài)龐大,確實(shí)功能齊全。從1984年誕生到現(xiàn)在,已經(jīng)有36年的歷史了,比Python還要早7年。
2020年6月份TIOBE編程社區(qū)最新發(fā)布的編程語(yǔ)言排行榜上看:
Python位居第三位,MATLAB位列第15。
如果禁用持續(xù)下去,轉(zhuǎn)戰(zhàn)Python將是一個(gè)不錯(cuò)的選擇,除了Simulink之外,Python其實(shí)可以解決絕大部分MATLAB的應(yīng)用問(wèn)題,Simulink也有其他的替代方案,比如控制系統(tǒng)仿真用MSC Easy5等等。
科學(xué)計(jì)算方面,還可以用Octave,Julia,R等替代。
另外,更重要的是要加快替代軟件開(kāi)發(fā),同時(shí)規(guī)范商用軟件市場(chǎng),讓國(guó)產(chǎn)軟件有發(fā)展空間和用武之地。
期待國(guó)產(chǎn)軟件在路上。
來(lái)源:知乎、新智元
編輯:夢(mèng)佳、舒婷
如有侵權(quán),聯(lián)系刪除!