作者 谢恩铭,转载请注明出处。
公众号「程序员联盟」
原文:http://www.jianshu.com/p/0194b98df6bc
程序员联盟群里经常有人问:
- 我数学不好可以学编程吗?
- 我英语不好可以学编程吗?
今天就来一次性回答这两个问题。
事先声明:我绝对没有贬低数学对编程的重要性的意思。
数学知识对于编程是很关键的,比如数据结构和算法的学习就得有较好的数学基础。好的数学思维也很有用。
这几年火热的 AI(人工智能)的学习更是离不开数学:概率论、微积分、线性代数,等等。
我这些年的体会是:英语对于编程的(优先)助力比数学要大。所以要说优先级的话,首先过了英语这关再说。
为什么这么说呢?很简单,有些编程不需要太多数学知识,但是英语却是避无可避。
除非你是用易语言编程(不过说实话,中文真的不适合用来写程序。英语的字母组成和特性决定了编程还真需要用英语),不然离不开英语。
对编程来说,学好英语有以下必要性:
-
对编程语言里的基本词汇敏感,便于理解意思。很多函数和变量名都是自注释的(也就是说光看名字就知道意思了),例如 isFinished() 函数,不懂英语的话就不知道是什么意思,如果会英语马上会知道是判断“是否结束”的函数。很多 API 或源码是没有注释的,因为函数名已经可以达意了,但不会英语你就看不懂。
-
能够为变量或函数起个好名字。命名可以一大学问,名字起得好,一看便知,就是第 1 点中所说的自注释了。如果英语不好。起了个有语法错误的名字,或者胡乱起一个名字,或者起一个拼音读音的名字(比如 haoChiMa,简直不能忍),对于阅读你程序的人或者是你日后自己回看自己的程序,简直惨不忍睹。
-
很多好的教程和书籍是英语的。虽然现在我们伟大的祖国越来越发达,国人编程整体水平越来越高,也著有非常优秀的书籍,写了非常优秀的博客等。但是,老外的思维方式还是跟我们不太一样,看老外的文章往往比同类的中文教程易懂。因为他们思维跳跃,语言幽默、形象,看起来比较轻松愉快。不过,我越来越发现:比如我在搜索 Android 一个知识点时,Google 搜索的英文结果没有满意的答案,在中文的博客里却会找到答案。这说明我国已今非昔比了。
-
很多好的论坛,网站是英语的。例如最著名的 StackOverflow,Github,等等。在上面可以用英语提问,回答;参与开源项目,撰写文档,等等。当然了,国内 CSDN 这样的综合编程社区也是很优秀的,但是一般来说新技术会第一时间用英语在国外网站发出来,例如 Android 的各种新闻,你想看中文版的话还需要等人翻译,这就滞后了。
-
很多书籍,有中文翻译版,但是不好理解,因为翻译水平不行。所以要看原版的话只能会英语。很多编程书籍我都看英文原版。
-
很多软件,没有汉化,只能会英语。
我在之前的文章里提过,我这些年很努力,几乎每天都在学习。我是一个持续学习者,我觉得自己始终是很不足的,所以必须终生学习。
这些年进步比较快的一个很重要的原因就是我的英语还不错(当然了,比我英语好的人很多),英语好对编程真的帮助极大!
当然了,进步较快的另一个原因是我数学也不错,幸亏学生时代没有偏科。
反观数学:某些特定领域需要数学比较好。
-
例如游戏开发,3D 游戏需要有坐标系的转换,重力,反弹,角度等计算,需要数学知识。
-
嵌入式底层,位移,与、或、非等运算,二进制,十六进制,八进制和十进制的转化和计算,需要数学知识。
-
高科技或研究领域,比如航空信息工程,那数学要求很高。
-
人工智能,算法研究领域,数学基础也非常重要。
不过,这些编程领域,都离不开英语。
一般的编程,你说 Web 编程吧,如果是前端,一般不需要太多数学知识吧;做 Android 应用开发,也不一定需要数学多好。
当然了,如果你英语好,数学也好,那自然是:“强强联手,天下我有”
那么,如何学好英语呢?
首先,兴趣是最好的老师。
如果你不觉得学英语是一件苦差事,反而饶有趣味,那么你的进步会很快。
我就是这样,学习外语对于我来说是很有意思的事。
如果你对英语兴趣不大,那可以用下面的几个方法:
1. 语法是主干
不少人学外语,总觉得应该要学一些常用语,和老外打成一片,口语是很好啊,单词量也有。但是假如知其然,不知其所以然的话,你是走不远的。
学语法,就是“知其所以然”。
要真的学好一门外语,语法太关键了。语法是铜筋铁骨,打扎实了,其他的单词,什么的,慢慢装饰不急。
以前我的初中课外英语老师就经常强调:“英语要打扎实语法”。所以我对语法一直不敢怠慢,后来发现,学其他外语也特别快。只要先从语法入门,其他都水到渠成。
2. 看到背后的益处
也许你会说:“什么?学英语还有什么益处?除了让我不开心之外。”
是的,学英语当然大有益处。学外语,其实是学其背后的文化。一门语言,代表了说这门语言的国家人群的生活习惯,思维方式,文化历史,等等。
如果把学英语想成能够接触英语文化,学习其历史背景,人文艺术,高新科技的大好机会,那你学习就有了新的目标和动力了。
什么?你还是没有动力?你,你给我出去… :P
3. 学腔调
学一门语言,其实很关键的一点是学腔调。什么是学腔调呢?就是模仿,类似“鹦鹉学舌”。
你应该听那些纯正的外语者是怎么发音的,他们说话用的是什么腔调,你就跟着学,模仿就好了。他们怎么待人接物,你也怎么做;他们怎么用这门语言,你也怎么用。
因为语言不是干巴巴的文曲星的发音,每种语言都有其特殊的腔调。这一点,说英国腔英语的人肯定大有体会。
4. 不死背单词
不少朋友学英语,拉起来就猛背单词,个人觉得不是太有效。诚然,单词对于语言来说很关键。假如没有词汇量,你语法再厉害,也是张口的“聋哑”人,不是吗?听也听不懂,说也说不出来。
但是单词怎么才能记得牢,个人觉得用情景记忆法最佳:比如多和老外聊天,他们提到或纠正你的单词,你会一直记得,基本都不会忘了,因为你把这个单词和当时的情景联系在一起了;看文章看电影记单词,也是不错的方法,这样才能活记,也是利用情景记忆法。
5. 勇敢说出来
“疯狂英语”等概念其实是有其道理的。中国人一般都讲求低调做人,要谦虚不张扬,隐忍不狂放,因为“枪打出头鸟”。
但是很多外国的英语老师都会鼓励我们不要怕丢面子,就要大声说出来。毕竟肚子里再有墨水,不说就只能黑在肚子里。
6. 看电影和唱歌
看电影和学唱英语歌曲是很好提高英语的技巧,但是这个是在掌握好语法的情况下,不然跟不学语法只和老外聊天没什么区别。
看英语电影时,可以用遮挡物遮住字幕部分,看几遍电影,因为看中文字幕你是很难提高的。
学英语歌呢,可以先自己把歌曲用中文翻译出来,搞清楚意思了,再去背。
7. 多看书
不用说了,多看一些好书吧。像我这样不能靠颜值的,就得更努力~
我是 谢恩铭,公众号「程序员联盟」号主,慕课网精英讲师 Oscar 老师,终生学习者。
热爱生活,喜欢游泳,略懂烹饪。
人生格言:「向着标杆直跑」