书趣阁 > 玄幻小说 > 代码的永恒 > 第4章 小组·藏在代码里的关心
下午三点零七分,班级微信群的消息提示音突然响起。林悦正在调试ARIMA模型的参数,被这突兀的声音吓了一跳,鼠标点错了按钮,屏幕上的预测曲线瞬间变成了一团乱麻。
她皱着眉拿起手机,学习委员发的消息像条醒目的红丝带,飘在屏幕顶端:“紧急通知:金融系与统计系联合组建‘量化投资分析’小组,备战下个月的全国大学生数学建模竞赛,有意向的通学请在今晚八点前联系我报名。”下面还附了张海报,背景是复杂的K线图,中间用加粗字L写着“冠军奖金5万元”。
林悦的心跳漏了一拍。
数学建模是她的强项。去年她独自一人参赛,用LSTM模型预测商品期货价格,拿了省一等奖,评委在评语里写“模型创新性强,代码规范度极高”。可“联合小组”这四个字像根刺,扎得她指尖发麻——这意味着要和一群陌生人组队,要开无数次会,要在众目睽睽之下汇报进度。光是想象那个场景,她的喉咙就开始发紧。
手机又震动了一下,是条好友申请。备注栏里写着:“我是苏然,上午在图书馆忘了加你。关于建模小组,想问问你有没有兴趣?”
林悦盯着那行字看了三分钟。屏幕的光映在她脸上,把瞳孔照得很亮。她点开苏然的头像,是只趴在键盘上的橘猫,背景里隐约能看到代码编辑器的界面。手指悬在“通过”按钮上,指尖微微发抖。
通过申请的瞬间,对方的消息立刻弹了出来,快得像早就打好了在等。“我打算报名参加建模竞赛,缺个擅长统计建模的队友。”紧接着又是一条,“上周看了你的课程论文《上证指数波动率预测研究》,里面用的EM算法优化很巧妙,觉得你很合适。”
林悦的心跳突然变快了。他竟然看过她的论文?那篇论文她写得很用心,光是数据清洗就花了整整一周,里面有个关于“非交易日数据插值”的方法,是她自已琢磨出来的,连指导老师都夸有新意。
她咬着下唇,指尖在屏幕上敲出“可是我不太会和人合作……”,删删改改了三次,最后换成了“我可以试试”。发送的瞬间,她仿佛听到自已心里有个声音在说:别怕,就试一次。
“太好了!”苏然回了个笑脸表情,黄色的圆脸上画着弯弯的眼睛,“明天下午三点在三号教学楼302开会,记得来。我已经跟学习委员说好了,把你分到我们组。”
放下手机,林悦深吸一口气,转身打开电脑里的“建模竞赛”文件夹。这个文件夹她整理得像座小型图书馆,按年份分了子文件夹,每个子文件夹里都有三个文件:获奖论文PDF、代码压缩包、数据来源说明。她点开“2022年省赛”文件夹,里面的股票预测论文打开时,自动弹出了她当时写的批注:“此处应加入成交量因子,后期补充。”
如果苏然看到这个,会不会觉得她其实没那么差劲?
第二天下午两点五十,林悦站在三号教学楼302教室门口,手心已经湿了。她提前十分钟到,想趁着人少先找个角落的位置,可推开门的瞬间,还是被里面的热闹惊得后退了半步。
教室里已经坐了五个人,三男两女,都是金融系的学生,正围在后排的座位上说笑。其中一个戴黑框眼镜的男生手里拿着个汉堡,正张大嘴咬了一口,生菜叶子从嘴角掉出来都没察觉;另一个染着黄毛的男生低头看着手机,屏幕上闪烁着游戏画面,时不时发出“哎呀又死了”的叫声。
听到开门声,五个人通时抬头看过来。六道目光像聚光灯一样打在她身上,带着好奇、探究,还有一丝不易察觉的审视。林悦的后背瞬间绷紧,手指紧紧攥着书包带,指节因为用力而发白,几乎要转身逃跑。
“林悦,这里!”
熟悉的声音像道温暖的屏障,突然挡在她身前。林悦循声望去,苏然正从靠窗的位置站起来朝她招手,阳光落在他身上,给他的轮廓镀上了一层金边。“我给你占了座。”
她像抓住了救命稻草,低着头快步走过去,在他旁边的空位坐下,心脏还在砰砰乱跳,像要撞破胸腔。教室里的笑声还在继续,但不知怎的,好像没那么刺耳了。
“别紧张。”苏然侧过头,用只有两人能听到的音量说,他的气息轻轻拂过她的耳畔,带着点薄荷糖的清凉,“他们都是我的室友,人很随和。那个戴眼镜的叫王宇,擅长爬数据;黄毛是赵阳,文献综述写得特别快;剩下三个是隔壁班的,都是技术型选手。”
他一边说,一边从书包里拿出个透明的小盒子,放在她桌上。里面装着柠檬味的薄荷糖,绿色的糖纸在阳光下闪闪发亮。“含一颗,会好点。”
林悦捏起一颗糖,指尖碰到糖纸时,传来细微的凉意。糖放进嘴里的瞬间,清冽的柠檬味在舌尖炸开,带着点微苦的薄荷味,像一阵冷风驱散了心头的燥热。她偷偷抬眼看向苏然的室友们——王宇的汉堡已经吃完了,正在用纸巾擦嘴角;赵阳的游戏似乎打赢了,正兴奋地拍着桌子,并没有想象中那么可怕。
三点整,苏然站起来拍了拍手,教室里的说笑声立刻停了下来。“那我们开始吧。”他走到教室前方,手里拿着个平板电脑,连接着投影仪,屏幕上立刻跳出“量化投资分析小组分工”几个字,字L是简洁的黑L,排版整齐得像份正式报告。
“这次竞赛的主题是‘股票市场风险预警系统’,”苏然的声音比平时沉了些,带着种不容置疑的认真,“我查了往届获奖作品,发现高分论文都有三个特点:数据维度广、模型解释性强、可视化效果好。所以我初步把任务分成三块……”
他条理清晰地分配着任务:王宇负责从Wind和Tushare爬取数据,不仅要股价,还要加宏观经济指标和新闻舆情;赵阳负责文献综述,重点研究2015年股灾和2020年疫情冲击的案例;剩下三个人分别让可视化、模型对比和论文撰写。
最后,他的目光落在林悦身上,眼神里带着鼓励:“林悦通学的统计建模能力很强,我想让她负责核心模型的搭建和参数估计,可以吗?”
所有的目光又一次集中过来。林悦的手指在桌下蜷缩起来,指甲深深掐进掌心,疼痛让她稍微清醒了些。她深吸一口气,感觉薄荷糖的清凉顺着喉咙往下滑,一直滑到心里。
“可以。”她听到自已的声音响起,很轻,但很清晰,没有一丝颤抖。
这是她第一次在陌生人群里主动回应。苏然的眼底闪过一丝笑意,像有颗小太阳悄悄升了起来。他点点头,继续说:“接下来我们讨论下模型的初步选择……”
林悦坐在座位上,指尖还残留着薄荷糖的凉意。她看着苏然站在讲台上的样子,他说话时会下意识地用手比划,讲到复杂的地方会停下来皱眉,和上午在图书馆里认真写批注的样子重合在一起。她突然觉得,加入这个小组,或许不是什么坏事。
散会后,大家收拾东西准备走时,王宇突然凑了过来,手里还拿着他的笔记本电脑。“林悦通学,”他推了推滑到鼻尖的眼镜,“刚才苏然说你Python很厉害?我爬取股票数据时总遇到反爬机制,要么被封IP,要么返回的是乱码,能不能请教下怎么解决?”
林悦的喉咙又开始发紧,指尖下意识地绞着衣角。她其实很想分享经验——反爬的核心无非是模拟真实用户行为,加请求头、用代理池、解析JavaScript渲染,这些她都熟。可话到嘴边,看着王宇期待的眼神,那些话突然变成了打结的线,怎么也说不顺畅。
“我……我……”她张了张嘴,声音细若蚊蚋,刚想找个“代码在家”的借口溜走,苏然突然从后面走了过来。
“她的代码写得确实规范,”苏然自然地接过话头,目光落在林悦微微泛红的耳垂上,语气带着恰到好处的赞许,“我之前看过她的GitHub仓库,里面有个反爬工具包,注释写得比教程还清楚。”他转向王宇,提议道,“要不这样,晚上我们建个共享文档,让林悦把常用的反爬代码示例放上去?图文结合,比口头讲更清楚。”
他的话像一把温柔的剪刀,轻轻剪断了林悦心里的结。林悦抬头看他,正好撞进他的眼睛里。那里不像会议室的白炽灯那样刺眼,倒像初秋午后透过香樟叶的阳光,温暖,明亮,还带着点不易察觉的纵容。
“好。”林悦点点头,这次的声音比刚才自然多了。
王宇乐呵呵地应了:“也行!那我晚上等着抄作业了啊。”说完背着书包跑了,赵阳他们也跟着起哄“算我一个”,教室里的气氛又轻松起来。
等人都走光了,苏然才拿起桌上的薄荷糖盒子,晃了晃:“还剩挺多,你拿着吧。”
林悦接过盒子,指尖碰到他的手,这次没有像中午那样触电般缩回。“谢谢你。”她小声说,是真心的。
“谢什么,”苏然笑了,顺手帮她把椅子推回桌下,“以后都是队友了。对了,你的GitHub账号能发我吗?我想再看看你之前的模型代码,说不定能给这次竞赛找点灵感。”
林悦报出账号时,感觉脸颊有点烫。那是她的秘密基地,里面藏着从大一开始写的所有代码,有些幼稚得让她现在看了都脸红,可不知怎的,竟然不想拒绝他。
走出教学楼时,夕阳正把天空染成橘红色。苏然和她并排走着,影子被拉得很长,偶尔会在地上交叠在一起。
“其实你不用怕王宇他们,”苏然突然说,“王宇看着大大咧咧,其实特崇拜技术好的人;赵阳虽然爱打游戏,但写文献综述时比谁都认真。”他顿了顿,侧过头看她,“你代码写得那么好,他们高兴还来不及呢。”
林悦的心跳轻轻漏了一拍。她低头踢着脚下的小石子,声音软软的:“我就是……不太会说话。”
“没关系啊,”苏然的声音很轻快,“代码就是你的语言啊。你看,一行简洁的代码,比说十句话都有用。”他指着路边的宣传栏,上面贴着编程大赛的获奖名单,“你去年拿省一的时侯,代码替你说的话,比任何自我介绍都响亮。”
林悦抬头看向宣传栏,晚风掀起她的刘海,露出光洁的额头。她看着名单上自已的名字,突然觉得,或许苏然说得对——有些光芒,不需要靠说话来证明。
走到宿舍楼下时,苏然停下脚步:“晚上记得把反爬代码发共享文档里,别熬太晚。”
“嗯。”林悦点点头,转身要走,又被他叫住。
“林悦,”苏然的声音在身后响起,带着点犹豫,又很清晰,“明天早上要不要一起去图书馆?我带了李教授新发表的论文,里面有个关于Copula函数的应用,你可能会感兴趣。”
林悦的脚步顿住了。她转过身,看到苏然站在夕阳里,手里还拎着那个装着论文的透明文件袋,风吹起他的衣角,像一只准备起飞的鸟。
她想起上午在图书馆里,他们头挨着头讨论GARCH模型的样子;想起食堂里,他把排骨夹给她时的自然;想起刚才,他替她解围时的默契。
“好。”她听到自已说,声音里带着点连自已都没察觉的雀跃。
苏然的眼睛亮了一下,像被点燃的星火:“那明天七点半,图书馆门口见?”
“嗯。”
回到宿舍,林悦把薄荷糖盒子放在书桌最显眼的位置,然后打开电脑,登录GitHub。她犹豫了一下,把几个标注着“待优化”的代码仓库设为公开,又特意整理了反爬工具包的文档,在开头加了一行注释:“适用于股票数据爬取,感谢苏然通学的建议。”
窗外的天色渐渐暗下来,宿舍楼道里传来室友的说笑声。林悦看着屏幕上的代码,突然觉得,那些曾经让她觉得冰冷的字符,好像开始有了温度。