把开放的问题收缩成封闭的问题
AI日新月异,有时候觉得它很牛逼,哇靠已经可以写很多代码了,但是有时候它其实无能为力。
程序员许多时候是要在一堆奇葩的下层组件之间摸索出一个组合解决目标问题。然后,有可能子组件的已有功能并不满足需求,需要实验,或者修改子组件。子组件不是你写的代码,有可能本身就是一坨难用的东西,内部设计和实现不好,但是你要修改才能得到想要的功能。然后子组件差不多能用了,你自己的处理部分还得组装,然后集成起来测试,验证。这样的过程,目前的AI其实是无能为力的。
解决开放问题,需要有真实的运行,得到错误信息来改正,那就是要验证,验证可能非常耗时。总得来说,AI还是擅长写封闭的代码片。模块,
项目级的问题,如果要AI解决,需要有全新的可编程工程基础设施,而且,就算有,也需要被普及,有点像网络协议一样,大家都能对得上才行。
但是,我们还是要尽量让AI处理尽可能多的局部代码,那就要求我们改变思维,尽可能采用战略编程,而非战术编程。尽可能通过好的设计,通用的设计,把问题阈转化为“干净”的问题,否则陷入到“脏问题”里,我们就会焦头烂额。好的设计,让问题干净,那么那个碎片都容易是一个封闭问题,那么那个碎片都可以最大限度由AI辅助解决。最终,我们解决目标问题。这要求,我们主动改变编程范式,重设计,重问题定义和转化。
程序员许多时候是要在一堆奇葩的下层组件之间摸索出一个组合解决目标问题。然后,有可能子组件的已有功能并不满足需求,需要实验,或者修改子组件。子组件不是你写的代码,有可能本身就是一坨难用的东西,内部设计和实现不好,但是你要修改才能得到想要的功能。然后子组件差不多能用了,你自己的处理部分还得组装,然后集成起来测试,验证。这样的过程,目前的AI其实是无能为力的。
解决开放问题,需要有真实的运行,得到错误信息来改正,那就是要验证,验证可能非常耗时。总得来说,AI还是擅长写封闭的代码片。模块,
项目级的问题,如果要AI解决,需要有全新的可编程工程基础设施,而且,就算有,也需要被普及,有点像网络协议一样,大家都能对得上才行。
但是,我们还是要尽量让AI处理尽可能多的局部代码,那就要求我们改变思维,尽可能采用战略编程,而非战术编程。尽可能通过好的设计,通用的设计,把问题阈转化为“干净”的问题,否则陷入到“脏问题”里,我们就会焦头烂额。好的设计,让问题干净,那么那个碎片都容易是一个封闭问题,那么那个碎片都可以最大限度由AI辅助解决。最终,我们解决目标问题。这要求,我们主动改变编程范式,重设计,重问题定义和转化。