Matlab 被禁引發的思考:我們如何做出卡別人脖子的技術?

作者:包雲崗(中國科學院計算技術研究所)

【導讀】:6 月 6 日左右,有哈工大學生髮現無法使用 MathWorks 軟體。此事後來在網上引發熱議。

19 日,@包雲崗 老師在微博上釋出他由「Matlab 被禁」引發的思考,「程式設計師的那些事」已獲轉載許可。

Matlab 被禁引發的思考:我們如何做出卡別人脖子的技術?

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

現在我想和大家一起討論一下關於“明天”的事。我們每個人可以問自己一個問題:

從現在這個時間點開始,給 10 年時間,甚至 20 年時間,我們能做出一個

別人脖子的東西嗎?

(並不是說真的要去卡別人脖子,而是說要成為別人離不開的東西)

如果從這個角度來看這次“Matlab被禁”事件,那麼也許可以給我們更多的是啟發——我們都知道 Matlab 最初只是新墨西哥大學 Clever Moler 教授在 1970 年代用於教學中的一個小工具軟體,那它為什麼能在幾十年後成為卡我們脖子的利器?

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

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

Matlab 網站上有一篇 Moler 教授自己在 2018 年寫的 Matlab 簡史。他在開頭就寫道,在 1970 年和 1975 年他所在團隊向 NSF 申請了兩個專案,目標是“探索開發高質量數學軟體的方法、成本和資源”。

他自己也認為,某種程度上這兩個專案是失敗的,因為他們沒有發表出一篇論文,他們只是開發出了兩個軟體:一個是 EISPACK,另一個是 LINPACK。

而且這兩個軟體也談不上多大的學術創新,因為 EISPACK 就是把 1965-1970 年發表論文中用 Algo60 寫的演算法翻譯為 Fortran,而 LINPACK 則是直接用 Fortran 重寫一遍。

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

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

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

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

今天,由於嚴苛的科研競爭環境和考核壓力,很多人都把教學當作了一種負擔,認為會影響科研。但教學其實是試驗新技術、新工具最好的應用場景,因為試錯成本很低,而且學生的創新性和主動性,還能幫助改進最佳化技術和工具。Matlab 最終走上商業化,就是因為 Moler 教授在斯坦福大學給學生上課時,有兩個學生對 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 年賣給了 MIT 10個版權,收入 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 那樣的工作,做出能卡別人脖子的技術。這需要我們做出改變,觀念上的改變,行動上的改變。

至於哪些具體的改變,我想前面梳理的四點就算是拋磚引玉吧:

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

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

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

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

網友評論

包雲崗老師的這篇微博文章引發很多轉載,截至我們發文為止已有 3600+ 轉發。下面摘錄一些網友的評論。

Matlab 被禁引發的思考:我們如何做出卡別人脖子的技術?

Matlab 被禁引發的思考:我們如何做出卡別人脖子的技術?

Matlab 被禁引發的思考:我們如何做出卡別人脖子的技術?

Matlab 被禁引發的思考:我們如何做出卡別人脖子的技術?

Matlab 被禁引發的思考:我們如何做出卡別人脖子的技術?