(本章代码浓度过高,谨慎观看哈哈哈)
2016年8月30日bj字节跳动总部大厦
周吔站在大厦玻璃幕墙前,仰头望着“字节跳动”四个发光字,指尖无意识地摩挲着书包带。沉砚穿着标志性的蓝卫衣,胸前别着“技术顾问”徽章,看上去和普通程序员无异。
周吔跟着他穿过办公区,此起彼伏的键盘声象极了高考前的自习室。她看见有人穿着印有“代码即正义”的t恤,有人在工位上摆着机械键盘,还有人对着白板激烈讨论,白板上歪歪扭扭写着“推荐算法第47次迭代方案”。
经过茶水间时,周吔被冰箱上的便利贴吸引:“‘前端组的咖啡归我,后端组的bug归你’这是你们的企业文化?”
“算是‘程序员黑话’,”沉砚从冰箱里拿出两罐可乐,拉环声清脆,“意思是‘别抢我咖啡,你的代码自己debug’。”
两人路过一间玻璃会议室,里面正在进行头脑风暴,投影屏上跳动着抖音的用户画象。
“他们在讨论什么?”她小声问。
“tiktok的海外推荐算法,”沉砚指了指屏幕上的东南亚地图,“比如在印尼,用户更喜欢用短视频记录婚礼,所以要增加‘传统服饰’的标签权重。”
“哇,你怎么知道的这么多?”
“技术顾问的职责之一,”他晃了晃工牌,“帮不同部门翻译‘技术语言’和‘人话’。”
沉砚的工位在角落,靠近落地窗,桌上摆着《算法导论》。周吔一眼便看见镇纸下的樱花书签。
“没想到你还留着。”她伸手触碰书签,发现下面压着一张便签:“‘周吔的睫毛在逆光下的反光率是37’这是什么?”
“算法笔记,”他耳尖微烫,“为了优化‘逆光滤镜’参数。”
“骗子,”她捉狭看着沉砚笑,“你明明就是想我了。”
这时,陈默抱着文档夹路过,看见周吔时眼睛一亮:“嫂子来啦?老大工位的樱花书签可是他的‘镇宅之宝’”
“陈默!”沉砚打断他,“去帮我拿杯冰美式。”
“懂了懂了,”陈默挤眼,“这就去,不打扰你们‘技术交流’。”
周吔望着陈默的背影:“你们程序员都这么爱开玩笑?”
“只有他爱,”沉砚叹气,“不过他说得对”他拿起书签,阳光穿过樱花花瓣的镂空处,在她脸上投下细碎的影,“你确实是我的‘镇宅之宝’。”
这时手机震动,周吔收到张嘉嘉的消息:“小周,云边镇的剧本写到程霜第一次遇见刘十三,需要女生主动的细节,帮我想想?”
她抬头看向沉砚,忽然有了灵感:“要不……女生故意把橡皮擦滚到男生脚边,然后说‘你的鞋比我的代码还会躲bug’?”
沉砚挑眉:“这台词……似曾相识?”
她吐了吐舌头:“抄袭我们的初遇场景,不行吗?”
“行,”他笑,“不过张嘉嘉要是敢把这段写进去,我就找他收‘灵感版权费’。”
周吔跟着沉砚穿过开放式办公区,忽然停在茶水间冰箱前。昨天在酒店整理行李时,她特意把惠州带来的桂圆干和酸梅汤秘方分装成小袋,此刻正安静地躺在帆布包侧袋里。
“等等,”她拽了拽沉砚的卫衣下摆,“我带了点惠州特产,要不要分给你同事?”
“特产?”沉砚挑眉,“不是说行李箱超重了吗?”
“但给你的同事们的份,我偷偷留了。”她眨眼,从包里掏出印着惠州西湖风景的油纸袋,里面是用玻璃罐装好的桂圆干,还有手写的酸梅汤秘方卡片。
路过陈默工位时,她忽然停住。工位上摆着个歪歪扭扭的程序员公仔,胸前挂着“代码永不崩溃”的牌子——和沉砚送她的萨摩耶公仔是同类型。
她递上一罐桂圆干,“陈默,谢谢你之前帮我查数学题的解题步骤。”
陈默瞪大眼睛,看看沉砚又看看周吔,忽然笑出小括号:“嫂子太客气了!不过这桂圆干……老大平时可舍不得分享零食。”
“谁说的?”沉砚伸手抢过罐子,“她带的酸梅汤秘方更厉害,消暑的同时还能提神醒脑。”
这时,张一明端着咖啡路过,目光扫过油纸袋。
周吔递上卡片:“张总,这是酸梅汤秘方,夏天煮了喝能提神。”
“收下了!”张一明接过卡片,故意提高声音,“不过沉砚,下次再用‘优化睡眠’当借口独吞特产,我就把你的‘专属滤镜’代码公开。”
“张总!”沉砚皱眉,周围爆发出一阵哄笑,有人开始喊“老大重色轻友”,有人追问“周吔专属滤镜”是什么。
周吔这才想起,沉砚曾说过给她定制过“情感滤镜”。她凑近他耳边:“原来你真的写了专属代码?””他别过脸,“因为你在逆光下的睫毛……”
周围突然安静,几个程序员掏出小本本:“笔记记下来!原来老大的灵感来源是——”
“干活去!”沉砚抄起键盘作势要敲,人群哄笑着散开。陈默趁乱拿走两罐桂圆干,边走边喊:“嫂子下次来带点荔枝啊!上次寄过来的超级甜!”
周吔看着被洗劫一空的油纸袋,忽然笑出声:“你们程序员抢零食的样子,象极了我和朋友抢烤肉”
“因为代码消耗热量快,”沉砚收拾着空罐子,忽然从抽屉深处摸出个铁盒,“不过我留了一手,你送的酸梅汤原料,藏在这里。”
铁盒里装着晒干的酸梅、薄荷叶,还有她手写的便签:“程序员加班必备,煮15分钟即可,忌空腹喝。”
临近中午的时候,沉砚带她去员工食堂。路过休息区时,有人在玩switch,有人在打台球,还有个程序员戴着vr眼镜调试设备。
“好悠闲哇,你们上班环境好轻松呀”周吔看着有人边吃泡面边写代码。
“这叫‘弹性工作制’,”沉砚替她挑了靠窗的位置,“不过凌晨三点的会议室,比高考考场还热闹。”
“吃醋?”周吔挑眉,“他帮我想了好多细节,比如‘橡皮擦滚到脚边’的梗”
沉砚咬着吸管斜睨他:“张总要是这么闲,不如去优化tiktok的海外推荐算法?”
“哪敢啊,”张一明举手投降,“不过说真的,周吔,”他忽然正经,“如果以后想拍短剧,字节的微视部门可以直接对接。”
“谢谢张总,”周吔笑,“不过我现在连《雷雨》的台词都记不全……”
“记台词?”沉砚忽然放下可乐罐,“我写了个‘台词记忆小程序’,用艾宾浩斯曲线帮你规划背诵,”
“沉砚!”她打断他,“你是不是连我的课表都想写成代码?”
“差不多,”他认真点头,“比如把‘台词课’设为每日9点提醒,‘形体课’设为14点,还有……”
“打住!”她假装生气捂住他的嘴,“我自己会安排,谢谢沉顾问。”
午餐后,沉砚带她参观实验室。玻璃墙内,工程师们在调试vr设备,屏幕上闪铄着抖音的未来界面——那是沉砚参与设计的“元宇宙短视频”原型。
“以后用户可以用vr拍视频,”他指着屏幕上的虚拟樱花,“每片花瓣都是实时喧染的3d模型,飘落轨迹符合流体力学算法。”
“听起来象魔法。”周吔伸手触碰玻璃,虚拟樱花落在她指尖。
“是代码的魔法,”他轻声说,“就象我用算法算出,今天带你参观的最佳路线——能避开所有需要开会的同事,还能在下午三点零七分,让阳光刚好照到你脸上。”
她转头看他,发现他耳尖泛红,沉砚,”她忽然握住他的手,“你其实……”
“其实什么?”他低头看她,睫毛在阳光下投下扇形阴影。
“其实比代码更懂浪漫。”
窗外,此刻阳光正好,字节跳动大厦的玻璃幕墙反射着蓝天白云。周吔望着沉砚,忽然明白——有些代码是写给机器的,有些浪漫是写给人心的,而她,恰好是他代码里最温柔的例外。
下午,周吔的帆布鞋踏入沉砚的办公室,目光被他工位的白板吸引。上面用马克笔写着一行未擦去的代码:if (zhouye_sile == true){ world_light += 100;}
“这是……”她指尖划过字母,忽然想起之前在惠州夜市视频时,他说“你笑的时候,我心跳破表了”。
沉砚伸手擦掉代码:“测试用的伪代码,不值一提。”
“明明是‘周吔笑了,世界亮了’,”她歪头看他,“程序员的浪漫,就是把情话写进bug里?”
“被你发现了,””
她愣住:“你还记得我们的约定?”
“约定?”他装傻,
陈默抱着机箱进来,忽然指着周吔的帆布包:“嫂子!上次你寄的荔枝太甜了,我吃了三颗就写了1000行代码!”
周吔掏出玻璃罐,“桂圆干也一样甜,你们程序员多补补、”
沉砚扶额:“陈默,你话太多了。”
陈默嬉皮笑脸:“冤枉!是嫂子寄的荔枝太好吃。”
周吔笑出梨涡:“下次还给你们寄荔枝”
沉砚打开计算机,屏幕上是精心准备的python教程ppt。周吔抱着《python入门》坐在转椅上,眼睛亮晶晶的:“听说程序员上课前都要‘祭键盘’?”
“祭键盘?”沉砚挑眉,把笔记本计算机推给她,“你想祭什么?”
“比如……”她从帆布包里掏出袋荔枝干,“用特产贿赂老师,换取‘作业减半’特权?”
“贿赂技术顾问,按字节规定要扣年终奖,”他接过袋子却忍不住笑,“不过看在你刚才给陈默他们分桂圆干的份上。先说好,今天必须学会变量赋值。”
“首先安装python环境,”沉砚调出官网,“点击这个download按钮,”
“等等!”周吔突然按住他的手,“为什么不是中文界面?你们程序员欺负文科生?”
“全球统一界面,”他耐心解释,“就象抖音的算法逻辑,不分国界。”
周吔打开vs de,盯着空白界面皱眉:“这和word长得不一样……”
“这是专业编辑器,”他忍住笑,“就象你们表演系用的斯坦尼斯拉夫斯基体系,程序员用的是”
“停!”她举手投降,“直接教我写代码吧,我要看烟花!”
沉砚推开小会议室的玻璃门,投影仪自动投射出python官方文档,周吔跟着他走进来坐在椅子上,盯着满屏英文抓了抓头发:“为什么第一行代码不是‘你好,世界’?”
“因为程序员的浪漫,从不说人话,”沉砚拖过转椅坐在她身侧,指尖在键盘上敲出经典语句:
prt(“hello, world!“)
“这行代码的意思是,”
“我知道!”周吔举手抢答,“是你好世界!”
“……”沉砚无奈笑出声,“是所有程序员的初恋,每个编程故事的起点。”
“那我的初恋代码,能改成‘你好,沉砚’吗?”她拽了拽他的袖子。
“可以,但要先学会怎幺正确写。”他调出中文输入法,“看好了,”
周吔突然按住他的手:“我自己来!”
她皱着眉输入:
prt(“你好,沉砚!)
按下f5的瞬间,红色报错如烟花般绽放:
syntaxerror: eol while scanng strg literal
“错了?”她盯着屏幕撇嘴,“是不是因为我没写‘世界’?”
“是因为右引号没闭合,”沉砚用鼠标圈出空缺的引号,“就象你背台词时漏了半句,观众会出戏。”
“哦……”她故意拖长声音,“那技术顾问能不能示范一下,怎么让‘你好,沉砚’完整出戏?”
他无奈摇头,补全代码,屏幕中央跳出白色字符:
你好,沉砚!
“现在是‘完整出戏’了,”他说,“但少了点程序员的仪式感。”
“仪式感?”
他在代码末尾加之一行注释:
周吔凑近屏幕,睫毛在投影光中颤动:“这行小字是什么?”
“注释,”他轻声说,“不会被计算机执行,但会被程序员记住——就象剧本里写的人物小传。”
“接下来学变量,”沉砚新建文档,“比如用na变量存你的名字。”
周吔突然抢走键盘,快速输入:
“这次没报错!”她转头看他,发梢扫过他下巴,“沉砚快夸我!”
“先别急,”他故意调出控制台,“试试打印na变量。”
她自信地输入:
prt(na)
屏幕弹出:
周吔
“看吧,我就说,”
“等等,”他憋着笑,“你怎么知道要直接写变量名?”
“因为……”她眼神飘向窗外,“我刚才偷偷看了半章书!”
“撒谎,”他捏了捏她的耳垂,“书里这节标题是‘变量:程序员的储物箱’,你连储物箱长什么样都不知道。”
“沉砚!”她捶他肩膀,“你居然考我?”
“那我再考考你,”他在代码里添加新变量:
“猜猜会输出什么?”
周吔歪头思考:“周吔爱代码?”
按下回车,屏幕却显示:
周吔爱代码
“为什么没有空格?”她惊呼。
“因为字符串相加等于拼接,”他用鼠标划出代码,“想加空格,得手动写——”
他修改代码:
这次输出:
周吔爱代码
“现在才对,”她满意地点头,“就象我对你说‘沉砚爱周吔’中间要留足心跳的空隙。”
沉砚的耳尖瞬间泛红,快速最小化窗口:“下节课再学运算符优先级。”
“现在教你写烟花代码,”沉砚调出海龟绘图库,“先导入模块。”
周吔突然指着他的代码喊:“等等!你写错了!urtle写成了turtle!”
他定睛一看,果然多了个t:“……你居然能发现?”
“因为我记住了urtle是‘乌龟’的意思,”她得意的笑,这时候的她还是准大学生,人生中知识存储量最多的时间点。
“原来你才是隐藏的学霸,”他无奈笑,“那接下来,由周老师指导我画樱花?”
“荣幸之至!”她坐直身子,“先画花瓣,用for循”
“等等,”他按住她的手,“for循环要记得写冒号,还要缩进。”
“知道啦!”
(72)
按下运行,一只绿色乌龟在屏幕上画出五边形:
“怎么不是樱花?”她皱眉。
沉砚憋笑:“因为你没告诉乌龟,这是樱花,不是五边形——”
(100, 72)
(144)
粉色花瓣在屏幕上缓缓绽放,周吔眼睛发亮:“原来樱花的秘诀是144度!”
“也是我每次看你的角度,”他轻声说,“能看到最亮的梨涡。”
陈默抱着文档夹进来,瞥见屏幕上的樱花:“哟,老大这是提前过情人节?”
“学编程,”沉砚淡淡道,“别乱猜。”
“学编程需要画樱花?”陈默挑眉,“我学的时候只画过二叉树。”
周吔忽然指着代码里的注释:“陈默你看!
“什么?”陈默凑近屏幕,沉砚迅速最小化窗口:“ bug注释,不值一提。”
“明明是——”周吔嘴角笑出弧度,“程序员的情话加密术。”
沉砚收拾计算机时,周吔忽然指着他的笔记本:“这是什么?”
页面上是未保存的代码:
while true:
prt(“周吔是光“)
“死循环?”她挑眉。
“是程序员的执念,”他合上笔记本,“就象我每天睁开眼,第一件事是确认你有没有发消息。”
“那我要给这段代码加个终止条件,”她抢过笔,在后面写下:
break
“现在,”她晃着笔笑,“只有收到吻,才能跳出循环喔。”
“霸道,”他叹气,却在她转头时,快速在她额头落下一吻,“这样,循环终止。”
“认真点,”他弹了下她的额头,“等会要学的是,”
“等等!”她忽然指着他计算机上的代码片段,“这个iport base64是什么?”
“base64加密,”他调出示例代码,“比如把‘周吔是光’变成乱码,”
屏幕弹出:
“周吔是光”
周吔眼睛一亮,指尖划过屏幕:“那我现在发消息给妈妈,用这个加密,他是不是就看不懂了?”
“理论上是,”沉砚忍住笑,“但前提是他也要知道解密方法,”
prt(decrypted)
输出:
周吔是光
“哇!”她拍手,“这是不是黑客常用的技术?”
“黑客?”沉砚挑眉,“黑客更擅长攻防,比如渗透测试、漏洞挖掘——”
“那我能学吗?”她拽了拽他的卫衣袖子,“就象《黑客帝国》里的崔妮蒂,用代码控制世界!”
“控制世界需要先控制变量,””
周吔惊呼:“你要关机?!”
“只是演示,”他快速取消命令,“真正的黑客不会用这么粗暴的方式,而是用社会工程学”
“社会工程学?”
“比如,”他忽然凑近她耳边,“假装成快递员骗你开门,或者,”
“停!”她捂住耳朵,“我还是学加密吧,这样给你发消息,别人就偷不走了。”
“小偷要是知道你用base64,”他弹了下她的发卡,“会笑到打鸣。”
“这是什么?”沉砚挑眉。
“黑客程序,”她一本正经,“每次运行都会随机触发你的‘指令’。”
他看着屏幕上跳出:
请喝奶茶
“耍赖,”他叹气,“这个程序没有终止条件。”
“所以是死循环呀”她晃着手机,“就象我喜欢你,没有终点。”
沉砚的耳尖略微泛红:“下节课学网络爬虫,现在去吃饭。”
路过茶水间时,周吔忽然指着陈默的计算机:“他在干嘛?”
陈默正在用wireshark抓包,屏幕上满是数据流:“抓tiktok的海外请求包,找漏洞。”
“漏洞?”周吔眼睛发亮,“是不是像衣服上的破洞,需要用代码缝补?”
“差不多,”陈默笑道,“比如发现某个接口没有做权限校验,黑客就能——”
“陈默!”沉砚打断他,“你是想让她半夜起来写漏洞报告?”
“不敢不敢,”陈默举手投降,“不过嫂子要是想学,可以参加我们的‘白帽黑客训练营’——”
“真的?!”周吔转头看沉砚,眼神发光。
“可以,但每周只能学两小时,”沉砚妥协,“而且必须先写完今天的作业,用base64加密一段台词,发给我。”
“成交!”她伸出小手和沉砚拉勾。