“都怪你,”艾丽西亚气鼓鼓地说,“害我被赶出来了。”
“怪我?是你先说魔法不是代码的!”
“魔法本来就不是代码!”
“那你告诉我,魔法咒语的排列组合是什么?不就是指令集吗?魔素是什么?不就是比特吗?施法的过程是什么?不就是CPU执行指令吗?”
“我听不懂你在说什么!”
“听不懂就对了!因为你没有学过计算机科学!”
“那你为什么不先教我计算机科学,再来学魔法?”
“因为——呃——”
我愣了一下。
她说得有道理。
我应该先教她计算机科学,然后再用计算机科学的思维来理解魔法。
“你说得对,”我掏出手机,打开备忘录,“从今天开始,我教你计算机科学。”
“我不要学。”
“免费的。”
“那也不学。”
“包教包会。”
“不——等等,”艾丽西亚犹豫了一下,“包教包会是什么意思?”
“就是保证你能学会。学不会退学费。”
“学费多少?”
“免费。本来就是免费的。”
“……那学会了有什么用?”
“学会了就能理解魔法的本质,就能写出更强大的魔法咒语,就能打败魔王。”
艾丽西亚沉默了一会儿。
“勇者大人,”她小声说,“您有没有想过一个问题?”
“什么?”
“您来异世界的目的是什么?”
“讨伐魔王,拿宝藏,回地球。”
“那您为什么不好好练级、打怪、升级装备,而是要……研究什么魔法编程?”
“因为——”
我突然卡住了。
因为什么?
因为我是一个程序员。程序员遇到问题的第一反应不是硬干,而是写一个脚本来解决问题。遇到史莱姆,正常勇者的反应是拿剑砍;我的反应是——写一个自动打史莱姆的脚本。
遇到魔王,正常勇者的反应是练到满级然后正面硬刚;我的反应是——黑进魔王城的网络,把魔王的魔法全部替换成“噗”的一声冒蒸汽的那种。
这就是程序员思维。
“因为我是程序员,”我最终说,“程序员的工作方式就是——找到最短路径,用最少的力气,解决最多的问题。”
“但这样……会不会太投机取巧了?”
“这不是投机取巧,这叫‘高效’。”
“那您有没有想过,万一您的代码出bug了怎么办?”
我沉默了。
作为一个写了十年代码的程序员,我太清楚bug的威力了。
在地球上,bug最多导致服务器宕机、用户数据丢失、公司股价下跌。但在异世界,魔法代码的bug可能会导致——
火球术变成冰球术。
追踪术变成反向追踪(追着自己打)。
治疗术变成伤害术。
传送术变成随机传送(大概率传送到岩浆里)。
“你说得对,”我认真地说,“魔法代码的bug比地球上的bug危险得多。”
“那您还要继续研究吗?”
“当然要。”
“为什么?”
“因为——程序员的本能就是修bug。”
我打开手机上的魔法网络调试器,开始编写一个新的咒语——这次不是攻击魔法,而是一个……
“你在写什么?”艾丽西亚凑过来看。
“魔法单元测试框架。”
“什么框架?”
“单元测试。就是自动测试魔法咒语的正确性,确保没有bug。”
“这种东西……能写出来吗?”
“能,”我敲下最后一行代码,点击运行,“在地球上,我们有JUnit、pytest、Mocha。在异世界,我要写一个——MagicTest。”
水晶亮了起来,屏幕上显示:
```
[MagicTest v0.1.0]正在运行测试用例...
测试火球术(fireball):✓通过(伤害: 50,范围: 5米,冷却: 2秒)
测试水球术(waterball):✓通过(伤害: 30,范围: 4米,冷却: 2秒)
测试追踪火球(homing_fireball):✗失败(原因:目标识别错误,追踪了施法者)
测试蒸汽术(steam):✓通过(效果:产生蒸汽)
测试热水攻击(hot_water_attack):✓通过(伤害: 45,范围: 6米,冷却: 3秒)
通过率: 4/5(80.0%)
建议修复: homing_fireball的目标识别逻辑存在bug
```
“看到了吗?”我指着屏幕,“我的追踪火球确实有bug——它把施法者当成了目标。现在我知道了bug在哪,就可以修复了。”
艾丽西亚看着屏幕,沉默了很久。
“勇者大人,”她轻声说,“您这个人……真的很奇怪。”
“我知道。”
“但我觉得……这种奇怪,可能正是异世界需要的。”
“什么意思?”
“您看,这个世界的勇者,从来都是靠蛮力打魔王的。他们练级、打怪、升级装备、然后冲到魔王城跟魔王硬刚。结果呢?大部分都失败了。”
她顿了顿。
“但您不一样。您用不同的方式——用脑子,而不是用蛮力。”
“这叫技术降维打击。”
“不管叫什么,我觉得……您可能真的能赢。”
我看着她,突然有点不好意思。
“谢谢。”
“不用谢,”艾丽西亚站起来,拍了拍裙子上的灰,“走吧,我们去测试环境里修复那个bug。”
“你愿意帮我?”
“我不是你的队友吗?”
“但你刚才还说魔法不是代码——”
“我说错了,行了吧!”艾丽西亚的脸微微泛红,“勇者大人,您能不能不要记仇?”
“这是程序员的职业病——记log。”
“什么log?”
“就是……记录所有发生的事情。这样出bug的时候可以回溯。”
“您能不能用我能听懂的话说?”
“不能。因为我说了你也不懂。”
“勇者大人!!!”