软工总结
对于软件工程课程的想象
在最初看到这个与某专业重名的课程名时就隐隐猜到这门课绝对不简单,事实也正是如此。
起初我是希望能够摆脱ai的束缚,尽量多自己写代码来提升自己的综合水平,但一学期下来仍然是让ai担任了更多的工作。。。
但值得庆幸的是,通过这一学期的学习和实践,我初步的理解和掌握了一个软件从设计到开发到部署运维的整体过程,也算是收益匪浅
印象最深刻的作业
让我认为印象最深刻的是个人作业--羊了个羊
第一次真正意义上的去开发一个完整的软件让我非常的兴奋,也算是第一次去做一个应用层的内容,有一种终于可以尝试做一些真正有意义的工作的感觉。
我写的是小游戏“投喂精灵”
虽然是第一次实践,但是好在游戏本身的逻辑并不算太过复杂,在ai的帮助下很快就确定了大致的方向
但等真的实际编写起来,虽然有ai的帮助(GPT-4O),但是在代码量达到一定程度时,ai犯错、丢失记忆的概率也会成倍的上升,
可以说到最后的整合时已经几乎没有办法依靠ai了同时在前中期编程的过程中需要保持高度的清醒,一定要清晰的明白自己在做什么,确定好程序的逻辑,
ai在编程时经常会随机的提出一些非常建设性的建议,
这些建议有时可能是绝妙的神来之笔,有时也可能是让代码变成屎山的搅屎棍。一定不能被ai牵着鼻子走。
在最初我显然没能领悟这些,完全成为了ai的奴隶,直到程序成为我在也看不懂也改不动的屎山才幡然醒悟
好在时间较为充沛,我也从来不缺乏从头再来的勇气,最终有惊无险的完成了这次任务
唯一有些遗憾的是我最终没能实现“提示”的功能,起初我有自己尝试思考,也有让ai帮我思考,但最终的算法都不太理想,“提示”功能肯定是需要即时的进行响应才算成功
然而我和ai思考出来的算法的时间复杂度都不符合要求,后来我又去请教了几个打acm的同学,他们也未能实现理想的算法,如果事情到此为止,其实我也没有什么可遗憾的,
毕竟专门打算法竞赛的人都无法实现的功能,我没能实现好像也没什么。但就在作业提交前还有几个小时的时候,我忽然发现自己陷入了误区,羊了个羊的设定是在位置随机生成图案
我是希望在这个基础上通过某种算法寻找当下可行的消除策略
然而实际上真的一定要在随机位置生成图案吗?
随机生成图案的目的在本质上是为了提升玩家的体验,增加游戏的可玩性,所以追本溯源,其实只需要让玩家认为是随机的就可以了
也就是设定一些规律,一些玩家无法一眼察觉的规律来生成图案
但十分可惜,奇迹没有发生,我没能在有限的两三个小时里完成这个功能,后续也因为其他的课程任务一直搁置了。(如果寒假有空应该会完善)
软工实践故事
关于结对编程
头一次跟别人合作编程,感触最深的就是协作的问题了,比较幸运的是
我跟我的搭档 朱佳杰 算是比较有默契的,在设计和开发的过程中观点是比较一致的
我们面临的最大的问题实际上来源于对工具使用的不熟练,特别是原型设计时用的 墨刀
墨刀的协作模式需要收费。。。我们在最初并没有了解清楚就使用分工的方式完成了原型设计,
到完成后要合并时才发现问题。。最终在一台电脑上完成了剩余的内容
还有开发时用的 微信开发者工具
同样的内容,换一台电脑就莫名的行不通,还有微信开发者工具的云函数也是让人无力吐槽
最终用flask编写了一个本地运行的后端框架才解决了问题。
关于团队编程