作为一名程序员,能够看懂英文代码,接触一手资料,已经成为竞争力的一部分了。
因为大多数的计算机类技术文献,知识库,书籍都是英文编写的,甚至有人说,以前书本上说「程序=算法 + 数据结构」是假的,这个等式应该是「程序=英语 + 搜索引擎」。
如果你想深入阅读这些内容,你可以通过别人的翻译来获取信息,但一定是稀少的,滞后的,翻译作品的表达也往往是不符合中文习惯的。
那么程序员怎么学英语呢?是不是从现在开始就要开始大量的背单词,下载各类记单词的软件,每天规定自己背50个单词?听1小时的听力,看1小时的英文材料?
如果你真有这么去尝试,相信你一定很难坚持下去,即使能坚持,也会觉得收效甚微,继而放弃。
想想你是怎么学会写代码的吧?难道是将代码语法手册背下来?将所有函数都默写了?还是说整天在读代码?肯定不是,每一个学会写代码的人,都是靠写代码才学会写代码的!
因此,程序员学英语,应该用程序员的思维,撸起袖子就干,不要去绕那么多弯。用最快的速度去实践,在实践中试错、调试、小版本迭代。
首先要意识到,程序员和一般的英语学习者是不同的,我们专注的领域就是计算机,我们的目标就是让自己看懂一手计算机资料。
所以,通过编程学英语,才是最适合程序员的学习方式。这么做的好处是,你既可以提高你的编程水平,又可以学习相关英文知识。
然后给自己定位,自己处在怎样一个水平。建立一个自己的能力范围再去找学习资料,不要一开始就去啃晦涩难懂的文献。
如果你是一个英语渣渣,如何开始你的学习呢?
我的建议是:去寻找网页设计和网络编程相关的网站。它们不仅搜起来非常方便,因为网页设计需求量很大,相关内容很多,英文表述简单直白,加上图文引导,很容易在这个领域开始。
推荐几个适合初学者学编程+英语的免费网站:
Codecademy适合初学者。提供了六种不同编程语言学习内容。所有课程都是互动在线课程。如果不熟悉计算机编程,可以从他们的HTML Fundamentals课程开始。它会教你如何制作简单的网页。
而且只要访问他们的网站就可以开始学习了。不需要安装软件,再浏览器里就可以登录。 还可以通过加入论坛中的讨论来练习你的英文表达。
除此之外,订阅他们的免费电子邮件,可以看到别人从codecademy课程学到的东西。
一个非常适合入门JavaScript非常棒的地方,网站中包含了Node.js、Angular.js和Express.js等内容,课程呈现方式轻松。而且可以建立一些非营利的项目,帮助你积累真实项目的经验。
在线编程学习网站,课程分为四大类,JavaScript,HTML / CSS,Ruby与iOS,也有一些其他方面的课程,例如Git,R等。基本的课程都可以免费观看,部分进阶课程需要付费。还有一些编程挑战等待你的测试~
如果你有英语基础,想更系统地学习,建议:把网站浏览作为泛读类资源,把书籍作为精读练习。
以下是按程序员进阶练习顺序罗列的推荐书籍:
The Pragmatic Programmer: From Journeyman to Master
对于没有基础的程序员,这本书能够让你对变量、对象、算法、和数据结构有个系统理解。在选择一门语言开始学习时,这本书作为每种语言的入门是个不错的选择。
Absolute Beginner’s Guide to C
这本书的第四版是从头开始重写的(不像其他只是简单地更新教科书)。全面更新包括C++ 11标准。确保在StruxStudio的C++编程语言中所读到的任何东西都是C++上最前沿的信息。
阐明了现代C++语言的语法和语义。想要学习的初学者也可以只阅读前面的章节。不过,对于更高级的程序员来说,如果想提高编程水平,建议阅读完整的章节。
这本书已经完全更新到Java内容的最新标准。Herbert Schildt是Java编程世界上最畅销的作者。这本书从基本概念开始,例如如何创建、编译和运行Java程序,到更复杂的领域,如语法、关键字和构造,这些Java的核心方面都有详细讲解。
除此之外,这本书还介绍了一些高级功能,如泛型、多线程编程和Swing。这本书的结尾是JavaFX的介绍,是Java的最新接口,有完整的教程。
本书用Objective-C简明地解释iOS和OS X编程。即使对任何面向对象编程语言没有任何了解的人也可以学习。可以学习面向对象编程的基本概念,而不必学习基本C编程语言所需的过于复杂的知识。
在章节末尾还包含学术练习。推荐这本书作为Objective-C的切入点,并可以作为从开始编码到Swift编程语言的过渡。
Developing Large Web Applications: Producing Code That Can Grow and Thrive
主要讲如何为大型Web应用程序编写代码。详细描述了高效的Web应用程序完整的解决方案和基本原理。
Ruby Programming Master’s Handbook: A TRUE Beginner’s Guide!
适合Ruby语言的初学者,后端开发者学习好材料。提供了解决的问题和代码样本。对数据结构和算法有深入的了解。还描述了Ajax、Perl、Python和Swift中设计和技术的各个方面。
这本书解释了Ruby语法,指出了初学者应该避免的常见错误和陷阱。因为它面向初学者,可以作为学习Ruby语言的一个切入点。
Python Programming: An Introduction to Computer Science
讲解与计算和编程有关的概念。帮助处理现实工作中的应用程序。可以作为Python的入门书。
PHP学习
The Joy of PHP: A Beginner’s Guide to Programming Interactive Web Applications with PHP and mySQL
这本书面对那些想学习编程php和mysql的人。从基本HTML课程开始,逐步转向涵盖PHP的从简单到复杂方面的教程。强调了HTML、PHP和MySQL作为强大网站的必要组件以及它们如何协同工作的重要性。
A Smarter Way to Learn JavaScript
这本书通过练习的方式来帮助学习JavaScript编程。同样适用于初学者。
每一章都可以在大约十分钟内完成吸收,内容被分解成足够小的模块,很容易被消化。而且它还描述了包括原型和构造函数在内的高级概念。用简单的英语和说明性的编码案例解释,清晰易懂。
以上。
九章算法,硅谷一线工程师在线直播授课,已经帮助30000+人成功拿到心仪offer。
九章基础算法班(Java),零基础转专业找工作必备现,针对知乎用户推出限时免费,原价US$101.68(¥666)现在邀请一名好友共同报名,即可免费学习。添加微信jiuzhang6,回复“知乎Java”领取全额课程抵价券。
更多课程信息请访问:九章算法
我推荐两个收藏已久的资源,能极大地帮助程序员学习英语。
第一个是于江水大大分享的《专为程序员编写的英语学习指南》
这份指南深挖语言学习的本质(主要用中文举例)并用程序员易于理解的方式去思考,并提供自己根据本质推演出来的训练方法和经验做参考。
于江水大大说自己英语基础并不高,但是由于一些特殊需求,雅思需要考到 6.5 分及以上,所以自 2018 年 6 月份开始一直在学习英语。在学习过程中,对语言学习从陌生到熟悉,从毫无头绪到了解一些实用的训练方法,从乱看经验经常换方法到总结出自己的学习方法,并取得了不错的成绩。故此编写教程进行阶段性总结,一来方便自己制定下一步训练计划,二来希望可以对同等水平有需求的朋友有所帮助。
本教程目标人群是想要花一些时间真正掌握英语的人,尤其适合英语渣。对于英语渣来说,网上杂七杂八的英语学习技巧和经验不一定会有很多帮助,甚至会误导。在英语学习过程中,要注意查看符合自己水平的经验和教程,否则可能会走弯路。
如果你在寻找《21 天掌握英语》、《10 天背会 1000 词》、《10 天搞定英语写作》之类的资料,这份指南并不适合你。尤其是语言学习,学习周期都是以月或者年来计的,你越早明白语言学习没有技巧,就会越少浪费时间和金钱在各种资料和经验上面,走越少的弯路。
因为网上各种英语学习技巧的效果跟学习者的水平相关,所以本指南会深挖语言学习的本质(主要用中文举例)并用程序员易于理解的方式去思考,并提供自己根据本质推演出来的训练方法和经验做参考。重中之重是你要根据本质自己设计适合自己的训练方法,同时可以甄别网上看到学习方法和资料,判断是否适合自己使用。
指南出处详见:
yujiangshui/A-Programmers-Guide-to-English本指南会长期更新,推荐收藏。
现在我们不讨论你如何学英语,而是让你构建一个可以识别、交流英语的程序,你会如何设计?
以中文为例,当你听到一个女人对一个男人说:“你是一个男人吗?”时,你会收集到哪些信息?你需要哪些信息来明确这个女人想表达的确切意思?
首先是听力输入,你需要确保麦克风录入了音频,然后拿到的声波内容是 U*#@&!&&*。之后我们需要将声波内容输入到一大堆分析器中进行分析,并得到比较精准的意图。
第一个可能是性别分析器,通过一定的规则识别出这是一个男性的声音还是女性的声音。因为这句话是男的说出来还是女的说出来表达的意思是不一样的。
第二个就是内容识别器,先是加载粤语匹配引擎和粤语语料库发现声波无法匹配解析,那么换成普通话引擎和语料库。此时如果你的语料库里有 “你”、“是”、“一个”、“男人”、“吗” 这些声音素材,那么就可以匹配解析出这句话:“你是一个男人吗?”。换言之,如果你没有粤语语料库和解析引擎,即便是给你一段粤语录音你也听不懂。如果这句话有一个生僻单词你语料库里没有,那么也是无法识别出来。
之后还有更多识别器,比如年龄、情绪识别器、重音和疑问语气识别句等,这些因素共同决定了这句话究竟想要传达什么意思。如果是一个女性的激动的感叹语气“你是一个男人吗!”,那么可以推测出这个女的跟男的有一定的关系,这个男的做出了一些伤天害理的事情导致这个女性在质问。如果是一个轻声细语的疑问句“你是一个男人吗?”,可能是一名女性想确认对方的性别。当然更准确表达这个意图的句子应该是“你是男性吗?”或者“男的女的?”。
上面需求分析只是简单的介绍了 声音 -> 听力识别器 -> 意图 的过程,实际上语言交流是听说读写,其中包含两个识别器(听力识别器和视力识别器),一个核心理解器,两个表达器(口语表达器和书写表达器)。通过对应的实际场景,我们可以简单的梳理出对应需要的功能。
理解器可以说是最重要的部分了,也是最难的部分
当理解器思考运算并得到想要表达的意图之后,就需要开始表达传递出去。
从上面可以看出,口语听力相对于阅读写作更加困难,主要因为实时性的要求。你必须迅速反馈不经过思考,这要求你要无意识的去用英语表达,所以语言学习没有技巧,只有大量训练。
语言的本质功能是人与人或物体之间的意识、知识的交换,它是几种方法中最高效和具备扩展性的方法,但并不是唯一方法。举几个例子:
从上面的案例你可以看到,即便你不懂语言,也可以交换意见,只是掌握语言之后,你可以更精准、更快、更容易的交流、交换、表达。
通过语言的本质,我们可以知道:
基于上面我们可以进一步推导出:
第二个是 Wei-Xia 大大分享的程序员工作中常见的英语词汇:
这里汇总的单词都是英语类计算机书籍、文档、文章中高频常见的技术词汇,最终目的是希望程序员集合自身的英语基础,在掌握列表中的词汇后,可以无障碍阅读英语技术文章和文档。
详细内容请见:
Wei-Xia/most-frequent-technology-english-words如果我推荐的内容对你有用,点个赞再走呗 (づ ̄3 ̄)づ╭?~
我的相关相关回答:
我现在已经不是程序员了,但是我可以分享一下当我还是程序员时期是如何提高自己英语水平的。
我还没毕业的时候,学的英语和其他人别无二致,也就是大学的精度、泛读(不知道现在大学英语教材还是不是这样),计算机专业多一门《计算机专业英语》,但其实就是通过学一些英文文章来多接触一些计算机相关的单词而已,也买过一整子China Daily英文版报纸来看,但是看得费劲,也就不看了。
可以说,如果单纯靠大学的英语教育,我英语水平也就那样了吧,不过,在大学期间我有两个重要收获:
第一个,我无意中在书店看到了《Godfather》英文版,这本书虽然也有很多我不会的单词,但是情节曲折刺激,吸引买了下来,一直读下去,遇到很多不会的单词也没有放弃,而是耐心查字典去找意思,最后,《教父》成了我第一本真正从头看到尾的英语书——兴趣是最好的老师!
第二个,我有同学传授他的英语学习经验,就是看英语电影,那个时候美剧在国内还没那么大影响,所以主要是看电影,我略微实践了一下这招,效果不错——在快乐的心态下学习才学得最好啊!
因为有这两个收获,我算是有了一个好的起点,就好比划了了一个1,之后再怎么加0也是赚了。
当然,单纯看文字和电影,也不能覆盖听、说、读、写的全部,最后真要提高英语水平,那就要真和洋人练。
我毕业之后正式成为程序员之后,大部分时间都是在外企工作,可千万不要觉得外企里的人英语都好,很多同事的英语水平也很渣的,我所经历的几乎每一个外企,领导都要为怎么提高中国员工的英语水平操心,他们想出各种招,比如一周中有一天只许在办公室讲英语,比如找美国出生的华人给大家讲课。
坦白说,这些招数,收效甚微!
学习英语这东西,真的主要再看自己,外力可以提供一些机会,但是你主观上不练习,就是没戏。
对我这样个性的人,练习英语不是什么问题,因为我为人比较热血而且耿直,所以能做深入交流的机会就多。
举个例子,我第一份工作是印度公司,印度同事要是说到工作之外的事情,一般中国同事也就敷衍几句就结束了,我不一样,如果印度同事说到这些,我可就不困了!我曾给印度哥们介绍了红军两万五千里长征,讲三大纪律八项注意,讲邓小平的起起伏伏,还向他们讨教甘地到底是什么样的人,他们年轻人到底吃不吃牛肉,孟买的午饭快递到底怎么运作……
这些讨论全都是用英文进行的。
光是这一点,有多少人愿意去做?
我并不是自吹自擂,我只是很现实地说,大家都在一个办公室里,有的人就是没办法和老外聊上天,有的人就是能聊得上,最后不聊的人发现自己一直没法进步,总是聊的人就会发现越聊越聊得熟练。
此外,作为一名程序员,请坚持一个信念——代码命名必须要用英文!
所有不觉得自己需要这个信念的朋友,我们缘分到此为止,再见!
你要是连代码都不想坚持用英文来写,你的潜意识里真的觉得学英文重要吗?
你如果根本都不觉英文重要,怎么会有精气神去学习英文呢?告诉你再多方法又有什么用呢?
只有你坚持代码的命名都有英文规则,你才有动力去多学习英文,你才有意识去阅读最新最全的英文资料,只要你坚持不住,只要你觉得用拼音也OK啊反正也是给中国人看代码,你就完了,松了这口气,你就再也提不起来。
以上就是我对于程序员学习英文的一点体会,希望能够帮助到大家。
以前在宿舍吃外卖的时候,习惯同时开着 YouTube 看各种视频。TED,SIGGRAPH 之类的,最后迷上 Web 相关的会议视频。大一刚开始的时候需要开字幕或翻译,后来逐渐关掉字幕,调整播放速度到 1.25x, 1.5x, 1.75x, 2x……
此外就是空闲时候把 GitHub 当作朋友圈来刷,找有趣的项目看。兴趣从看代码逐渐变成看 issue 和 PR。
还有最后一个技巧,把自己接触的所有电子设备的语言都设置成英文(最近我在学德语,所以设备都设置成了德语,不知不觉记下了很多相关词汇)。
(高中+大学几乎没怎么上英语课的我,大学毕业后英语终于好多了。)
我提高英语,那完全是被逼的啊!!!
当年java web开发还流行jsp、servlet的时候,有一天领导和说我:
“听说国外出了一个web框架,叫Struts,你去学习学习,咱们下个项目用用”
接到这个任务之后,我完全不担心,虽然我不会,但是有google和某度啊。
搜完我就傻了:
没辙,硬着头皮学。靠着翻译软件,连看带猜的把环境装好了,还顺手写了几个demo。
在我的带领下,新项目就这么着把Struts用起来了……
又过了一段时间,有一天领导又和我说:
“听说国外出了一个OR Mapping框架,叫Hibernate,你去学习学习,咱们下个项目用用”
无F***可说,怎么又是国外的框架?当时我就想
“国内的同仁们,你们能不能争口气,弄个国产框架出来!”
除了在项目里用了hibernate,不瞒大家,就我这英语四级没过的水平,还和别人一起翻译了国内的第一本 Hibernate 技术书。
当初我用 Hibernate 在国内算是比较早的一批程序员了,也经常去论坛回答问题,所以后来就有人找我一起翻译书。我最开始是抗拒的,觉得自己英语太烂了,翻译不好。后来我又想,既然我能看着英语文档学 Hibernate,要不就试试。于是就这么着干了一把。
我想说的是,技术文档没有特别复杂的语法、生僻单词,而且现在还有翻译软件、插件可以帮我们阅读。即使英语基础一般,看英语文档也不是一个无法克服的困难!
u1s1,新技术我推荐看英语资料。但是很多人的英语水平就是那么回事,不可能达到像中文母语这种水平。所以,对于很成熟、经典的可以看中文资料,比如一些中文技术书,翻译确实不错,人家译者也花了大量心血,不能一棒子全都打死。
在这里推荐一份中文的“豆瓣高分计算机书单”,程序员必备,几乎都是8分以上的好书。
书名后面的数字,是豆瓣评分。详细内容和pdf免费下载方式看这个(有需要下载的尽快了)
少走弯路,计算机豆瓣高分书单?mp.weixin.qq.com/s?__biz=MzU3MTg3NDYwNg==&mid=100002250&idx=1&sn=d362fb3a5b4a58e6d9eeeb0334823a14&chksm=7cd8c58b4baf4c9d39105a24461352c9309858c0380964f59323cca6b2f15c20c908c10a0de9#rd最后再推荐两个我经常去的国外技术社区:
Stack Overflow
Stack Overflow - Where Developers Learn, Share, & Build Careers
全球最活跃的程序员技术问答交流社区,程序员的所有问题都能在上面找到答案。
Medium
建议大家有多多去看看,既可以多练练英语阅读能力,又可以学东西。
百万收入程序员的成长之路