幸好在解决天气问题时,程序员们已经找到了解决问题的办法。他们结合了“天气算法”和“超市算法”,获得了一个新的、能够在一个动态系统内主动给出操作建议、从而影响远期结果的算法,并毫无创意地将这个算法命名为:“竞选算法”。
“竞选算法”的上线,除了导致大批竞选经理失业外(没人真正喜欢竞选经理),还将竞选彻底变成了金钱游戏。那些能够租用大型计算中心运行算法的竞选者天然具有优势。而当所有参选者都希望租用计算中心以获得算法支持时,计算中心的租用价格自然水涨船高。于是,很多参选者从算法中获得的第一条建议,是放弃寻求算法的支持,把省下来的钱拿去投放广告。这一建议的明智之处立刻获得了所有人的理解和认同,进一步加强了参选者对政治算法的渴求。
于是,全球所有的互联网用户都不得不面临这样的窘境——只要有大型竞选开锣,用于支持整个互联网运转的计算资源,就立刻被“竞选算法”剥去一大半;而剩下的计算资源经过垃圾邮件、黄色视频、在线游戏和购物网站的盘剥后,只剩下“指甲盖”大小的一丁点。幸好绝大部分互联网用户只需要视频、游戏和购物,而剩下的那些,没有互联网也能生存。
第一位依赖算法竞选的政客登上总统宝座后立刻推动立法,禁止在政治领域内应用算法。这一立法虽然获得了政客们的一致支持,却只导致了政治算法的完全地下化。由于资源配置的不公开和不透明,在大选期间租用计算中心的价格如火山爆发般攀升。互联网能够使用的计算资源被进一步挤占,差点连那“指甲盖”大小的一丁点都不复存在。这让习惯了利用冗余资源跑一点自己的小项目的程序员们不得不反思这样一个问题:算法的存在,到底意味着什么?
一部分程序员不再相信“算法是中立的”,因为算法是一个威力巨大的武器,什么人会需要威力巨大的武器呢?当然是邪恶之人。为邪恶之人铸造武器的人,当然也是邪恶的。
另一部分程序员认为,前者纯粹是漫画看多了。粮食公司利用算法操纵粮食市场,农民也可以借助算法对抗天气灾害;政客们凭借算法登上权力顶峰,选民也可以使用算法厘清竞选黑幕。程序员无法决定什么人、为什么使用算法,但可以决定用算法来解决什么问题。
还有一部分程序员发出无情的冷笑——你们真的能决定用算法来解决什么问题?
这让所有人都陷入了沉默。
说实话,成形的算法已经不是任何人都能理解的了。它像一个由无数根小钢棒构成的黑箱子,上面有一个小孔,从小孔里丢下一个小钢球,小钢球一边朝下坠落,一边撞击小钢棒并改变方向,直至最后落进“大雾”“鳟鱼雨”“在泡椒凤爪边上放啤酒”“针对亚裔移民投放一个与教育有关的广告”之类的小格子里。程序员们只是设计了这样的一个黑箱子,然后让算法自己去调整钢棒。他们也不知道每一根钢棒的具体位置,更不知道算法是如何调整这些钢棒的。从引入机器学习让计算机自行生成算法那一刻起,程序员们就已经无法理解自己的造物了。
但它毕竟是我们创造出来的。不是吗?
最后,一小部分程序员跳了出来。他们认为开发一个算法的真正意义,不在于这个算法的运行机制到底是什么,也不在于要用这个算法去解决什么问题,而在于这个算法本身所具有的可能性。这种对可能性的探索,才是这个项目的真正意义所在。
就好像一座山在那里,难道因为你不知道为什么会有这座山、不知道登上山顶会怎样,所以就不去攀登了吗?
虽然程序员们可能是世界上离登山最远的一群人。但这个观点却得到了全体程序员的一致赞同。在一片欢呼中,程序员们提出了一个宏伟的计划,要开发一个囊括世间万物的算法,将物质的流转、人的取舍都放入这个巨大的黑箱。他们不再纠结于一个不可知的黑箱是不是对程序员尊严的挑战,也不再考虑是否会有人使用这个黑箱为非作歹。他们认为,只要把这个黑箱做出来,剩下的事都可以之后再考虑。
这个“万物算法”的项目,开始通过邮件组、博客、论坛在程序员间传播,并逐渐变得清晰起来。
当然,这个算法不会去预测原子在碰撞五十次之后的位置之类的问题。一方面,现有计算资源的总和都不足以解答这个问题,另一方面程序员需要的是在不可预测之上的可以预测,是基于混沌系统之上的规则和结论。
这个项目不考虑从微观态反推宏观态,而是直接向宏观世界寻求规律。
就连那些从未接触机器学习的程序员,也被这个计划所吸引。抛开职业分野(是的,程序员也是有职业分野的)和知识鸿沟(是的,程序员并不是都会修电脑),他们单纯地对这个项目感到好奇,并寄望于通过这个项目为自己的职业生涯赋予意义。他们相信万物算法的开发成功,意味着程序员们终于能坦然面对身边纷繁芜杂的现实世界,毕竟除了他们,没有谁能将整个世界握在手中,而又不为人所知。
为了推进这个计划,程序员开始攫取一切能弄到手的运算资源。他们以各种名义向全球所有计算中心提交运算任务。在所有色情网站和垃圾页游上植入木马以获得观看者的本地计算资源。他们甚至违背原则发送了大量的垃圾邮件,将许多贸然点开链接的用户的电脑变成并网计算用的肉鸡。只是,在是否挤占在线游戏服务器的问题上,他们发生了争论。部分程序员以退出整个计划作为威胁,才为《魔兽世界》留下了百分之五十的运算性能。
于是,几乎所有的计算机——埋在水底的超级计算机、咖啡馆里的苹果笔记本、亚马逊的在线服务器,甚至连高中生们课间偷偷打开的手机,都被卷进这一宏大而近乎无止境的运算中。它们耗费的电能和额外制造的热量,不但让一些运行不良的电网走向崩溃,更让天气算法的远期预测结果出现了接近百分之十五的偏差。
计算机运行速度变慢、总是断网、视频疯狂卡顿之类的抱怨充斥了整个互联网。而程序员对此缄默不语,或者以此为由要求建造更多更大的计算中心。一部分从程序员转行的产品经理注意到前同行们的疯狂举动,然而在他们得出结论或发出警报前,就已经被灭了口。当然不是物理毁灭,只是他们登入的网站被断开连接,发出邮件被告知收件人不存在,打电话总不在服务区。他们在绝望中拍下的“疯狂程序员想要统治整个世界”的警告视频,倒是被几名程序员传到了网上,作为人畜无害的程序员屡次被迫害的证明供人一笑。
计算似乎永无休止,害得全球互联网在崩溃边缘擦擦蹭蹭数次。当程序员们开始怀疑自己是否不小心按下了那个毁灭世界的按钮时——算法生成了。程序员们按照其不同的宗教信仰,对这一刻进行了描述,从“helloworld”到“越过长城,走向世界”,从“我是alpha,也是omega”到“天上地下,唯我独尊”,从“armageddon”到“42”,不一而足。然而直到这时,他们才发现了一个尴尬的问题:
我们要用这个算法干什么?
当然,它能回答一些诸如“明年的总统会是谁”“南美的雨林会不会在五十年内消失”“未来十年东京的房价走势如何”之类的问题,但程序员们其实并不真正关心这些问题。
经过了争辩、论战、不记名投票、刷票、加入防作弊机制并重新投票后,第一个提交算法的问题是:“什么是最好的编程语言?”
算法回答:“请定义好。”
在长久的争论后,程序员们放弃了这个问题。
第二个提交给算法的问题是:“现存的哪些编程语言会在二十年内被抛弃?”
算法回答:“全部。”
程序员们再次沉默。部分程序员建议投票决定是否干掉这个算法,而一些不死心的程序员则提出了第三个问题:
“现存什么编程语言寿命最长?”
算法回答:“汇编。”
于是,大多数程序员都投票赞成干掉这个算法。只有少数经常跟底层打交道的觉得这个算法仍有存在价值。
第四个问题是:“为什么汇编语言寿命最长?”
这个问题,显而易见,是那些不使用汇编语言的程序员提出的。
算法回答:“教学。”
在其他程序员的哧哧笑声中,汇编语言的使用者们也投下了赞成票。
于是,这个诞生没多久的万物算法,在回答了四个问题后就被关闭了,其核心代码被压缩成一个大小为32.17t的压缩包,所有被挤占的计算资源都还给了计算中心、个人电脑、游戏机和手机。互联网松了口气,又开始苟延残喘。
程序员们又开始响应需求——绝大部分是一些被重复过无数次的、没有挑战的需求,例如电脑蓝屏了、网络连不上了、这个页面要改一下、新的苹果手机无法适配了之类的。一小部分是尝试解决某个特殊领域内已经被解决过但解决方案并没有被放到网上的问题。只有很小一部分,是关于效率的提升、资源的最优化配置,关于生产力的解放。
程序员们坦然接受了这一切。
他们从未想过要解开那个压缩包。
他们曾登上世界之巅,所以能心平气和地走在马路上。
本文为《银河边缘》中文版专发篇目。
作者“《银河边缘》编辑部”的其他小说