No.426 FFMPEG、QEMU作者,程序员界以一敌万的兰博 —— 法布里斯·贝拉

大家应该看过史泰龙拍的电影《第一滴血》,总共拍了好几部,主人公叫兰博,一个人对抗一个军队。我觉得在现实中,这种情况几乎不可能发生。因为你体力再好,毕竟双拳难敌四手,只不过是一个爽片罢了。

但是,如果在用大脑的领域,比如科学领域,一个人对抗整个地球的人也没什么问题。比如,如果没有爱因斯坦,广义相对论可能到现在也没影呢。在科学界,并不是人多力量大,当年一些国家组织了好几百个科学家批判爱因斯坦的广义相对论,称“爱因斯坦就是本世纪以来自然科学领域中最大的资产阶级反动学术‘权威’,”“不把相对论之类的反动理论打倒,什么新科学、新就是都是建立不起来的”。批判对爱因斯坦进行了人身攻击,称他是“有奶便是娘,有钱就下跪”等等。据说,当年爱因斯坦被采访他的记者告知有人批判他,他只是笑了一下,没有任何回应。

在编程领域,毕竟跟科学领域还有一定的距离,但是一个顶尖人才顶一个几百人的团队,是没什么问题的。比如本期节目要讲的程序员法布里斯,他是个法国人。他做了很多研究,从底层硬件研究到上层的操作系统,还搞基站,研究Pi的算法,用个人电脑战胜别人的大型电脑……

我先简要的介绍一下这个人吧,法布里斯·贝拉(Fabrice Bellard)是一位杰出的计算机程序员,1972年出生于法国,毕业于巴黎高等综合理工学院和国立巴黎高等电信学院。他因开发了FFmpeg和QEMU等知名项目而在业界享有盛誉。他的技术才能非常全面,不仅在计算机底层编程方面有着深厚的功底,还精通数学,发明并优化了计算圆周率的算法。

在他25岁时,他发布了一个优化后的圆周率计算算法,将计算速度提高了43%。此外,他还化名Gérard Lantau,创建了FFmpeg项目,该项目被广泛应用于多媒体音视频处理,如暴风影音、QQ影音、YouTube和VLC等。包括最近微软也依赖这个软件,可能有个bug,微软说,赶紧修,修好了给几千美元。FFmpeg项目说,既然你都是全球市值前几的公司了,还想白嫖我们这种软件,能不能签一个长期的合同啊?微软说,可拉倒吧,给几千美元意思一下就可以了,你非要签长期合同,那你可太不够意思了。最后的结果是,项目把bug给修了,但是微软不签合同。现在很多的商业公司,就喜欢白嫖开源。

他还赢得了两次国际混淆C代码大赛,并开发了TinyGCC和QEmacs等项目。2004年,他基于之前的工作开发了TinyCC编译器和TCCBOOT引导器,展示了他在编译器和引导器开发方面的能力。非常有必要讲一下TinyCC。

TinyCC(也被称为 TCC)是一个小型的 C 语言编译器,由 Fabrice Bellard 开发。它的主要特点是小巧、轻量级,同时也具有相当高的编译速度。TinyCC 的二进制文件非常小,这使得它非常适合嵌入式系统或资源有限的环境。TinyCC 的编译速度非常快,这使得它非常适合开发过程中的快速迭代。TinyCC 支持即时编译(JIT),这意味着它可以在运行时编译和执行 C 代码。TinyCC 包含了一个独立的链接器,可以生成 ELF、PE/COFF 或者平坦的二进制文件。TinyCC 支持 ISO C99 标准,可以编译大多数的 C 语言代码。因此,如果你需要生成高度优化的代码,可能需要使用其他的编译器。但是,如果你需要一个小巧、快速的编译器,或者需要在运行时编译 C 代码,TinyCC 是一个很好的选择。

TinyCC显然是他写的一个项目,结果被一些国家的人发现了,本着只要你敢开源,我就敢创新的原则。TinyCC项目成了众多的明目张胆的抄袭产品,一顿宣传,什么国产编译器啦,手把手教你做一个编译器啦。最后发现,就是花10秒钟,把项目名字由TinyCC换成了XXXX,里面连变量名,注释都懒的改。其实这不新鲜,连VScode,Chrome都敢抄,像TinyCC这样的除了业内没人知道的项目,肯定抄起来一点心理压力也没有啊。可以说是非常的创新了。

2005年,他发布了QEMU,这是一个在虚拟化领域具有重要影响的项目,被用于KVM、XEN、VirtualBox等多个虚拟化项目。QEMU项目在虚拟化技术中扮演了非常重要的角色。作为一个开源的全系统模拟器,QEMU提供了对多种处理器架构的支持,包括但不限于x86、x86_64、MIPS、ARM等,使得用户能够在单一的物理机上模拟并运行多种操作系统和应用程序。对游戏玩家来说,这也是福报,在游戏模拟器的场景中,QEMU 的确可以被用来模拟游戏机的硬件环境。例如,一些旧的游戏机(如 Super Nintendo、Game Boy 等)的模拟器就可能使用 QEMU 或类似的技术来模拟游戏机的硬件,从而可以在现代的 PC 或其他设备上运行这些游戏。包括当年用PC来模拟Mac电脑,好像叫PowerPC架构吧,也是用的QEMU。

在2009年,他使用一台普通PC机打破了圆周率计算的世界纪录,计算出了圆周率小数点后多少万亿位。Fabrice Bellard 在数学领域的主要贡献是他创造了一种新的算法来计算圆周率 π。这个算法是基于 Simon Plouffe 在 1995 年发现的公式,被称为 BBP(Bailey–Borwein–Plouffe)公式。BBP 公式是一个无穷级数,可以用于计算 π 的任意十六进制位,而不需要先计算出前面的位。这是一个非常重要的特性,因为它使得我们可以直接计算 π 的非常大的位,而不需要存储或计算所有的前面的位。

Fabrice Bellard 利用 BBP 公式,创造了一种新的算法来计算 π。他的算法比原来的 BBP 公式更有效率,因为它减少了需要计算的项的数量。使用这个算法,Fabrice Bellard 在 1999 年计算出了 π 的前 1521 亿位,并且在 2000 年计算出了 π 的前 5000 亿位,这两次都刷新了世界纪录。

虽然这个算法非常有效,但是它需要大量的计算资源和存储空间。例如,计算 π 的前 5000 亿位就需要几百 GB 的硬盘空间。因此,这个算法主要用于科学研究,而不是日常的计算任务。

实际的科学计算中,包括量子物理和相对论,通常并不需要 π 的很多位。在大多数情况下,π 的前 10 到 20 位就已经足够了。这是因为实际的物理测量通常有限的精度,超过这个精度的计算结果在实际中并没有意义。例如,NASA 的工程师在计算和控制航天器的轨道时,通常只使用 π 的前 15 位。这个精度已经足够高,可以精确地计算和控制航天器的轨道。如果使用 π 的前 15 位,那么 π 的值大约是 3.141592653589793。这个精度对于大多数的科学和工程计算来说已经足够了。假设我们用这个值来计算太阳系的直径。太阳系的直径大约是 287.46 亿千米(从太阳到海王星的平均距离的两倍)。如果我们用 π 的前 15 位来计算这个直径的圆周,那么计算结果大约是 902.77 亿千米。π 的第 16 位是 2,所以如果我们只用前 15 位,那么误差大约是 π 的真实值的 10^-16 倍。如果我们把这个误差应用到太阳系的直径的圆周上,那么误差大约是 902.77 亿千米的 10^-16 倍,即大约是 0.0009 毫米。所以,即使在太阳系的尺度上,使用 π 的前 15 位的精度也已经足够高,误差只有不到 1 毫米。这个误差远小于我们能够测量的最小距离,因此在实际的科学和工程计算中,这个误差可以被忽略。其实小数点的后9位已经可以了,放在太阳系的尺寸,小数点后9位的误差大约是18厘米,18厘米,有人说很大,有人说很小,对我来说,也就一般般吧。然而,计算 π 到更高的精度在科学研究中仍然有其价值。例如,它可以用来测试和验证新的数学理论和计算方法,或者用来测试和比较计算机硬件和软件的性能。

突然想起来,上一期我不是讲LaTeX,有人专门纠正我发音了,读拉泰赫。我还讲了TeX的版本问题,目前这个版本就是3.141592653。其实呢,无所谓读什么音,当记者问Lamport,应该怎么读啊,他的回答是不要纠结这种问题,你爱怎么读怎么读。同样的问题也发生在Linux上,发生在App上,发生在那几个傻逼法国奢侈品牌上。竟然有人专门找来那几个傻逼品牌,教别人正确的法语读音,比如Hermès,要读艾H-麦喝,有种要吐痰的感觉。还有法国品牌Balmain(巴尔曼)读成Bale-Main,正确发音为Bul-muh。Porsche(保时捷) – Por – shuh。总之,我觉得根本不必要纠结读音。因为连创始人都不在意,咱们也就别瞎讲究了。

2011年,他又用JavaScript编写了一个PC虚拟机Jslinux,展示了他在不同编程语言上的高超技能。在他的个人网站上有这个项目,还可以运行Windows 2000,不过加载有点慢,确实可以运行,还能上网。

“软基站”(Soft Base Station)是他的另一个项目,它是一个完全在软件中实现的 GSM 基站。在传统的 GSM 网络中,基站是一种硬件设备,用于连接移动设备和网络。然而,法布里斯·贝拉的软基站项目将这个基站完全实现在软件中,这样就可以在普通的 PC 或服务器上运行,无需专门的硬件设备。这个项目的主要目标是提供一个低成本、灵活的 GSM 网络解决方案,特别是对于那些无法获得传统 GSM 网络覆盖的地区。通过这个项目,任何人都可以在他们的计算机上设置一个 GSM 基站,为他们的设备提供网络连接。这个项目是开源的,任何人都可以下载和使用。虽然软基站可以在这些设备上运行,但是还需要相应的无线电硬件(如 SDR,Software Defined Radio)来发送和接收无线电信号。SDR 是一种无线电通信系统,其中一些或所有的物理层功能都是通过软件实现的。这意味着,与传统的硬件无线电设备相比,SDR 设备可以更灵活地适应不同的无线电协议和频率。对于软基站来说,SDR 设备可以用来实现 GSM 的物理层,包括发送和接收 GSM 信号,以及进行信号处理等。这样,软基站就可以与 GSM 手机和其他设备进行通信。常见的 SDR 设备包括 USRP(Universal Software Radio Peripheral)、BladeRF、HackRF、RTL-SDR 等。这些设备的价格和性能各不相同,可以根据具体的需求和预算进行选择。

有了软基站,你就可以开自己的网络运营商了,原则上,你可以给你的亲戚朋友邻居提供跟中国电信,中国移动,中国网通一样的服务。但是,运行 GSM 基站可能需要获得相应的许可和频率分配,这在不同的国家和地区可能有不同的规定。在一些地方,有可能你这软基站一开机,人进去了。

简而言之,法布里斯·贝拉的成就横跨了计算机科学的多个领域,他的工作不仅对技术界产生了深远的影响,也激励了无数程序员和计算机科学家。他的才华和贡献使他成为了计算机界的传奇人物。他是经常被人拿来跟Linus比较的人,两人谁更厉害?你认为谁更厉害呢?说实在的,我的能力没法比较。

0 0 投票数
文章评分
订阅评论
提醒

1 评论
最旧
最新 最多投票
内联反馈
查看所有评论
7 月 前

TinyGCC应该是笔误吧?

1
0
希望看到您的想法,请您发表评论x
滚动至顶部