精彩片段
林默最后看到的,是屏幕上滚动的“Error 500: Internal Server Error”。小说叫做《代码洪武:程序员算法征服元末》,是作者古贤颐生录的小说,主角为林默朱元璋。本书精彩片段:林默最后看到的,是屏幕上滚动的“Error 500: Internal Server Error”。凌晨三点,写字楼的灯光白得刺眼。他试图抬手去按Ctrl+S,指尖却只碰到一片虚空。心脏像被一只无形的手攥紧,然后——骤停。再睁眼时,没有天花板,没有显示器。有的是铺天盖地的血腥味。鼻腔里灌满了铁锈、泥土和马粪烧焦的混合气体,耳朵被震耳欲聋的喊杀声、金属碰撞声和一种尖锐的破空声填满。那声音……是箭矢。...
凌晨三点,写字楼的灯光白得刺眼。
他试图抬手去按Ctrl+S,指尖却只碰到一片虚空。
心脏像被一只无形的手攥紧,然后——骤停。
再睁眼时,没有天花板,没有显示器。
有的是铺天盖地的血腥味。
鼻腔里灌满了铁锈、泥土和马粪烧焦的混合气体,耳朵被震耳欲聋的喊杀声、金属碰撞声和一种尖锐的破空声填满。
那声音……是箭矢。
“发什么呆!
找死吗?!”
一个粗粝的嗓音炸响在耳边,紧接着一股巨力撞上林默的肩膀。
他踉跄着向前扑倒,下巴重重磕在硬土上,牙齿震得发麻。
趴在地上,他看见了。
黑压压的、穿着皮甲或破烂布衣的古代士兵,如同两股浑浊的潮水,狠狠撞在一起。
刀光闪过,血花迸溅。
更远处,一面残破的“元”字大旗下,骑着马的骑兵正挥舞弯刀,如同收割麦子般砍杀着另一群衣衫褴褛、却死战不退的汉子。
那些被追杀的人,手里拿着锄头、木棍,甚至还有菜刀。
“我……穿、穿越了?”
林默的大脑CPU差点当场烧了。
但多年处理线上生产环境紧急故障的职业本能,强行压下了恐慌。
数据,需要数据!
扫描环境:· 地点:山谷地带,三面环土坡,一面是开阔地。
· 敌我识别:穿统一皮甲、阵型相对严整的是“元兵”;衣衫杂乱、被分割包围的是“义军”。
· 威胁评估:最大威胁来自元兵阵中那一排弓箭手,正在张弓搭箭。
而自己,好死不死,正站在双方交战线的边缘,更靠近义军溃散的方向。
就在他快速分析时,元兵阵中一声令下。
“放箭!”
嗡——那不是一支箭的声音,是数十支、上百支箭矢同时离弦的蜂鸣。
它们划破空气,带着死亡的尖啸,朝着溃散的义军——也朝着林默所在的方向——覆盖而来。
时间仿佛被拉长。
林默眼睁睁看着那些黑点在空中迅速放大,轨迹交错,像一张死亡的大网。
他的身体僵住了,但大脑却像超频的服务器,疯狂运转:弹道分析、落点预测、生存概率计算……等等。
背包!
他背上那个跟他一起加了三年的班、陪他穿越了不知多少时空的黑色程序员双肩包,此时正沉甸甸地压着。
林默几乎是连滚带爬地转身,手指颤抖着扯开拉链。
熟悉的隔层,熟悉的贴纸——“Git is Love”、“Hello World”、“这个需求做不了”。
以及,那台贴满了各种技术大会标签、外壳有些磨损的笔记本电脑。
电量:87%。
“有电!”
林默的心脏狂跳起来,比刚才面对箭雨时跳得还猛。
他猛地掀开屏幕,按下电源键。
熟悉的启动LOGO亮起,那微弱的光,在这片血腥的古代战场上,显得如此诡异又如此……救命。
他没有Wi-Fi,没有4G,但他有本地文件。
手指在触摸板上滑动,精准地打开一个名为“Tools”的文件夹,双击一个叫 “arrow_trajectory.py” 的文件。
这是他之前出于兴趣,用Python写的一个简易抛物线预测脚本,原本是用来模拟游戏里投掷物轨迹的。
脚本界面弹出,需要输入参数。
林默抬起头,强迫自己冷静。
箭雨还在飞,但还有大概两秒落地。
他的眼睛成了最原始的传感器:· 风速:凭脸上拂过的气流,估算约 3-4米/秒,东南向。
输入。
· 箭矢初速:看元兵用的弓,不是重弩,估计 40-50米/秒。
取中值45,输入。
· 发射仰角:目测约 30度。
输入。
· 自身与目标区域坐标:快速估算相对位置,输入近似值。
敲下回车。
屏幕上,黑色的命令行窗口开始疯狂刷出数据。
下一秒,一个简陋的图形窗口弹出。
以林默估算的自身位置为中心,一个半透明的红色区域在地图上蔓延开来——那是根据输入参数计算出的,箭矢最可能覆盖的“高危区”。
而在这片刺目的红色边缘,靠近东南方向土坡的位置,有一小块顽固的绿色区域。
那是算法认为的,“箭矢落点概率低于5%”的安全区。
方位:东南偏东,约37度角。
距离:约十五步。
“就是那里!”
林默猛地抬头,目光瞬间锁定了绿色区域指向的位置——一片长着几丛低矮灌木的土坡凹陷处。
同时,他的眼角余光也瞥见了离他不远、正被几名亲兵拖着向后撤的一个年轻汉子。
那汉子满脸血污,相貌奇伟,眉宇间有股子草莽英气,正声嘶力竭地指挥着零散的抵抗,但眼看就要被溃兵冲散。
朱……朱元璋?!
林默脑子里“轰”的一声。
元末,战场,被元兵追杀的义军,长相奇伟的年轻头领……所有线索瞬间串联成一条冰冷的逻辑链。
他没时间验证了。
箭矢的尖啸声己到头顶。
林默爆发出平生最快的速度,像一道离弦的箭(虽然方向完全相反),朝着那个年轻汉子冲去。
他撞开一个挡路的溃兵,在对方惊怒的骂声中,一把死死拽住了那汉子的胳膊。
“你干什——!”
汉子又惊又怒,回头瞪他。
“往东南37度跑!
现在!
那里是箭雨盲区!”
林默用尽力气嘶吼,声音都变了调,同时另一只手指向那片绿色区域对应的土坡。
“疯子!
胡言乱语什么‘多、多少度’?!”
汉子身边的亲兵就要拔刀。
但就在这一瞬间——噗!
噗噗噗!
第一波箭矢落地了。
如同死神的镰刀,狠狠砸进人群。
惨叫声瞬间炸开。
一支箭擦着那汉子的头盔飞过,带走几缕头发;另一支箭射穿了刚才挡在林默面前的溃兵的大腿,鲜血喷溅。
亲眼看到箭矢几乎贴着脸飞过,和只听声音完全是两种体验。
那满脸血污的汉子瞳孔骤缩,再看向林默时,眼中的惊怒瞬间被一股狠厉的决断取代。
他不知道“37度”是什么,但他看到了林默指的方向,也看到了那个方向……暂时没有箭矢落下。
“信他一次!”
汉子猛地吼道,反手拉住林默,“跟我来!”
一群人在箭雨间歇的宝贵几秒内,连滚带爬地扑向东南方的土坡凹陷处。
林默几乎是被人架着跑的,怀里还死死抱着他那台发光的笔记本。
他们刚扑进灌木丛后的凹陷——第二波、第三波箭矢如同暴雨般倾泻在他们刚才站立及周围的所有区域。
泥土被炸开,尸体被钉穿,哀嚎遍野。
而他们躲藏的这块凹陷,就像怒海中的一块礁石,奇迹般地只有零星的几支箭歪歪斜斜地扎在边缘。
死里逃生。
土坡后,喘息声如同破旧的风箱。
朱元璋(林默现在几乎能肯定了)靠在土壁上,胸膛剧烈起伏,血污下的眼睛却锐利如鹰,死死盯住了被亲兵护在中间、同样狼狈不堪的林默。
或者说,盯住了林默怀里那个还在幽幽发光、屏幕上满是古怪符号和图形的“铁盒子”。
“你……”朱元璋的声音沙哑,带着劫后余生的悸动和浓浓的惊疑,“究竟是……何人?
方才,你怎知……箭往哪射?”
林默喘着粗气,感受着心脏在胸腔里疯狂擂鼓。
他低头看了一眼屏幕,抛物线预测的界面还没关,那个绿色的安全区在血腥的战场上显得如此讽刺。
“我……”他张了张嘴,干涩的喉咙发不出完整的声音。
怎么解释?
说我是程序员,这是算法?
说你们都是我历史书里的NPC?
他最终只是拍了拍笔记本电脑冰冷的外壳,用尽可能平静(但依然带着颤音)的语气,吐出了那句注定要让这个时代的人困惑许久的话:“不是我知道。”
“是……算法知道。”
朱元璋的眉头紧紧皱起,显然完全没听懂这个词。
但他看了看周围安然无恙的自己和几个核心亲兵,又看了看凹陷外那片被箭矢钉满的死亡地带,眼中的探究和震惊几乎要溢出来。
就在这时,林默怀里的笔记本屏幕忽然自动切换了界面。
一个被他设为开机自启动的Excel文件弹了出来——《元末势力分布图(简易版).xlsx》。
这是林默穿越前正在整理的一个兴趣文档,里面用极其简化的方式标记了元末几大势力的核心控制区。
此刻,文件中央,一个标记为“濠州”的单元格正在微微闪烁,而旁边一个不起眼的角落,电池图标旁的数值,己经从 87%,悄然掉到了 80%。
电量,在流逝。
林默盯着那个数字,又抬头看了看眼前这个满脸血污、眼神如狼的未来洪武大帝,再听听凹陷外并未停歇、反而越来越近的喊杀声和马蹄声。
一个无比清晰、无比沉重的念头,砸进了他的脑海:这破地方……没Wi-Fi,没运维,没备份。
而且看起来,不写点能跑的“代码”……是真会死人的。
(第一章完)下章预告粮草只够三天?
账目一团乱麻?
林默默默打开了Excel:“别吵,让我建个表。”
当“=”号在这个时空第一次被用于管理军队粮仓时,朱元璋的天下,从此进入了“数据驱动”的时代。
---