Fabrice Bellard:一个人抵得上一个百人团队
Posted LiveVideoStack_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fabrice Bellard:一个人抵得上一个百人团队相关的知识,希望对你有一定的参考价值。
如果有人告诉你,有一个程序员仅仅用了10个月时间就写了一个软基站,你肯定觉得是天方夜谭,因为这种大工程可是几百个人的工作量,而且还得是精英团队,怎么可能由一个人完成?
可世界上总有一些天才式的人物,他们站在普通人无法企及的高度,仅凭一己之力,在短时间内,就能实现常人需要花费数年甚至一生才能达到的成就,法国程序员Fabrice Bellard就是其中之一。
Fabrice Bellard,法国天才程序员
Hecker News上有这样一条对Fabrice Bellard的评价:
在很多人眼里,Bellard是一个非人类的存在,似乎拥有某种超能力,使他超越了人类所能达到的极限。
天赋童年
1972年,Bellard出生于法国的Grenoble(法国东南部城市)。咿呀学语时,Bellard就展现出了对电子产品的浓厚兴趣,从他嘴里说出的第一个单词就是“录音机”。
自小家境优渥,使得Bellard可以接触到各类科技和电子知识。
9岁时,他就开始在TI-59计算器(一种可编程电子计算器)上练习编码技术。
11岁,家里购买了第一台家庭电脑——TI-99/4A,Bellard开始用电脑中自带的TI BASICS学习编程。
15岁时,他拥有了人生中第一台个人电脑——Amstrad PC1512,正是在这台电脑上,Bellard收获了他的第一次成功。
意外成名
1989年,还在读高中的Bellard开发了可执行压缩程序LZEXE——一种在MS-DOS下将可执行文件压缩为更小的自解压形式的实用程序。在他的个人网站上,他这样描述当时的情形:
“LZEXE是我在1989和1990两年间开发的,那个时候我17岁。那时的硬盘不仅容量小,而且价格昂贵。我当时的电脑上只有两个软盘(一个5寸软盘只有360K),因此如何节省空间是我面临的一个大问题。
我开发LZEXE主要是方便自己使用,后来送给了一些朋友。没想到,这个程序被放到了BBS上,结果一下子出了名,我对此并未做任何宣传,能够成功完全在意料之外。”
超人成就
从LZEXE开始,Bellard便开启了他的封神之路。
1996年,在IRISA(法国一家计算机科研机构)实习期间,Bellard编写了一个名为Harissa的Java环境,该环境包括一个Java虚拟机和一个强大的编译器——Hec,这个编译器生成的C代码,可以被编译为高效的本地代码。这一年,他只有24岁。
1997年,他发现了一种可以更快计算圆周率的新公式——Bellard公式,用来计算π的第n位二进制数,它是Bailey-Borwein-Plouffe公式(BBP公式)的一种变体,但在计算速度上提升了43%。
Bellard曾三度赢得IOCCC大赛(国际 C 语言混乱代码大赛):
国际 C 语言混乱代码大赛(IOCCC, The International Obfuscated C Code Contest)是一项国际编程赛事,目的是写出最有创意且最让人难以理解的 C 语言代码,并限制在 4 KB以内。
2000 年,他所开发的程序实现了模块化快速傅立叶变换,并用它打印出当时最大的已知素数。
2001 年,他编写了一个运行在 i386 Linux上的C语言编译器子集——OTCC,其源代码大小仅为 3 KB,日后开发的TinyCC就源于这个作品。
2018 年,他开发了一个图片解码器,这个只有4KB源代码的程序,却能够解码分辨率为128*128的著名“Lena”测试图片。
IOCCC官网上Fabrice Bellard的获奖记录
在Bellard的众多成就中,最被人熟知的莫过于FFmpeg和QEMU。Bellard自己也认为,FFmpeg和QEMU是到目前为止他最重要的两个项目。
2000年,Fabrice Bellard化名“Gerard Lantau”,发布了开源软件项目FFmpeg,这个项目可以说充分体现了他在通信以及数字信号处理领域的卓越才能。FFmpeg被誉为音视频处理的“瑞士军刀”,足以说明它的强大。它包含大量可以处理音视频及其他多媒体文件的函数库,主要用于音视频的编解码,转码,视频采集、格式转换、后期效果处理等。
libavcodec 和libavformat是FFmpeg的两个重要组成部分,libavcodec为不同的音视频格式提供了大量的编解码器;而libavformat可以封装和解封装不同的媒体容器格式。这两个部分相互合作,从而高效转换音视频格式。Bellard为FFmpeg所设计的架构非常灵活且易扩展,支持的音视频格式非常广泛,据目前的数据显示,公开描述使用FFmpeg的知名公司有47家(这其中包括我们熟悉的Youtube、VLS和Trell),但我们知道,这只是实际使用FFmpeg公司中的沧海一粟 。不过讽刺的是,某些同样赫赫有名的公司却因为没有遵守开源协议,当年被挂在了FFmpeg官网的Hall of Shame上。
发布FFmpeg的同年,Bellard还参加了我们上文提到过的IOCCC大赛,并赢得比赛,斩获奖项。
2005年,又一个历史性时刻来临。这一年,Bellard发布了他人生中最重要的程序之一——QEMU。
QEMU是一个免费的开源模拟器和虚拟程序,可以实现硬件的虚拟化。它通过动态二进制翻译模拟计算机处理器,并为其提供一组不同的硬件和设备模型,使计算机能够运行各种客户操作系统。它还可以与KVM 一起使用,以接近本机的速度运行虚拟机。QEMU 还可以模拟用户级进程,允许为一种架构编译的应用程序在另一种架构上运行。
在 QEMU 之前,很多模拟器只符合开放性和通用性的要求,但 Bellard 开发的QEMU却兼具了性能、可靠性和通用性。Bellard 的可贵之处不在于他提出了硬件模拟的想法,而在于他可以将其体现在程序员和测试人员的常用工具中。现在, QEMU 已成为许多程序员不可或缺的工具。
源于热爱
众所周知,Bellard开源了他的主要项目,这意味着其他人可以免费下载他所开发的程序,并对其中的源代码进行修改。而Bellard这么做的原因却非常简单:他从不看重名望与金钱,能够开发既有趣、又实用的程序才是他的乐趣所在。当被问到,为什么所开发的项目涉及如此多的领域时,Bellard是这样回答的:
“总做同一件事常常让我感到无聊,所以我时不时会换个方向。”
Bellard愿意将自己的成果分享给世界上的每一个人,并希望能对他们有所帮助。
国外曾有一篇文章这样描述他:
Bellard的独特之处就在于他创造了许多对他人有意义、可以为他人所用的程序。
求学生涯
Bellard过往的求学经历中,以在École Polytechnique(巴黎综合理工学院)受到的教育对他影响最大。这所拥有200年历史的法国名校曾出过三位诺贝尔奖得主,一位菲尔兹奖得主,三位法国总统和众多法国及国际大公司的CEO。学校所设课程相当广泛,并着重于培养学生的批判性思维,为他们提供丰富的学习资源。
在这里的5年时间,Bellard 得到迅速成长,他日后开发的很多项目都是在École Polytechnique期间的学生作业,完成这些作业也为他日后在计算机科学领域所取得的非凡成就打下了坚实的基础。
Bellard认为计算机科学最重要的两个方面是:
研究计算机如何工作
通过计算机语言的发展以及研究计算本身来获得使用计算机的不同方式
对计算理论的关注就得益于他在Ecole Polytechnique所受到的教育。
直到今天,他依然认为有抱负的计算机科学家必须通过汇编语言和电脑硬件深入了解计算机。
数学挑战
前文提到过,Bellard在数学领域也卓有成就:2001年,Bellard用自己开发的程序打印出当时最大的已知素数。而在2009年12月31日这天,Bellard又抛出了一个重磅新闻:他只用一台普通家用台式机,耗时90天,就计算出了圆周率小数点后2.7万亿位,这一数字打破了当时的世界纪录,引得各家媒体争相报道,Bellard还登上了《科学美国人》法文版。
随着各类媒体的曝光, Bellard也被推到了台前。人们对他的好奇与日俱增,无数问题向他涌来,因此他在自己的个人网站发布了一个FAQ版块,专门用来回答那些最常被问到的问题。
其中在被问到为什么要用普通计算机来计算Pi时,他是这样回答的:
“我对 Pi 本身并没有特别的兴趣,而是对执行任意精度计算(Arbitrary-precision arithmetic)所涉及的各种算法感兴趣。优化这些算法以获得良好的性能是一项艰难的编程挑战。
计算Pi小数点后的位数几乎没有任何实际用途,但其中用到的一些算法却很有意思,除此之外,整个计算过程也兼具其他意义,如:
离散傅立叶变换(DFT)。它被广泛应用于多种算法中,大多数现代电子设备(如数字电视、手机和音乐播放器)中都有它的身影。
对大量磁盘存储的可靠管理(至少对于单台计算机而言)。为了确保高可靠性和磁盘 I/O 带宽,需要开发特定的方法。这一方法同样适用于其他领域,如视频流或数据库访问。
整个计算过程也是对计算机(包括CPU、RAM、磁盘存储和冷却系统)的全面测试。计算过程中的任何单一错误都会导致糟糕的结果,如散热不良就会引发硬件故障。”
当被问到是否可以推荐学习任意精度计算的书籍时,Bellard推荐了下面两本:
Modern Computer Arithmetic by Richard Brent and Paul Zimmermann, version 0.4, November 2009.
The Art of Computer Programming, volume 2 : Seminumerical Algorithms by Donald E. Knuth, Addison-Wesley, third edition, 1998.
第一本可以在https://members.loria.fr/PZimmermann/mca/pub226.html 上免费获取,第二本为高德纳的《计算机程序设计艺术 卷2:半数值算法(第三版)》,已由人民邮电出版社图灵社区出版。
可以看出,Bellard计算圆周率并不是为了追求一个单一的数学结果,而是如他所说,他要向更难的挑战发起进攻——优化算法以提高计算机性能。
也许这就是天才的世界,不断突破自己,享受攻克难题的快乐,问题一旦解决,便去寻找下一个难题。
创业
2012年,Fabrice Bellard和Frank Spinelli一起创立了软件公司Amarisoft,这家公司专注在电信领域,致力于为4G/5G社区提供高质量的解决方案。
在公司简介中,有下面一段介绍:
Our world unique LTE software suite runs on standard (COTS) hardware (including PHY layer). Amarisoft technology accelerates the process of building products like eNodeB, Core network or NB-IoT and vRAN based solutions.
Amarisoft公司独一无二的核心技术,必然是Fabrice Bellard辛苦研发的成果。
文章开头提到的Bellard花了10个月时间写的LTE基站,就是这家公司的产品。最近几年,Bellard把大部分精力都放在LTE软基站系统上。
为人低调
如果要问这个世界上最伟大且最低调的程序员都有谁,Fabrice Bellard必然名列其中。
在网上,你几乎找不到Bellard的任何个人采访以及任何关于他个人生活的痕迹,甚至连他的照片都屈指可数。对于大多数媒体报道,他都会礼貌回绝。在仅有的几次采访中,Bellard也只回答技术相关问题,比如在一篇法国媒体的采访中,被记者问及个人生活,他是这样回答的:
记者:你好,法布里斯,你能介绍一下你自己吗?
法布里斯·贝拉:除了说我是FFmpeg 和 QEMU等其他项目的开发者以外,其他的我不愿多谈。
2009年,也就是打破圆周率世界纪录那一年,当不断被人问到他是谁时,Bellard给出了一个相当简单的答案:
这个世界上,像Fabrice Bellard这样如此多产却又如此低调谦逊的程序员,恐怕寥寥无几。
最后,放上一张图片,图片中是Fabrice Bellard历年所开发的项目:
想要了解更多关于Fabrice Bellard的内容,请移步他的个人主页:https://bellard.org/
References:
https://en.wikipedia.org/wiki/Fabrice_Bellard
https://news.ycombinator.com/item?id=5187585
https://smartbear.com/blog/fabrice-bellard-portrait-of-a-super-productive-pro/
https://www.macplus.net/depeche-82364-interview-le-createur-du-bpg-discute-de-son-format
https://www.ipaidia.gr/wp-content/uploads/2020/12/117-2020-fabrice-bellard.pdf
https://www.zhihu.com/question/28388113
https://en.wikipedia.org/wiki/QEMU
编辑有话说:大家好,LiveVideoStack开设了一个叫“声影传奇”的新栏目,这个栏目主要向大家介绍为音视频领域做出过突出贡献的神级人物。第一期,我们选择了法国天才程序员Fabrice Bellard,他开发的FFmpeg是音视频技术开发中不可或缺的重要工具。Bellard是世界上少有的能够如此多产的程序员,我们只选取了几个颇具代表性的作品来写,欢迎大家在留言里补充,另外,也非常欢迎大家提供下一期声影传奇的人物线索。
在这里,要特别感谢刘歧老师提供关于Fabrice Bellard的信息,以及赵军老师对这篇文章的审读,刘歧和赵军两位老师也是FFmpeg社区的维护者。
LiveVideoStackCon2021 北京站正在火热报名中!
详情请扫描图中的二维码或点击阅读原文了解大会更多信息。
以上是关于Fabrice Bellard:一个人抵得上一个百人团队的主要内容,如果未能解决你的问题,请参考以下文章