写点什么

编程那么难,为什么不弄个大众一学就会的计算机

  • 2023-11-30
    四川
  • 本文字数:718 字

    阅读完需:约 2 分钟

回答里有很多说到复杂度的问题,我也简单解释一下。

《人月神话》作者 Fred Brooks 提到,软件开发的复杂度可以划分为本质复杂度(Essential complexity )和偶然复杂度(Accidental complexity)。

本质复杂度是解决问题的最小复杂度,它是一个客观的东西,跟你用的工具、经验或解决渠道都没有任何关系,比如开发一个 3d 游戏的复杂度就是要大于开发一个提醒事项的复杂度,这是项目本身的功能、需求客观决定的。

而偶然复杂度,顾名思义,跟偶然相关,跟每个人使用的工具、方法和经验紧密相关。还是上面那个 3d 游戏和备忘录的例子,一个经验丰富的开发者跟一个刚学不久的小白,开发同一个 3d 游戏,谁会更容易完成,碰到的复杂度更小?

显然是前者,因为前者趟过很多坑,知道什么方法可以最快、最大程度上解决他所碰到的问题,也知道运用什么工具来解决问题。但是对小白来说,这个复杂度就高多了,他会碰到各种难缠的问题,尝试各种各样的手段去解决,直到真正的问题水落石出,这期间花费的时间和精力肯定是远远超过一个成熟开发者的。

编程难的核心原因,就在于复杂度过高,而这种复杂度大多是属于本质复杂度。

像是偶然复杂度可以借助一些低代码平台(如 iVX )降低出错,减少门槛,但现实社会中的本质复杂度太高了,就拿做个菜来说,你怎么给程序编写任务?

买什么菜,怎么买,摊子上没有怎么办,关门了怎么办,这个菜卖相不好怎么办,二维码扫不清怎么办?然后切菜,怎么切?垃圾扔哪,切到什么程度,什么标准,从哪开始切,剩多了怎么办?

理论上,要写出一个做菜程序的机器人要比写作阿尔法狗那样的围棋天才程序都难,因为现实情况过于复杂,根本没法让大众都去一一考虑。

建议要学的话,一开始就挑个门槛低一点,能降低偶然复杂度的平台去学就好了。


用户头像

一个程序员跟他的猫 2023-10-30 加入

做过 2 年建筑业,现在 3 年程序员

评论

发布
暂无评论
编程那么难,为什么不弄个大众一学就会的计算机_代码生成器研究_InfoQ写作社区