第321章 方舟完成
维度云会议室。
五十名系统核心开发团队的骨干,被王坚一个紧急电话全数叫到了这里。这些人里有刚毕业两三年的天才程式设计师,也有跟著王坚跳槽过来的技术大拿。平时大家都在各自的工位上写代码,很少有这种全员集合的阵仗。
林一站在白板前,手里拿著马克笔,將那个名叫“方舟”的构想,原原本本地向所有人铺陈开来。
“我要你们在一个月內,写出一款全新的编译器。”林一的声音在安静的会议室里迴荡,“不管国外的开发者扔进来什么乱七八糟的安卓安装包,这款编译器都要能把它们拆解开,跳过所有的虚擬机,直接翻译成手机物理硬体能直接执行的机器码。”
话音刚落,会议室里立刻掀起了一阵压抑的骚动。
坐在前排的一位资深架构师忍不住站了起来,眉头拧成了一个疙瘩,连连摆手:“林总,这不符合软体开发的常理。安卓的生態之所以能做大,就是靠那个庞大的虚擬机去包容成千上万种不同的手机硬体。如果我们把虚擬机拿掉,让应用直接去跟硬体对话,稍微遇到点语法不兼容,软体就会当场崩溃。”
这位架构师越说越激动,隨手拿起桌上的一个咖啡杯比划著名:“这就好比让一个连汉字都没认全的老外,不带翻译官,直接去读文言文,这中间的逻辑衝突是海量的!”
“我知道很难。”林一伸手敲了敲白板,打断了对方的顾虑,“但如果有虚擬机在中间挡著,国外的那些开发者隨便套个壳子糊弄我们,用户拿到的就是一堆运行卡顿、手机发烫的工业垃圾。我们花了一百亿美金,不是为了请他们来製造垃圾的。”
林一面对著在场的所有人,语气沉稳却不容置疑。
“一个月后,全球开发者大会將在北京召开。到时候,全世界的科技媒体都会拿著放大镜来挑我们的毛病。如果没有这款编译器,维度系统就会成为全球科技圈的笑柄。这是关乎公司生死的战役,大家没有退路。”
王坚深吸了一口气,带头在会议桌的一份项目確认书上籤下了自己的名字。隨后,五十名核心骨干依次上前签字。
代號“方舟”的技术攻坚战,在这个充满咖啡味和烟味的会议室里,正式打响。
接下来的二十天,整个维度云的数据中心变成了一座与世隔绝的堡垒。
为了节省时间,王坚让人在机房外面的走廊里搭起了几十张行军床。所有人吃喝拉撒全在公司解决,困了就倒在行军床上睡两个小时,醒了用冷水洗把脸,继续回到电脑前敲代码。空气中瀰漫著功能饮料、泡麵和长时间不洗澡混杂在一起的酸爽气味。
然而,软体工程从来不是靠一腔热血就能轻易拿下的。
项目推进到第十五天的时候,迎来了第一次重大挫折。
“第一版转译模块打包完成了,准备上真机测试。”王坚满脸胡茬,声音嘶哑地向团队下达指令。
一台测试用的红米手机被连上了数据线。测试组挑了一款欧洲最常用的天气预报软体,將其拖入刚刚写好的“方舟编译器”初版模型中。
进度条缓慢向前推进,几分钟后,电脑屏幕上弹出“编译成功”的提示窗。
“打开看看。”王坚紧张地攥紧了拳头。
测试员伸手在手机屏幕上点了一下那个天气软体的图標。
画面刚亮起一个开屏动画,手机突然发出“嗡”的一声闷响,屏幕瞬间卡死。紧接著画面变成了一片雪花点,最后彻底黑屏重启。
“又崩了。”测试员满脸颓丧地调出后台日誌,指著屏幕上的红色警告字符,“內存完全溢出。软体在绕开虚擬机直接调用手机硬体的时候,不懂得怎么释放內存空间,导致系统超载。主板温度在三秒钟內飆升到了七十度,触发了硬体的物理自我保护机制。”
这已经是本周的第四十三次严重崩溃了。
会议室里的气氛降到了冰点。几个年轻的程式设计师烦躁地抓著头髮,有人甚至把键盘往前一推,痛苦地趴在了桌子上。
“行不通的……”那个资深架构师苦笑著揉了揉发酸的脸颊,“安卓的框架太庞杂了,里面的垃圾代码多如牛毛。我们想用一个工具在软体运行的时候去实时翻译这些垃圾,工作量简直是个天文数字。还剩十天就是开发者大会了,按照现在的进度,我们连一个简单的天气软体都跑不顺畅,更別提那些动輒几个g的大型社交软体了。”
王坚一拳砸在桌面上,咬著牙不说话。他心里也很清楚,团队已经逼近体力和精神的极限了。
就在这股绝望的情绪即將蔓延开来的时候,机房的玻璃门被推开了。
林一走了进来。他身后跟著秦錚和几个行政人员,手里推著两辆巨大的餐车,上面摆满了刚烤好的羊肉串、麻辣小龙虾,还有整箱带著水珠的冰镇啤酒。
“都停一停,先过来吃口热乎的。”林一招呼著大家。
没有人动弹,大家脸上都掛著深深的挫败感。
林一见状,自己拿起一瓶啤酒,用桌角撬开瓶盖,仰头喝了一大口。他拉了把椅子,在王坚旁边坐下,凑近电脑屏幕,仔细看了一遍刚才的崩溃日誌。
“我刚才在外面听了你们的討论。”林一拿起一根羊肉串咬了一口,语气里听不出任何责备的意思,“你们是不是钻牛角尖了?”
王坚愣了一下,苦笑著摇头:“林总,代码的逻辑衝突是实打实的,手机硬体处理不过来那么多实时的翻译需求。”
“为什么要实时翻译?”林一把手里的竹籤扔进垃圾桶,指著电脑屏幕,“你们现在的做法,是等用户点开软体的那一瞬间,才开始把那些乱七八糟的安卓代码翻译成硬体语言。这就好比一个人要上台发表演讲,你偏偏要安排一个同声传译在旁边实时翻译,一旦演讲者语速变快,翻译官当然会崩溃。”
林一站起身,走到白板前,拿起笔画了一个漏斗的形状。
“换个思路。我们要的不是死磕实时翻译,我们要的是用户点开软体时的绝对流畅。”
林一拿著笔在白板上重重地点了两下:“在软体安装到手机的那一刻,提前把它全部翻译好!加一道过滤网,把安卓安装包里那些冗余代码、死代码全部剔除掉。只提取核心的运行逻辑,直接编译成硬体能懂的语言,然后存进手机里。等用户下次再点开软体的时候,它就已经是一个纯粹的本地程序了,根本不需要再做任何翻译!”
那个资深架构师猛地抬起头,脸上的疲惫瞬间一扫而空,整个人像是被电流击中了一样从椅子上弹了起来。
“静態提前编译!对啊!安卓是边运行边翻译,所以卡得要命。我们可以在应用商店下载安装的阶段,让方舟编译器在后台多花几十秒钟做好所有的翻译工作。这样一来,运行时就不占用任何额外的內存了!”
一语惊醒梦中人。