① 要想成为一名顶尖的程序员,要学习高等数学吗
必然的,必须的。
顶尖的程序员除了懂写代码外还要懂各种算法的应用。而应用的背景知识就是高等数学。如果只知道写代码裤磨,那么还算不上顶尖的程序员,顶多算个中等的程序员。
举个最简单的例子,做图像识别或人脸识别,就是对图像进行处理。而图像的本质就是矩阵,因此离不开线性代数的各种运算,特征求解,规划求解。
人脸识别中可能还涉及到神经网络的学习和试算梯度预算,就离不开微积分。
再举个例子,密码的编译也离不开矩阵代数应用,无论是密文还是密文转明文。
还有,文字索引,文本处理……是在太多太多了。以上的知识,还要变成代码写入你的程序中的。
所以,光从应用的角度来看,就离不开高等数学。要想成为顶尖的程序员,那就更要慧态学胡碧斗好高等数学。
② 怎样能成为顶级的程序员
我是程序员。实习过两家公司,说说我的观察。
第一家公司有个技术总监,每次跟他聊天总是只感觉我差一点儿就能超过他的那个样子,人很和蔼,总是会说『我也要学一下』,然而恐怖之处在于无论和他聊什么他都有那种『哦,这个我了解过一些,我们可以交流一下,共同学习』。无论什么。
他很会照顾我,由于我不是科班出身的,他和我交流尽量不用术语,比如依赖倒置,他和我讲的时候告诉我原理以及如何实现,并不会特意提这个名词。
我和他聊过一些东西,从应用层到ASCII码,从前端到GC,无所不知。而且他总是特别谦虚。
最后我走的时候说实话是很不舍得的。他拉着我说了很多,告诉我以后应该怎么做,要多了解整个项目架构,不能只是做自己的工作。要学会帮助其他同事,解决他们的问题。要稳住自己。
我离开之后才发现,那家公司是多么好。
第二家公司是个大公司。
我的lead,七零后。他周末在家还在学习,晚上会补作业到12点。我见过他写lazyload,也见过他给iOS讲性能优化。当然,还有非常高超的领导力。
他们写的代码并没有上面说的特别优雅,我见过的,而且要说代码的好看程度,比我写得规范漂亮的应该也不多。他们有一个共同特点是很繁琐,非常的繁琐。我一度很不喜欢这种代码,觉得很丑,而且很复杂。我问过以后终于发现和他们的差距,那叫做代码的健壮性。
之后我再看他们写的代码,无论什么情况都能扛得住,并能给出正确的错误处理。而我的代码,简短,有力,漂亮,满是奇技淫巧,然而就是不耐操。
我的经历所认识到的优秀程序员就是这样:博学,谦虚,积极向上,良师益友,还有代码十分健壮。