坚持看英文编程资料提升自己已有一年多了,这期间帮助很大。总体感受,英语对软件工程师真的很重要。
为什么要提高英语能力?
- 软件领域的新技术资料,较有深度的技术资料均为英文
- 由于计算机编程语言是以英文逻辑为基础,用英文思维更容易理解。 中文技术资料很多名词及表述很生硬,理解困难。
举个例子,操作系统的翻译教材或者国内教材,进程间通信机制 Semaphore , 相信很多人都看得都是一头雾水,学习时只好强记,通过考试就行。多年后,看了英文原版教材后,才豁然明白其原理,Semaphore 就是1个counter, 进程A进入critical region 操作共享数据时,将counter置为0, 其它进程看到counter为0后,就进入wait region 等待,直到进程A离开,将counter 再加1,等待区的进程才有机会进入critical region,. Semaphore 在教材中翻译为信号量,mutex 教材称为互斥量,说实话,理解起来不达意,反而是看英文很快就理解了。 - 在调试程序中,由于各种软件包都是英文为主,代码的报错基本都是英文,用英文在stackoverflow , bing搜索帮助更容易。
- 当介入1个较深的技术主题,往往找不到中文资料,讨论及论文都是英文的,这时你不得不用英文,如人工智能技术问题。
提高英语水平很难吗?
个人经验,关键是坚持,再辅有好的学习方法,坚持下去,就会看到自己的进步,逐步增强信心。
下面是我的一些学习心得:
- 克服初期阅读英文资料的“厌烦”关。
根据学习内容,先从初级英文教材网络上选择合适的教材,如w3schools, tutorialspoint
等学习网。也可以将材料打印出来,有空就读。选一本英文入门趣味读物,平时放松时坚持阅读,如《The Wizard of Oz》
(绿野仙踪)等。
开始时,读了几页就犯困,当读完了5本英文书籍后,随着阅读能力的提高,厌烦感会逐渐减弱,阅读时逐渐能够沉浸入学习内容。 - 搜集计算机专业词汇,如C++, Python,数据库开发等语法词汇,保留字、术语等,牢记这些词汇。
把词汇表放在电脑、手机上,随时记忆,不让词汇成为阅读的障碍。 - 遇到问题时,坚持用
bing
来搜索而非百度,用stackoverflow
而不是csdn与国外开发者交流。 - 在
github
上找1个小型开源项目,学习代码,阅读文档,试运行项目,有问题与作者交流,尝试对代码做一些改进,发给作者,通常作者会与你做更多沟通。 - 培养英文思维习惯。原因是,因为编程语言是以英文思维逻辑为基础。
- 用英文写文档。
- 坚持每天花半小时在脑回路中用英文思考,自己用英文来回答问题。
- 观看国外公开课. 我看了C++公开课,人工智能基础课,下载到手机上,有空就看。
- 遇到陌生词汇,不要使用汉英词典,而使用英-英词典来查询解释,如cambridge dictionary, Merriam-Webster等,主要目的是学习用英文解释英文,强迫自己用意译理解,形成对新词汇的长期记忆。
- 熟炼掌握UML。在Coding之前,坚持用规范的UML图形化工具来进行软件设计,用图形来表达思路,与英语建立关系。
用图形来表达思维非常有效,而且UML还是软件开发的基础工具,一举两得。
- 英语读写能力与口语能力可以分开进行。
本质上,我们大脑思维已经是中文思维。而英语口语表达熟练要求大脑思维与听觉、发声器官协同形成条件反射,因此成年人因听力以及思维习惯固定的原因,学习外语口语,需要大量的练习才能达到效果。而读写能力,相对而言,是“慢”思维,所需要的练习量远低于口语的量,因此可以分开进行。 - 只有当英语阅读量、与国外开发者的勾通累积到一定量级,英语水平才能得到质的提升,同时编程能力也得到大幅提高,形成正反馈循环。这是1个台阶式成长的过程。
总之,英语是一门语言,但我不认为它是某国的专属文化资产,而是全人类的文化工具。既然我们认为它是1个工具,而且对编程学习很重要,那么用好这个工具,就有了意义。