今天的文章来自pyjphilippica的投稿。他曾在多个大厂工作,有着丰富的社会经验。

在这篇文章中,将由他给大家带来,他对于编程的一些理解。希望能对小伙伴们有所帮助。

虽然我不是大牛,但从初中开始接触编程时间也挺长了,也积累了一些关于编程的想法。

不同的人对编程难的理解是不同的,因为编程本身的维度是不一样的,但最根本的,难在复杂性的控制,而不是一个个独立的概念.。

一、初级编程困难

普通的像office上写个vba,此时需要的只是永远不会变的业务逻辑,并且这种代码一般都是一个人写的行以内。

因此你不需要软件工程的知识,时间长了甚至也许会有编程很简单的错觉。

这种编程的难是在于逻辑。

逻辑的难再上升一点便是算法,数据结构,这时候你会学到时空复杂度,学会用三种方法证明快排的时间复杂度,知道了现代计算机在面对非P类问题的无力,知道图灵机对于undecidable的问题的局限性,知道了用泵引理证明标准正则表达式永远也找不到匹配的括号。

这时候你觉得很难,难在发现计算机其实干不了很多事。

二、中级编程困难

接下来你或许回去刷各路oj,面对题目,第一步难在问题的抽象和建模上,第二步难在抽象出中正确模型后算法的选择上.也许一个非常像贪心的题结果是网络流,也许一个非常像DP的题,结果是最短路,矩阵快速幂......

抽像出模型后,根据实际问题的各种条件选出最优方案,例如这种形式的dp可以单调栈,斜率,平行四边形优化,选择在线or离线算法?稀疏图还是稠密图?

这时候你会觉得很难,难在最基础的算法。

三、高级编程困难

接下来你会细分到具体的领域,此时的难就难在领域知识。

这也是见仁见智.图形学各种立体角的积分也许对你很难,数学系转过来的小张也许就觉得公式比代码来得亲切。

当然你也可以不管的,将系统看成一个黑盒,无脑调用现成的api,你不必



转载请注明地址:http://www.awaluaa.com/awlacy/4967.html