数学特别差能学编程吗?

陌小亮


如果这个问题放到十几二十年前,答案是数学不好,真的不适合编程。但是现在时代变了,数学不好,照样能把程序写得很好,还可以以此为职业谋生。

很多年前,有一句很著名的话,叫做“程序就等于数据结构加算法”。不论是数据结构还是算法,都要涉及较强的逻辑思维和数学功底。那时候写程序主要是面向过程的编程语言,以C语言为典型,确实对数学要求高。真的就是数据结构加算法。排序、查找这些基本问题都要费很大劲去实现。动不动就是链表、队列、堆栈、二叉树等等。听着都头疼!不会这些东西,都不敢说自己会编程。在游戏的世界,对数学的要求更高,什么坐标变换、矩阵运算、插值、寻路等等都是必须要学的。

这是以前。现在不同了,面向对象占据了主流,不再过分强调数据结构。现在编程的分工更细,各类类库和框架层出不穷,不再像以前,排个序还得自己写。现在基本的算法都有现成的库,甚至就是标准库(程序语言自带)。现在多数人码代码,还很少听说什么链表、二叉树之类的东西了。因为都用现成的库了。也有把复杂数学问题交给数据库的。数据库集成了很多算法,比如B+树,那么这些复杂算法就再也不用去自己写了,会数据库查询语言(比如SQL)即可。普通人自己写,其效率也很难高过专业数据库。而以前那个年代不同,什么都要自己从轮子开始造,所以对数学要求不是一般的高。

刚提到的游戏编程,也同样如此,因为有了越来越成熟的游戏引擎,它把复杂的数学运算,包括物理引擎都集成进去了,程序员重点关注业务逻辑和美工。若先提前准备好3D模型(美工干的活),做一个简单的3D漫游也就十分钟的事。而在以前,其难度不可想象。

以前处理一些内存数据得考虑如何安排内存,如何解决线程安全问题,现在干脆直接放到内存数据库(比如redis)拉倒。一切复杂的进程间通信、线程安全、分布式、负载均衡都不再费劲考虑。

所以说,很多人认为数学不好就不能编程,那是因为过去确实这样,因为惯性,这个想法就会影响到现在。事实上,今天,普通程序员对数学的要求已经大大降低了。

不过,数学对编程的重要性仍然有,而且在很多领域还非常高。刚不是提到了类库、框架、游戏引擎、数据库吗?这些东西总得有人写吧,那对数学的要求不是一般的高。还有大数据、机器学习、图像处理、密码学、视频编码解码,其底层部分没有坚实的数学基础几乎寸步难行。

这和前面的观点不冲突,因为社会分工越来越细了,有需要数学的编程,有不需要数学的编程,大家分工协作。这和过去不同,过去编程更加喜欢从轮子造起,而且一个人把所有程序全写完,类似于小作坊。现在IT技术进步了,更多的是由小作坊变成了“手工工场”和“机器大工业”。

数学不好的人可以编程,只不过能从事的领域比较受限,要刻意回避需要数学的编程技术(比如驱动开发、机器学习、数据库引擎开发)。这就好比大家都说英语更要。万一英语不好,那不要出国,不要进外企,不要搞高端技术不就好了嘛,大不了自己开个火锅店(不要在老外多的地方开)。


犍为真人


可以,数学差可能在算法和核心代码的驱动下不容易胜任,但是在业务代码上还是可以胜任的,比如asp.net mvc,就是一些数据库的sql语言操作,只要稍微了解就可以完成任务了,然后再加上界面等设计,你可以看看visual studio的官网,下载免费版的编译器,工欲善其事,必先利其器,希望你进入编程世界


分享到:


相關文章: