從華為養豬說起,聊聊我的中國計算機發展的一個遺憾–為和我們沒有開發出自己的編程語言

  • 2021 年 2 月 17 日
  • 筆記

節日最後一天,沒什麼事情,想聊聊我對中國計算機技術發展的一個遺憾,為什麼我們沒有開發出自己的編程語言

 

1.華為推「智慧養豬」,或許暗示方向有變

近日,華為機器視覺總裁在微頭條爆料稱,華為機器視覺推出了智慧養豬方案。養殖業的發展方向是數字化、智能化和無人化。此前任正非接受媒體採訪時也曾提及養豬,他說:「如果我考不上大學,養豬可能也是養豬狀元」。

由於眾所周知的原因,因為美國制裁華為無芯片可用,導致華為無手機可賣,在這種情況下,企業靠情懷是留不住人的,最主要的還是活下來。

華為養豬可以說是華為要生存下來的無奈之舉,用時間換空間。你可以說華為的智慧養豬採用了全新的5G,AI等先進技術,但是那畢竟對技術要求不高。 

這就像自動駕駛,雖然有人說自動駕駛應該先用在農業耕地上面,等成熟了再推廣到城市道路上,但是毫無疑問,農業對無人駕駛要求遠遠比城市的低很多。沒有太大參考意義。

 

2.方舟編譯器暗淡,中國推自己的編程語言前途渺茫

 方舟編譯器是華為推出的首個完全自主研發的編譯器平台,於2019年8上線。他包含編譯器、工具鏈、運行時等關鍵部件。

在發佈方舟之前,方舟說自己編譯的App比Google的快。

也許多少有點宣傳的噱頭,導致知乎上有很多人討論方舟編譯器。

讚揚支持者有之,冷嘲熱諷者有之

總之,方舟編譯器轟動一時。

 在我看來,方舟編譯器的重要性不亞於鴻蒙操作系統的推出。

編譯器有了,如果華為想推出自己的編程語言,就會水到渠成。

射人先射馬,擒賊先擒王。如果沒有自己的編譯器,想做自己的操作系統無異於水中月,鏡中花。

但是,隨着華為出售榮耀手機,華為推智慧養豬。。。

這些都讓方舟編譯器前途暗淡,讓中國推自己的編程語言前途渺茫。

 

 

3.再論編譯器的重要性

編譯器,簡單的說,就是打通高級語言和硬件芯片的橋樑。這裡引用知乎上「養貓的哈士奇」的一段話來說明編譯器。

編譯器是很基礎的軟件,不過已經很多年沒有冒出新的編譯器了,技術也很成熟了,華為為什麼要搞一個方舟編譯器呢?當然是為了編譯程序使之更好的運行了。多數人都知道JAVA是一個跨平台的編程語言,為什麼JAVA可以跨平台呢?這就是JAVA虛擬機(JVM)的功勞,JAVA語言其實是通過JVM來運行的,JVM與各個平台之間做了適配,其實跨平台的是JVM,Android的ART虛擬機是一個特別的JVM。

在計算機領域沒有什麼問題是不能通過增加一個間接的中間層來解決的,JVM就是這樣的中間層。很多人會問Android 的APP需要跨平台運行嗎?現在來看不需要,那Google為什麼選JAVA作為開發語言呢?可能有很多因素的考量,但是誰也沒有想到SUN居然被著名的專利流氓ORACLE收購了,即便Google把JVM改寫了好幾遍也依然沒躲過這個專利官司,

真正的大公司還是要有自己能完全控制的編程語言呀。

也正是因為此,微軟推NET/TypeScript語言,谷歌推Go/Kotin語言,蘋果推Object-C/Swift語言也就在情之中了。

一句話:卧榻之側豈容他人鼾睡,最重要的核心技術必須自己掌握

 

 

4.現代流行編程語言的比較

我們摘錄了runoob網站上列出的幾中編程語言,做一個比較。在下表裡,列出了當前最流行的14種開發語言。

注意:像VB基本上被淘汰所以不再加入,而像Django太小眾了,所以也忽略了。

可以發現,這些開發語言,美國佔10份,日本1份,新西蘭1份,加拿大1分,荷蘭1分。

事實上,Ruby也不怎麼流行了,R語言主要用於教學,受眾小。再去掉他們2個 。

最終的結論是:流行的12種開發語言,美國佔了10份,新西蘭1份,加拿大1分,中國的是0。

 

語言   發明國家與作者 發明時間   簡單說明  
 C語言 美國貝爾實驗室  1972年 

 C語言基本上是整個計算機體系的鼻祖,Windows,Linux等內核基本上都使用C語言。介於高級語言和彙編語言之間,

可以說,C語言是計算機體系里唯一不可替代的語言。      

 
C++  美國貝爾實驗室 1983年

C++是C語言的繼承,它既可以進行C語言的過程化程序設計,又支持面向對象設計,但是他的最大問題是:太難了。

特別是多繼承,多接口等問題搞起來真的非常頭疼。

 
 Java   美國Sun  1995年  

Java 是由 Sun推出的高級程序設計語言。Java 可運行於多個平台,如 Windows, Mac OS 及其他多種 UNIX 版本的系統。同時借鑒了C++的優點,去掉了C++的缺點。

 
C#  美國微軟 2000年 微軟推出的編程語言,借鑒了Java的有點,增加了自己的亮點。 (這裡沒有增加VB,因為VB用的娛來越少)  
R語言  新西蘭Ross Ihaka 1993年 R語言,一種自由軟件編程語言與操作環境,主要用於統計分析、繪圖、數據挖掘。  
PHP  加拿大Rasmus Lerdorf 2005年左右 用來製作Web的語言(核心編譯器採用C語言)  
Python 荷蘭Guido van Rossum 1990年左右 Python是一種廣泛使用的解釋型、高級和通用的編程語言。作者說「課餘」時為了打發時間就想寫一個腳本解釋器,然後Phthon就出來了(有點類似Linux)。但是他剛出生併火,隨着互聯網發展,他才逐漸火起來。  
Perl  美國Larry Wall 2000年左右 Perl是高端、通用、解釋型、動態的編程語言家族。  
Ruby 日本まつもとゆきひろ 2000年左右 Ruby 是一種面向對象、命令式、函數式、動態的通用編程語言。  
Rust 美國Mozilla 2014 Rust 語言是一種高效、可靠的通用高級語言。  
Go 美國谷歌 2007年 Go 語言被設計成一門應用於搭載 Web 服務器,存儲集群或類似用途的巨型中央服務器的系統編程語言。  
Swift 美國蘋果 2015年 Swift 是一種支持多編程範式和編譯式的開源編程語言,蘋果於2014年WWDC(蘋果開發者大會)發佈,用於開發 iOS,OS X 和 watchOS 應用程序。  
Kotin 美國谷歌 2017年 Kotlin 是一種在 Java 虛擬機上運行的靜態類型編程語言,被稱之為 Android 世界的Swift,由 JetBrains 設計開發並開源  
JavaScript 美國谷歌 Javascript雖然是網景發明的,但是現在主要採用谷歌V8引擎,所以之際控制權在谷歌手裡,因此這裡谷歌統計。  

 

 

5.開源了,還需要推出自己的編程語言嗎?

一個常見的問題是:現在編程語言甚至編譯器都開源了,還需要開發自己的開發語言嗎?

例如現在的Go語言,Swfit,Kotin,以及微軟的.NET,也都早已經公開了自己的源代碼,還有必要在乎這個語言是自己的還是別人的嗎?

我們常說:一流的企業賣標準,二流的企業賣品牌,三流的企業賣產品,四流的企業賣苦力;還是要開源的 (這就像TikTok,TikTok數據存美國,使用人是美國,僱傭的人也是美國,但是美國還是不放心,要求出售他)

 

1)開源是手段,不是目的

我們認為,現在的開源是手段而不是目的。也就是開源是為了佔用市場率,吸引更多開發者,而不是真的為了開源而開源。

如果說的更直白些,我不認為微軟真想開源NET,谷歌想開源Kotin,蘋果想開源Kotin。

畢竟那些代碼都是自己的工程師辛辛苦苦寫的,幹嘛要無私奉獻開源出來?企業又不是慈善機構。

心理不願意但是身體很誠實,不開源會讓使用者擔心代碼後沒有留有後門,有沒有BUG等等,

而開源了,還可以廣納天下人才為我所用,有漏洞也能及時解決,何樂而不為。

 

2)有些最核心技術未必真的開源

很多開源確實是為了共享,但是有時候最核心的未必公開。例如視覺圖片處理開源軟件OpenCV,公開了很多代碼,但是對於一些最核心

的代碼,他是不開源的。

 

3)免費的未必是最便宜的

我們都喜歡免費,一個常見的營銷是手機,想要0元就可以拿到XX手機,心動了嗎?心動就來那吧,可是當你買時才發現,0元手機的前提是每個月至少消費200元,

而且至少要簽訂24個月。所以,免費的背後有時候是更大的消費。

 

4)開源協議受限

開源了免費的,不代表可以無限制使用。最直接的例子是芯片的RISC-V是一個基於精簡指令集(RISC), 對指令集使用,RISC-V基金會不收取高額的授權費。開源採用寬鬆的BSD協議,

企業完全自由免費使用,同時也容許企業添加自有指令集拓展而不必開放共享以實現差異化發展。

但是,當美國制裁華為時,你就會發現,此時就算是開源的可能你也無權使用。

 

 

6.中國為什麼產不出自己的開發語言?

1.中國市場足夠大

每年的雨水季節,非洲草原植物生長茂盛,食草動物大量繁殖,這時食物充沛。因為食物太多了,獅子對走過身邊的羚羊已經沒有興趣。

這可以簡單解釋為什麼中國產不出自己的開發語言。

中國市場太大了,做底層開發(例如開發語言編譯器,設計一套編程語言)太辛苦,吃力不討好,還是做App賺錢快。

不管是拼多多還是美團餓了么,甚至包括阿里騰訊,不用太為錢發愁。

例如中國14億人,一人給你一元錢,看起來沒多少,但是合起來就是14億。

這麼大的市場可以讓中國的巨頭活的很好。

但是,美國就不一樣了,美國才3億多人口,而且美國的巨頭比中國的大很多,那裡養活不了這麼多巨頭,

因此一方面對外進行全球擴張,一方面對內互相共入對方的地盤。

 

2.政旨與語言因素

中國的互聯網確實阻斷了很多國外優秀的技術網站,使得在中國發佈的新的技術很難推廣的全球。

難易引起國外開發者的注意。

可能語言也算一個,畢竟英語是全球通用語言。在上面的流行語言里,除了日本的,基本上都是說英語的國家。

 

 

附:關於人口的一些隱憂

2020年,中國公布的生人口數據為1003萬,與2019年1465萬出生人口相比,斷崖式下滑。

而且,長遠看,中國人口下降是必然。

過去,中國互聯網之所以成功,最根本的原因就是人口多,市場廣。

當人口下降後,市場縮小,就可能會出現競爭激烈的情況。

這或許會逼迫一些國內廠商開發自己的編程語言。