屋里,徐远风正对着一段代码发愁。
他一直好奇,不论自己如何修改代码,1201在处理少数民族语言时,反应都要比普通话和英语慢一些。
为了找到原因,他花费了好几个小时,仔细地将1201全部的代码都看了一遍。
问题出在一个底层逻辑上——
这个ai项目刚起步时,他的水平、技术积累都不够。
所以他用了一个很讨巧的方法来解决语言问题。
一个成熟的逻辑应该是:接受语音指令并传递给程序——检索本地数据库——本地数据库无对应数据——联网检索网络数据——输出结果。
但他当时并没有能力解决语言问题,所以1201的逻辑就变成了:
接受语音指令——非数据库内语言——联网查询指令语言——查询到指令语言——联网进行翻译——传递给程序——检索本地数据库——本地数据库无对应数据——联网检索网络数据——输出结果。
这不仅仅是多了几道程序的问题,还有运行内存(ra)上的问题。每当接收到各类非数据库语言时,需要将这段语言暂时存储到运行内存(ra)中去,直到在网络中检索到对应语言并完成翻译后才能将这一部分运行内存(ra)释放掉。
理论上,解决这个问题的方法很简单,他现在也有能力解决,那就是将这段底层逻辑替换为大家都在用的成熟逻辑。
但底层代码的重写,意味着与之挂钩的其他代码都会受到影响。
这就是为什么越大的公司,代码越是“一整坨”……
况且程序员人群之中,一直有着一条金科玉律:
“如果你的代码能跑起来,哪怕是用各种莫名其妙的bug跑起来,都不要再动它了。”
他当然也知道这点——大一时,他曾经交过一份作业,作业里有这样一段注释:
“请不要删除这个注释,我也不知道为什么,但是删除了这个注释程序就会报错。”
他的教授不信邪,给他把这段注释删了。结果试运行的时候,原本四平八稳的程序频频报错,而且是拆东墙补西墙的那种。
教授折腾了两个晚上后认命了,调用备份将这段注释加了回去。神奇的事情发生了,程序重新跑了起来,依旧四平八稳。
现在回想起来,大概率是中文注释的原因。如果文件编码和编译器假定的编码不一致,这段中文注释后面的换行符可能被吃掉,导致下一行代码直接进注释。
徐远风微微扶额,将所有1201的所有代码全部备份起来。
他作为1201项目的负责人,仅仅是让程序跑起来是不够的。他还要根据项目的生命周期、未来需求来提高代码质量。
他希望1201能在全国进行推广。如果这一段代码不作更改,未来1201想要打开东南部沿海市场,尤其是以粤语方言区和闽南语方言区为代表的有独特方言汉字的地区,将会极其困难。
这项工作说起来容易做起来难,他的每一次修改都会引发不小的“连锁反应”——不是频频报错,就是无法运行。
为了集思广益,他召集了总公司与阿克苏测试组的项目成员开了一场视频会议。
会议里,大家众说纷纭——
有人认为,按照之前的思路能够达成目标,就已经足够了,无需再进行改进。至于未来投入其他地区市场的困难,可以另行寻找解决方法,当务之急是尽快在新疆市场站稳脚跟。
有人虽然与徐远风立场相同,但他们不赞成现在就进行大规模的改动。这些人认为兵贵神速,首先进入新疆市场之后,再进行改进。在改进完成之后,通过ota升级原有固件就足够了。
当然也有个别人认为这个项目就是个“面子工程”,完全不必考虑长线运营。
这句话说出,就像是往风平浪静的水