法布裡斯•貝拉(FabriceBellard)有著「天才程式設計師」之稱,因為FFmpeg、QEMU等項目而聞名於業界。同時,他憑著極其深厚的計算機底層功力編寫出了多款編譯器和虛擬機,並靠著出色的數學知識提出了最快圓周率算法貝拉公式。然而面對這些成就,貝拉坦言不過是因為是喜歡做自己感興趣的事情。
高中寫出壓縮軟體
貝拉於1972年生在法國格勒諾布爾,從小就對電子設備表現出與生俱來的興趣,據說他咿呀學語時說出的第一個詞語是「magn ́etophone」 (錄音機)。
良好的家境使得幼時的貝爾能夠更加容易地獲得他所探索領域的知識和設備。在他9歲時,家裡就給貝拉購買了一臺TI-59科學計算器,好滿足他對編程的好奇之心。11歲時,貝拉擁有了一臺更為先進的TI-49/4A私人電腦。15歲時,貝拉的裝備換成了Amstrad PC1512,更為強大的配置和全 qwerty 鍵盤,令貝拉對計算機和編程所表現出來的濃厚興趣發揮得淋漓盡致。
讀高中的貝拉在PC1512 上編程時,因為磁碟空間有限,他想到通過壓縮文件來節省有限的磁碟空間。他用8086 彙編語言(PC1512的機器語言)重寫了現有的壓縮方法LZSS,優化了程序的結構,使得壓縮、解壓過程變得更加快速,同時允許被壓縮的可執行文件在後續的啟動時不需要明確的解壓縮。這就是後來著名的可執行壓縮程序LZEXE,是當年DOS上第一個廣泛使用的文件壓縮程序。
貝拉將LZEXE發給幾個朋友並發布到各種論壇裡,引起了不小的轟動,貝拉的編程能力開始嶄露頭角。
求學時的思考
高中畢業後,貝拉先後進入巴黎高等綜合理工學院和法國電信研究院求學。
早年在編程方面的經歷,以及在理工學院求學的經歷讓日漸成熟的貝拉對計算機科學的整體面貌有了更為全面的認識和思考。他認為計算機科學最重要的兩個方面是學習計算機如何運作的原理和知識,以及通過學習計算本身來開發語言,用各種不同的方法讓計算機更加有效地工作。
而編程必是基於原始程序設計經驗,從一個非常靠近機器的語言開始,慢慢發展為高級的語言。貝拉覺得有志向的計算機科學家通過彙編語言和計算機硬體來深度理解計算機的工作原理是必不可少的一個環節。
發布最快圓周率的算法
1995年,貝拉用 C 語言編寫出了快速乘法,FFT 是快速傅立葉變換的縮寫,這是一個在數位訊號處理中非常常用和有效的算法。歐洲數學家JohnPollard曾發現用在 FFT 中的一個類似的過程可以用做有效的乘法,然而苦於沒有實際完整的代碼實現,可以說是貝拉最後用 C 語言實現 Pollard 的工作。
1997年,貝拉提出了最快速的計算圓周率的算法,他使用改良後的查德諾夫斯基方程算法來進行圓周率的計算,並使用貝利-波爾溫-普勞夫公式來驗證計算的結果。這種算法是當時也是目前所有圓周率算法中最快的一種,這個計算N位圓周率的公式比傳統的BBQ算法要快47%。為了紀念貝拉對圓周率算法所作出的傑出貢獻,他所使用的改良型算法被命名為「Fabrice Bellard算法」。
2009年,貝拉用桌面電腦打破了由超級計算機保持的圓周率運算記錄。他僅花費了116天,就計算出了PI的小數點後第2.7萬億位,超過了排名世界第47位的T2K Open超級計算機於2009年8月17日創造的世界紀錄,新紀錄比原紀錄多出1200億位,然而,與超級計算機比,貝拉所使用的的不過是價格不到2000歐元的個人PC,配置、性能根本無法與T2K Open相提並論。
貝拉在圓周率方面的輝煌成就,使他創造多次圓周率計算的世界紀錄,並因此而登上《科學美國人》法文版。
寫出VReng和TinyGL
1998年,貝拉開發出VReng (虛擬實境引擎),這是一個分布式 3D 應用程式,運用多播技術允許通過 Internet 連接在虛擬世界中導航。之後,貝拉注意到有效的OpenGL後端是基於軟體的,比實際需求要慢很多。於是他決定基於 VReng 的代碼來編寫一個更小和更快的3D光柵。
最終在 2002 年,貝拉發布了 TinyGL,一個 OpenGL 的子集的小型實現。TinyGL 比 Mesa 和Solaris 的OpenGL 快很多,是平臺獨立的,並且數量級比後二者小很多,總共才 400KB。這也是他在圖像處理領域取得的重要成就。
開發出 FFmpeg
2000年,貝拉化名Gérard Lantau公布了著名的FFmpeg項目。通過這個項目,貝拉將自己在電信和數位訊號處理方面的專長帶到了最前沿。
FFMPE允許用戶在許多不同的格式之間進行轉換。FFMPEG分割成幾個部分,由 libavcodec和libformat 構成,Libavcodec收集音頻和視頻編解碼庫,Libavformat提供音頻和視頻容器復用及解復用庫,這兩個模塊結合起來提供了解析和在不同格式之間進行轉換的各種方法。
這個項目無比強大,我們今天所熟知的視頻播放軟體,如暴風影音、QQ影音、YouTube、VLC等都使用了FFmpeg的編解碼函數庫。FFmpeg易擴展、功能強、速度快、佔資源少,支持的音視頻格式極其廣泛,基本上超越了其他所有同類軟體,被譽為處理數字視頻和音頻的「瑞士軍刀」。
開發出QEMU
繼FFmpeg之後,貝拉另一個傑出的成就便是在2005年發布的QEMU。
QEMU是一個處理器仿真,可以用軟體來模擬不同處理器體系,允許為一個特定處理器編譯的程序通過軟體仿真在另外一個體系上運行。QEMU近似於已有的Bochs、PearPC,但具有後兩者所不具備的高速及跨平臺等特性。
貝拉在QEMU之中大量加入了自己的設計構想,使得它不止是一個簡單的處理器仿真器,也可以通過動態翻譯來提高性能,藉助KQEMU加速器處理,甚至能模擬至接近真實電腦的速度。
QEMU非常強大,若沒有過硬的底層硬體和作業系統知識根本完成不了,現在許多的底層開發人員都依賴於它,甚至作業系統教學領域也多用其作為演示。
因為QEMU的速度之快、效率之高,它被包含在許多主要的虛擬化技術中,如 VirtualBox、Xen以及Linux Kernel-based 虛擬機(KVM)。
國際混淆C代碼大賽兩次奪冠
國際混淆C代碼大賽(IOCCC) 是C語言界的一項大事,目的是寫出最有創意的、最讓人難以理解的C語言代碼,它每年都吸引了大量的C程式設計師前去角逐榮譽,貝拉曾兩次奪冠。
一次是在2000年,貝拉向IOCCC提交了一個4KB大小的C語言編譯器子集 OTCC。OTCC不僅使貝拉順利奪得了大賽的冠軍,也成為後來的TinyCC的起點。TinyCC 是一個ANSIC99編譯器,比其它C 編譯器小很多,在發布後的很長時間裡一直被開發人員使用。為了演示它的效果,貝拉寫了一個工具用 TinyCC 在 15 秒之內就完成了Linux內核的編譯和啟動。
另一次是在2001年,貝拉設計出一個大小僅為475 字節的程序用於計算和列印最大已知的素數(26972593 – 1),他創造性地使用整數快速傅立葉轉換,在幾分鐘之內便能列印出結果。
Super-Productive Programmer
PavanYara曾形容貝拉是「世界上最多產的程式設計師(Super-ProductiveProgrammer)」,除了上述成就之外,他還有許多項發明創造。
例如,貝拉在2003年開發了Emacs的複製版QEmacs。
2005年,貝拉用帶有VGA顯卡的PC機改裝成DVB-T的信號發射器。公司為了防止洩密,不僅要封音效卡插口,還要焊死顯卡插口。
2011年,貝拉用JavaScript寫了一個PC虛擬機Js linux,仿真了一個32位的x86兼容處理器,一個8259可編程中斷控制器,一個8254可編程中斷計時器,和一個16450 UART。在普通桌面電腦的Chrome瀏覽器中,Jslinux只用了僅僅5.075秒就啟動了Linux。
自由軟體的積極倡導者
雖然貝拉多產,但是他最為看重的還是FFMPEG、 QEMU,他坦承這是他工作中的最重要的兩個項目,但是他花費大量心血開發並維護它們並不是出於對金錢的渴求。
事實上,和「Linux之父」 Linus Torvalds等人一樣,貝拉也是自由軟體的積極倡導人,他在自由軟體授權協議的保護下,將包括FFMPEG 、 QEMU在內的許多重要軟體的源碼都毫無保留地公布了,所有人不僅可以自由的下載他的程序,也可以下載和修改程序的原始碼。
貝拉說自己對金錢和名譽毫無興趣,當年化名Gérard Lantau公布FFMPEG的舉動便是有力的佐證,他只是簡單的喜歡在他所感興趣的、他認為有用的項目上花費精力和時間。
有人問他為什麼決定在這樣寬廣的領域中工作,貝拉回答說:「這也不是決定,只是往往我做同樣的事情時感覺很無聊,所以我嘗試一次又一次的轉換項目。」
當貝拉沉浸在這些工作中時,他希望與全世界共享他的工作成果,也希望這對對他人有所幫助。貝拉不屑於行政管理和社交任務,他喜歡做好的、自己感興趣的事情。
參考連結:
https://blog.csdn.net/robertsong2004/article/details/38817679
https://baike.baidu.com/item/%E6%B3%95%E5%B8%83%E9%87%8C%E6%96%AF%C2%B7%E8%B4%9D%E6%8B%89/9358492?fromtitle=Fabrice%20Bellard&fromid=11286214&fr=aladdin
https://baijiahao.baidu.com/s?id=1666893221300048664&wfr=spider&for=pc
程式設計師如何避免陷入「內卷」、選擇什麼技術最有前景,中國開發者現狀與技術趨勢究竟是什麼樣?快來參與「2020 中國開發者大調查」,更有豐富獎品送不停!
戳」閱讀原文「,立即參與中國開發者大調查!