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