工作日记||溢出

作者: 宴会说 | 来源:发表于2024-04-08 07:38 被阅读0次

    同事请求我帮忙写一个程序,大部分功能模块完成之后,我陷入疲惫,一直不想动。

    不想再去进一步研发的原因,只有一个,太复杂。太复杂好像也不是根本原因,根本原因还是在于不能专心解决问题。平时上班期间,一会儿一个电话,一会儿有人找,刚理好一点思路,马上被打乱,又要重头开始。而写小工具,最重要的就是逻辑。一会儿一会儿地被打断,问题并没有得到解决,相反问题越来越复杂。思路理不清楚,即使有AI助手介入,也显得那么无力。不要说一个弱人工智能助手在帮忙,就是一个真的程序员高手坐在旁边专门负责写,一会儿被打断,也是无法实现。办公室里,不具备专注的条件,我干脆不动,静等周末。

    星期天阳光明媚,是个外出游玩的好日子。朋友圈里的晒娃、晒女友、晒蓝天、晒碧水、晒青草......,各种晒通通都与我无关,我把自己关在家里,面对着电脑屏幕,在AI助手的陪伴下,专注于功能实现。

    同事的需求,最复杂的一点在于需要迭代。用普通人的思维讲起来很简单,就是做一个判断,如果范围线内公益用地面积比例低于百分之四十,则进一步扩大范围线,再进行分析,直到满足范围线内公益用地面积比例高于百分之四十。听起来非常容易理解,问题的关键是计算机没有人那么聪明,我翻译给AI时,AI直接神经错乱,好几次提供出来的方法都不对。好在我之前已经把分析判断部分的方法完成,现在只需要解决自动迭代的问题。看到需求时,我第一时间的反应是使用递归,没有什么方法比递归更适用,只要设置一个百分之四十的跳出条件,可以大大节省代码量。递归虽然简洁高效,对人员的素质要求也很高,我已不碰递归很多年,主要是担心选不好终止条件,陷入死循环,从而造成溢出死机,我决定采用笨方法。

    经过一番折腾,笨方法没有造成死机,但溢出只是迟早的事情。计算机听不懂复杂的需求,我只有运用分解大法。所谓分解大法,在我看来应该是编程或者说生活的绝密大法,就是把复杂的问题一层层的分解,最终分解成计算机能听懂的语言,分解到最后,甚至于接近一加一等于二的表达。功夫不负有心人,在我耐心的分解下,AI助手总算把代码完成,我又手动按照业务逻辑,把每个方法串连起来。很多小问题,我在组装过程中一解决,一切看起来都很完美。

    不出所料,运行界面也没有报错,只是提示在疯狂分析计算中。疯狂分析计算是我组装时加的一句话,主要是想要向同事表达,工具开发不易的意思。计算机疯狂了半个小时,还在提示疯狂分析计算中。按我以往经验判断,程序一定出问题了。几白兆的矢量数据,即使再复杂的计算,我这个电脑最多十多分钟处理完。偏偏写工具的时候,我又偷懒,没有加入过多的输出信息,以至于现在也不知道问题出在哪里,计算机只是告诉我一句话,它在疯狂分析计算中。

    程序执行无法提供足够的信息判断,我只有另寻他法。打开临时目录,看下过程文件,我发现才迭代到第二次。这样来看,一定是迭代之后的处理有问题,但我有说不准问题在哪里。我心想只要程序不报错,就让它自己运行,万一只是因为处理过程复杂,流程没问题的话,我就不需要再重写。抱着偷懒的想法,我直接把电脑放在那里,让它自己疯狂分析计算。

    直到晚上,电脑还在疯狂分析计算。如此疯狂,肯定不正常,一定是计算过程产生了大量冗余数据,只有打开过程数据检查一番。一打开过程数据,我直接傻了眼,屏幕上画满了各种圆圈,层层叠叠,密密麻麻,很明显是第二次缓冲时造成的,试着打开下属性表,卡顿无比,经过漫长的等待,属性表终于出现在面前,属性表显示目前文件中已经有一万多个要素。一万多个要素对比输入的一百多个要素,增长级别也有点太快,难怪会一直疯狂分析计算。而这次是第二次迭代,再迭代几次,数量级岂不是要上百万,最终结果一定是溢出。我不再多想,直接关掉电脑,免得它疯狂致死。

    业务逻辑没有问题,程序也不报错,但是有溢出风险,看来只有等到上班时间,当面再请教下同事,优化业务逻辑之后,再改造程序吧。

    相关文章

      网友评论

        本文标题:工作日记||溢出

        本文链接:https://www.haomeiwen.com/subject/weeitjtx.html