小学中学三大主科:语文、数学、英语。如果你学理工科,到了大学不在学习语文,但还要继续学习数学和英语,英语还要考级。说明数学和英语对于理工科是非常重要的,我们程序员也在内。
本文参考 what-is-fe 前端知识体系
数学思维
学数学,你最后学到了什么
我们从小上学,到大学毕业或者研究生毕业,数学的课本、练习册,得装一后备箱。但如果你毕业了,你回想一下,除了日常用到的数学计算之外,你到底学到了些啥?—— 搞数学相关专业的除外。大部分人应该都像我一样,感觉啥也没学到,那些什么概念、公式都早就忘记了。
但我们经过十几年的学习和训练,脑子里早就深深的留下了最重要的东西 —— 数学思维。数学思维对于程序员来说非常重要,因为我们天天写的程序,本质上就是做数学题。计算机底层对于代码的执行,本质上就是数学和逻辑运算。
程序员需要的数学思维
对于我们程序员来说,比较重要的数学思维,我认为有:
- 抽象。数字 0 就是世界上最好、最常用的抽象(不信你可以想一下 0 是什么?有一个具体的例子吗?)抽象是编程设计的根本,但抽象又是难以捉摸难以理解的,没有数学思维训练的人,是不好理解的。
- 建模。复杂的业务问题,要转换为数学上的模型和函数,例如一个表格可以转换为一个二维数组。再复杂的人工智能辅助,也都是用数学模型来实现的。
- 流程严谨,死板无情,呆傻呆傻的,不懂得一点变通。例如我们代码中必须用英文逗号,中文的就不行,你眼睛看着差不多,但就是不行,一点都不得通融。 (其他的,欢迎继续补充)
除了有些做算法、人工智能辅助相关的岗位,其他大部分程序员都是做比较基础的实际业务,日常的工作大部分情况下可能接触不到实际的数学公式和概念。 所以,大部分程序员需要的仅仅是数学思维,而且还必须要具备这种数学思维才行!
推荐两本书
- 《数学之美》 吴军博士著,我看过这本书,受益匪浅。看后对你的数学知识没啥提升,但会让你感知到数学在计算机世界是怎样强大的存在。
- 《程序员的数学书》,我没看过,但曾经听过百度同事推荐过。
有些高大上的事情,我们可以不懂,但也别啥都不知道。例如某培训机构借 python 之名培训人工智能、大数据分析,如果你有点数学思维,就会对此有个清晰客观的认识。
英语
计算机和编程都是发起于美国,我们用到的操作系统和编程语言也基本都是美国人发明的,所以英语对于编程尤其重要。
英语对于编程不重要?
有很多同学可能会听到过类似的话。问:学习编程需要英语很溜吗?答:不需要,了解一些最基本的单词就可以了,如 if else while 等。
这种话很可能是某培训机构说的,因为培训机构会有专门做网络宣传的运营工作,占据了很多网上的内容,也更多的引导了学习者的眼球和选择方向。
这句话是对是错?我觉得要分开说。 第一,用英语作为门槛来限制能不能学,这肯定是不对的,英语不好我也可以继续学习进步嘛,不能因为我现在英语不好就不让我学编程。 第二,如果引导一种英语对于编程不重要,以后都不用进步、不用学,那这就有问题了。英语不好不妨碍我学习编程,但编程要想玩好了,英语还是很重要的。
哪里会用到英语
程序员的主要工作是编程,这是一个统称,但编程就是天天噼里啪啦的敲代码吗?当然不是。所以,我们用到英语的场景非常多,不限于如下
- 访问国外问答网站(如 stackoverflow.com )
- 访问 github 或 npm
- 查看英文文档
- 查看报错信息,搜索报错信息
- 以上场景对于我们日常工作都非常非常重要!
那需要我们英语到什么程度呢?最基本的,能把以上场景常见的内容读懂,就可以了。不要求听力,也不要能说,就读懂就行。
如何学习英语
如何学习英语,对于这个话题我没有太多发言权,我自己的英语也没多好。
不好归不好,但学习不能停,我基本每个工作日都会拿出 10-20 分钟看英语,时间不多但也慢慢在坚持。方式其实比较老土:
- 记单词
- 买了《程序员的英语》书,然后每天看一点
- 把电脑的语言改为 English ,每天工作处于一个英语的环境
- 另外很重要的一点,如果需要查看英文文档、问答、报错,我从来不会退缩,直接去看去读,遇到不会的单词就去翻译。
我碰到过一些人,遇到报错就问我。我说这不有报错信息吗?他说英文的看不懂。然后我就很想发给他一个百度翻译的链接。