巴黎奧運會正在熱火朝天地進行著,如果也舉辦一屆程序員奧運會的話,誰能奪魁呢?
肯定有人說是Linus Torvalds,Linus的確是個非常厲害的程序員,因為他有兩個名揚天下的作品:Linux和Git。
也可能有人說是美國程序媛Justine Tunney,她的主頁上列了一堆“嚇人”的項目,一般人擁有其中任意一個,都足以吹噓半輩子。
(詳情參見:)
如果單論技術能力,有一個人,也許比Linus Torvalds和Justine Tunney更強!
我在看他主頁項目列表的時候,感覺頭都炸了。
他開發了著名的模擬器QEMU和音視頻處理庫FFmpeg,僅僅是這兩項就超越絕大部分程序員了,他還寫過C編譯器,OpenGL實現,LTE軟基站,JS引擎,讓Linux在瀏覽器中跑起來,甚至還創造了計算圓周率的世界紀錄......
也就是說,這位老兄在操作系統、模擬器、多媒體、計算機圖形學、編譯器、編程語言、通信、甚至數學等領域跳來跳去,一年開發一個我一輩子都寫不出的軟件!
他寫的程序還總是比別的程序小幾個數量級,快幾個數量級!
這也太變態了吧?!
不得不承認,這個世界上真的有天才的存在。
他就是法國程序員Fabrice Bellard。
我們來看看他的神奇之路。
0 1
壓縮軟件
Fabrice Bellard出生于法國東南部的一個小城市格勒諾布爾,17歲上高中的時候發現自己的電腦硬盤又小又貴,他就想著如何節省硬盤空間,于是用匯編語言開發了一個壓縮程序LZEXE。
LZEXE壓縮效果極好,他的朋友也Copy過來使用,并且放到了BBS上,一下子火了,成了DOS時代最火的壓縮工具之一。
1996年,24歲的他寫了一個Java虛擬機,可以把Java代碼編譯成C代碼執行。
0 2
圓周率算法
1997年,他對圓周率的計算產生了興趣,通過改良Bailey–Borwein–Plouffe公式,提出了最快速的計算圓周率的算法,極大地降低了時間復雜度。
從此他在數學社區建立了自己的聲望,新算法也被命名為Bellard公式。
0 3
TinyGL(計算機圖形學)
1998 年,Bellard 在開發一個虛擬現實引擎項目的時候,需要用到OpenGL,這是一個用于渲染2D、3D矢量圖形的跨語言、跨平臺的API,OpenGL的開源實現是Mesa,Bellard覺得Mesa太慢了,于是自己寫了一個,這就是TinyGL。
TinyGL實現了OpenGL的子集,比Mesa或者其他商用實現(如Solaris OpenWin OpenGL)快得多,占用的資源少得多,并且比任何一個都小幾個數量級,Bellard 再次展示了他在編寫高效 C 代碼方面的超高技能。
0 4
FFmpeg(音頻視頻多媒體)
2000年,他化名Gérard Lantau,開始了他最重要和最受廣泛認可的項目之?:FFmpeg。
FFmpeg 是名副其實的數字視頻和音頻的“瑞士軍刀”,在視頻軟件和商業網站中無處不在:VLC,YouTube, iTunes ,它的強大之處不用我介紹了吧。
0 5
C語言混淆競賽
在創建FFmpeg不久,2000 年和 2001 年,Bellard 向國際C語言代碼混淆競賽 (IOCCC) 提交了兩個參賽作品,并且連續兩次獲獎。
要知道,IOCCC 是最具創造性的C語言混淆競賽,是程序員充分展示自己智力的最佳舞臺,能贏一次就非常厲害了,而Bellard輕輕松松就搞定了兩次。
下面是Bellard在2000年的獲獎作品,使用快速傅里葉變換在較短時間內計算出已知的最大素數(2^6972593-1)
int m = 754974721, N, t[1 << 22], a, *p, i, e = 1 << 22, j, s, b, c, U;
f (d)
{
for (s = 1 << 23; s; s /= 2, d = d * 1LL * d % m)
if (s < N)
for (p = t; p < t + N; p += s)
for (i = s, c = 1; i; i--)
b = *p + p[s], p[s] = (m + *p - p[s]) *
1LL * c % m, *p++ = b % m, c = c * 1LL * d % m;
for (j = 0; i < N - 1;)
{
for (s = N / 2; !((j ^= s) & s); s /= 2);
if (++i < j)
a = t[i], t[i] = t[j], t[j] = a;
}
}
main ()
{
*t = 2;
U = N = 1;
while (e /= 2)
{
N *= 2;
U = U * 1LL * (m + 1) / 2 % m;
f (362);
for (p = t; p < t + N;)
*p++ = (*p * 1LL ** p % m) * U % m;
f (415027540);
for (a = 0, p = t; p < t + N;)
a += (6972593 & e ? 2 : 1) ** p, *p++ = a % 10, a /= 10;
}
while (!*--p);
t[0]--;
while (p >= t)
printf ("%d", *p--);
}
0 6
TinyCC(最快的編譯器)
從2001年的比賽中還產生了一個副產品:TinyCC,這是世界上最快、最小的C語言編譯器,比其他大多數C編譯器都要小幾個數量級。
為了證明TinyCC的威力,Bellard基于TinyCC開發了一個只有138K的TCCBoot,可以在15秒以內編譯完Linux內核并且啟動,實在太嚇人了。
0 7
QEMU(模擬器)
2005年,Bellard又發布了一個爆炸性項目QEMU,這是一個開源的模擬器,可以用軟件的方式來模擬CPU,內存,I/O設備,給操作系統營造一個運行在硬件中的假象。
可以想想,開發這樣的軟件不但需要對操作系統極其了解,還得掌握極其廣泛的硬件知識,細節非常多,其難度甚至比操作系統都高。
0 8
創造PI的世界紀錄
2009年,Bellard又去玩數學了,他宣布把圓周率小數點后2.7萬億位以后,僅僅使用了一臺普通的PC,創造了世界紀錄。
此前的世界紀錄是由排名世界第47位的T2K Open超級計算機創造的,而Bellard這臺桌面電腦不到2000歐元,配置僅為:2.93GHz Core i7 CPU,6GB內存,7.5TB硬盤。
一個人加一臺電腦,竟然擊敗了超級計算機。
0 9
JSLinux(模擬器)
2011年,他的興趣又轉到了JavaScript身上,居然用JavaScript寫了一個PC模擬器,讓Linux,Windows可以在瀏覽器中運行起來。
這個模擬器仿真了一個32位的x86兼容處理器,一個8259可編程中斷控制器,一個8254可編程中斷計時器,和一個16450 UART。
不僅支持命令行,還支持圖形界面,看到 Windows 2000 竟然在瀏覽器中跑了起來,那種震撼的感覺,只能用臥槽來形容了!
10
LTE軟基站(通信)
2012年,Bellard的興趣再次轉移,一個人花了10個月時間,在一臺PC上居然實現了一個運行效率極高LTE軟基站。支持LTE TDD/FDD,NB-IoT、eMTC,最大可支持5載波2x2 MIMO或3載波4x4 MIMO。
這一切,只需要一個擁有i7 4核CPU的PC就夠了。
11
QuickJS (JavaScript解釋器)
2019年,Bellard發布了一個嵌入式的JavaScript執行引擎QuickJS。
QuickJS支持ES2020,小巧并且易于嵌入,只有幾個C文件,沒有任何其他外部依賴。
它運行速度很快,在一個單核CPU上可以在95秒內完成69000個ECMAScript測試。
我只是挑了Bellard開發的部分軟件,在他的網站bellard.org還有很多,最讓人震撼的是,這些軟件覆蓋了計算機科學的各個領域,千差萬別。
Bellard給人的印象是,他可以輕易進入一個他覺得有趣的領域,成為這個領域的專家,留下一個讓其他人愿意花費數年時間維護的軟件,自己則輕飄飄地離開,進入下一個領域。
有人問他為什么要研究這么多不同的東西時,他說:我討厭一直做同樣的事情,所以一定要切換不同的項目來玩......
Just for fun,這是Linus的口號,看來各個大神的追求都是一樣的啊。
Bellard對金錢或者名聲不感興趣(用化名做開源項目就是證明),他極少接受媒體的采訪,互聯網上他的資料非常少,遠不如Linus那樣聲名遠揚。
但是如果你如果你看過他那簡陋的個人主頁,bellard.org,看看那些展示了驚人的深度和廣度的項目,絕對會被震撼。
Bellard一定是穿越回來的,或者一定是在上帝模式下編程。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.