哈工大 / 哈工程 MATLAB 被禁:我們?nèi)绾巫龀瞿芸▌e人脖子的軟件
今年6月,哈爾濱工業(yè)大學(xué)、哈爾濱工程大學(xué)因被列入美國商務(wù)部實體名單,并被禁用數(shù)學(xué)基礎(chǔ)軟件Matlab,引發(fā)了關(guān)于國產(chǎn)軟件的大規(guī)模討論。
對于大多數(shù)理工科學(xué)生而言,Matlab并不陌生,Matlab是一款被廣泛應(yīng)用于教學(xué)、科研、工業(yè)領(lǐng)域的基礎(chǔ)軟件,而這類EDA(Electronic Design Automation,電子設(shè)計自動化)軟件,卻剛好又是我國的短板。正因如此,不少行業(yè)人士感慨,這次我們真的是被卡脖子了。
6月19日,中科院計算所研究員、先進計算機系統(tǒng)研究中心主任,中國開放指令生態(tài)聯(lián)盟秘書長包云崗在微博上分享了他在「CCF YOCSEF杭州· Matlab被禁之特別論壇」上關(guān)于“Matlab被禁”事件帶來的思考與啟發(fā)的發(fā)言。
包云崗指出,當(dāng)我們在思考如何解“Matlab被禁”這個燃眉之急的同時,更需要考慮如何才能在未來做出像Matlab這樣的工具,做出能卡別人脖子的技術(shù)。
至于如何做出像Matlab這樣能卡別人脖子的軟件,包云崗總結(jié)為如下四點:
第一,把東西做出來,而不是追求把論文發(fā)出來;
第二,把東西用起來,而不是做完就扔了;
第三,把教學(xué)場景用起來,而不是把教學(xué)當(dāng)作負(fù)擔(dān);
第四,把持久戰(zhàn)意識樹立起來,而不是期望速勝論。
以下為包云崗在「CCF YOCSEF杭州· Matlab被禁之特別論壇」發(fā)言原文,雷鋒網(wǎng)做了不改變原意的編輯整理:
很多人都在思考如何解決“Matlab被禁”這個燃眉之急的問題。大家回顧了中國的工業(yè)軟件發(fā)展之痛,批評國內(nèi)的盜版問題、知識產(chǎn)權(quán)保護問題、重硬件輕軟件等一系列問題。也提出了很多好的建議,比如給了針對Matlab各種功能的開源軟件替代方案。這些都算是“昨天和今天”的事。
現(xiàn)在我想和大家一起討論一下關(guān)于“明天”的事。我們每個人可以問自己一個問題:從現(xiàn)在這個時間點開始,給10年時間,甚至20年時間,我們能做出一個卡別人脖子的東西嗎?(并不是說真的要去卡別人脖子,而是說要成為別人離不開的東西)
如果從這個角度來看這次“Matlab被禁”事件,那么給我們更多的是啟發(fā)。
我們都知道Matlab最初只是新墨西哥大學(xué)Clever Moler教授在1970年代用于教學(xué)中的一個小工具軟件,那它為什么能在幾十年后成為卡我們脖子的利器?
我們一起來梳理一下Matlab發(fā)展過程中折射出來的幾個理念:
一、把東西做出來,而不是追求把論文發(fā)出來。Matlab網(wǎng)站上有一篇Moler教授自己在2018年寫的Matlab簡史。他在開頭就寫道,在1971年和1975年他所在團隊向NSF申請了兩個項目,目標(biāo)是“探索開發(fā)高質(zhì)量數(shù)學(xué)軟件的方法、成本和資源”。他自己也認(rèn)為,從某種程度上來看,這兩個項目是失敗的,因為他們沒有發(fā)表出一篇論文,他們只是開發(fā)出了兩個軟件:一個是EISPACK,另一個是LINPACK。而且這兩個軟件也談不上有多大的學(xué)術(shù)創(chuàng)新,因為EISPACK就是把1965-1970年發(fā)表論文中用Algo60寫的算法翻譯為Fortran,而LINPACK則是直接用Fortran重寫一遍。
二、把東西用起來,而不是做完就扔了。雖然EISPACK、LINPACK沒有相關(guān)論文發(fā)表,學(xué)術(shù)創(chuàng)新也似乎不是很高,但確實是兩個很有用的軟件。EISPACK的開發(fā)團隊在1974年寫了一本使用手冊,我在Google Scholar上查了一下,到現(xiàn)在已經(jīng)被引用了1800多次,1970-1980年代使用非常廣泛。LINPACK更是世界超級計算機排行榜Tops500的基準(zhǔn)測試程序,可以說是影響了世界超級計算機的發(fā)展。
三、把教學(xué)場景用起來,而不是把教學(xué)當(dāng)作負(fù)擔(dān)。Matlab是Moler教授想把EISPACK和LINPACK應(yīng)用于教學(xué)過程中的產(chǎn)物。如果Moler教授不是用心去做教學(xué),不是為了能讓學(xué)生更好地掌握線性代數(shù)與數(shù)值分析,更容易地使用EISPACK和LINPACK這兩個軟件,那么他就不會有動機自己動手去寫一個Matlab小工具來把這兩個軟件接口封裝起來,從而方便學(xué)生使用。
今天,由于嚴(yán)苛的科研競爭環(huán)境和考核壓力,很多人都把教學(xué)當(dāng)作了一種負(fù)擔(dān),認(rèn)為會影響科研。但教學(xué)其實是試驗新技術(shù)、新工具最好的應(yīng)用場景,因為試錯成本很低,而且學(xué)生的創(chuàng)新性和主動性,還能幫助改進優(yōu)化技術(shù)和工具。Matlab最終走上了商業(yè)化道路,就是因為Moler教授在斯坦福大學(xué)給學(xué)生上課時,有兩個學(xué)生對Matlab很感興趣,主動提出用C重寫一遍,同時移植到IBM PC上。很多技術(shù)最早都是從課堂上發(fā)展起來,比如RISC架構(gòu)是David Patterson教授在伯克利的課程實驗。
四、把持久戰(zhàn)意識樹立起來,而不是期望速勝論。堅持圍繞一件事做,幾十年后的累積效應(yīng)是驚人了。中國今天被卡脖子的東西,幾乎都是別人積累了20年以上的東西。
從第一版Matlab算起到現(xiàn)在已經(jīng)有40年,1980年代初的第一代EDA軟件到現(xiàn)在也有快40年,Intel在1970年左右第一代微處理器到現(xiàn)在已經(jīng)有50年。臺積電1987年成立到現(xiàn)在也是積累了30多年。其實在學(xué)術(shù)界也有很多有影響力的工作也是多年積累的產(chǎn)物,我們可以看一下ACM System Software Award,獲獎的軟件基本上都是持續(xù)積累了幾十年,比如LLVM持續(xù)優(yōu)化了17年、Eclipse優(yōu)化了19年、Wireshark優(yōu)化了22年、Coq優(yōu)化了31年,GCC則有33年。
再仔細(xì)剖析一下Matlab以及MathWorks這家公司,可以說是持久戰(zhàn)的典范。MathWorks在1984年成立,只有1名員工。第一筆收入是1985年賣給了MIT10個Matlab版權(quán),收入500美元。MathWorks公司早期很不起眼,有個玩笑稱它前7年員工數(shù)每一年翻一番——1984年1個員工,1985年2個員工,1986年4個員工,直到7年后的1991年也才只有128個員工。和今天很多初創(chuàng)公司相比,這個成長速度就像是蝸牛了。但是他們力出一孔,圍繞著Matlab不斷增加功能,使Matlab成為一個行業(yè)領(lǐng)先的工具軟件。1997年,MathWorks的營業(yè)額達到了5000萬美元,380名員工。如今2019年MathWorks公司營業(yè)額是10億美元,3000多員工,全球有400多萬用戶。雖然從營業(yè)額看并不大,但其實我們更應(yīng)該學(xué)習(xí)這種模式——不斷積累。把一項技術(shù)做到極致,成為某個細(xì)分領(lǐng)域的隱形冠軍。
最后總結(jié)一下,當(dāng)我們在思考如何解“Matlab被禁”這個燃眉之急的同時,更需要考慮如何才能在未來做出像Matlab那樣的工作,做出能卡別人脖子的技術(shù)。這需要我們做出改變,觀念上的改變,行動上的改變。