概要

这篇文章面向程序员,简要的介绍了一些学习计算机专业英语的步骤和经验。

关于

之前不少人曾站内我如何学习英语,我也曾试图写一篇如何学习英语的博文,但我现在的实力着实无法写出令人信服的文章:

  1. 尽管阅读、写作和听力还可以,但口语很差——我指的是日常用语,即便出国一年,现在我和同事交流时仍然磕磕巴巴,不知道用什么词的情况经常出现;
  2. 尽管读过大量外文资料,但它们绝大多是计算机专业书籍和论文,并不适用于通用的英语学习,也不适用于其它专业。

所以这篇文章并不是一篇通用的(General)英语学习教程——而是一篇面向国内开发者的计算机专业(为了简便,接下来的“专业”均指“计算机专业”)英语学习指引,本文集中于如下问题:

  • 为什么要学习英语?
  • 如何从零开始阅读专业英文书籍?
  • 如何提升专业英语阅读能力?
  • 如何提升专业英语写作能力?
  • 如何提升英语听力?

此外,我把简短的问答放在杂项之中,以便阅读 :–)

为什么要学习英语?

这个问题很多人问过,也有很多人回答过,此外如果你在阅读这篇文章那么你应该已经意识到了学习英语的重要性。所以我不打算花太多篇幅在它上面,这里简略的总结下学习英语的好处:

  1. 更多的高质量学习资源:首先,绝大多数高质量的计算机学习资源(书籍、论文、博文和视频等)都是英文;其次,高质量的中文计算机学习资源几乎为零;
  2. 无需忍受翻译带来的问题:
    1. 信息损耗:任何知识从一种语言翻译到另一种语言一定会有信息损耗,更何况是英文和中文这两种差别巨大的语言;
    2. 时效损耗:翻译需要时间,如果你读的是翻译版那么你已经至少落后了半年;
    3. 翻译损耗:国内的计算机书籍翻译水平参差不齐,你需要拼人品;
  3. 编写更好的代码:良好的英语水平是编写可读(Readable)代码的前提;
  4. 翻墙:相对于其它专业,计算机专业出国工作要容易很多,但前提是你的英语要说的过去。

如何从零开始阅读专业英文书籍?

注意这里的零基础指的是专业英文书籍阅读零基础——而不是英语零基础,英语零基础就没啥好说的了 –_–#

刚开始阅读专业英文书籍时要记住一点:你的目标是提升计算机专业词汇量,而不是学习计算机专业知识。所以你要阅读的是计算机“通俗”读物或“科普”读物,我的计算机英文入门书籍是计算机文化(New Perspectives on Computer Concepts),这本书每年一版,现在已经出到第15版:

这本书的好处在于它极其浅显易懂,并且包含大量计算机专业领域名词,所以读者可以专注于提升计算机专业词汇量,而不是一边查单词一边学新技术——同时搞两件事是很困难的。

顺便提一下那篇老码农教你学英语和那个老码农推荐的书目,姑且不论他把Mythical Man-month拼写成Man Month Myth,我非常惊讶他居然称人月神话原版为白话书并且推荐初学者阅读,直到看到这里:

这句“另外两本也很不错,我很久以前看的翻译版,一直也想找原版的来看看,可惜总是没空,这次你们就算替我看了吧”着实让我很无语,没看过的书也可以随便推荐么 –_–# 难怪那么多人推荐计算机程序设计艺术呢。

我在读研时从头至尾阅读了Frederick Brooks的人月神话以及他的几篇论文(No Silver Bullets和the Computer Scientist as Toolsmith),所以对Brooks的文风有一定了解——Brooks绝对是一位多才多艺的计算机科学大师——他的文字不仅涉及到计算机,还涉及到管理、人文、艺术、建筑和神学等学科。读他的书和文章,我查单词直接查到手抽,推荐初学者读这种书,你是要玩死初学者么 –_–#

如何提升专业英语阅读能力?

阅读New Perspectives on Computer Concepts之后,你应该掌握了大量的计算机专业英文词汇,这时你可以尝试阅读一些语言浅显但主题相对深入的计算机科学基础书籍,个人力荐Brian Kernighan和Andrew S Tanenbaum的作品,他们的著作不但本本经典,而且语言朴实:

  • C程序设计语言(英文版)(第2版):不但是C语言的神作,而且为编程语言书籍的编写树立了新的标杆;
  • UNIX编程环境(英文版):覆盖了Unix的设计思想,简洁易懂的Unix入门手册;
  • The Practice of Programming:两位Unix大师(Rob Pike和Brian Kernighan)近三十年的编程经验尽在此书之中;
  • 算法(英文版)(第4版):数据结构与算法入门;
  • 现代操作系统(英文版第3版):全面的操作系统概论;
  • 计算机网络(英文版 第5版):全面的计算机网络概论。

这些书读完之后,你应该可以做到脱离字典阅读绝大多数的计算机书籍——是的,可能还会有一些生词,但不会影响阅读。

除了读书,阅读专业博客也是非常好的提升专业英语水平的途径。个人推荐下面几个网站:

  • Hacker News:大量的技术资讯和博文;
  • Reddit:非常的聚合站点,我一般去下面几个频道(subreddit)
    • /programming:聚合了大量的优秀程序设计博文(其实不少国内技术站点就是搬运它的内容);
    • /java:大量的Java技术博文,质量不如/programming,但也还说的过去;
    • /shittyprogramming:悠闲时的去处,不少段子来自这里;
  • Medium:大量的高质量文章;
  • Quora:大量的高质量问答,有不少中国人在上面练习英语;

如何提升英语写作能力?

程序员学习英语不是为了写小说——而主要是如下场景:

  1. 编写设计文档(Design Document);
  2. 收发邮件,进行交流;
  3. 开发程序中的命名、注释等描述性内容。

1和2需要Nonfiction Writing——言简意赅,层次分明。这方面的写作书籍我推荐:

the Elements Of Style(这本书我应该推荐了无数次-_–#:既是最畅销的英语写作书籍,也是计算机书籍中引用最多的非计算机书籍。它用极其简练的语言讲述了如何进行严肃,精确,清楚的英语写作。从这本书中,你不仅可以学到英语写作,更可以学到一种严谨至简的处事态度,而这正是专业开发所必需的。这本书的中译版:风格的要素。

On Writing Well是一本详尽的非虚构(Non-Fiction)写作指南,无论你要写地方,技术,商务,运动,艺术,还是自传,你都可以从这本书中找到珍贵的建议,这本书也有中译版:写作法宝:非虚构写作指南(30周年纪念版)。

此外也少不了中式英语之鉴,中式英语说说还成,写到纸面上就丢大发了。中式英语之鉴系统的探讨了中式英语以及其成因,然后根据成因对中式英语进行归类,并对每个类别给出了大量的实际案例以及修改建议。如果你想摆脱中式英语,那么这本书是绝好的起点。

关于3的书籍很多,我个人推荐代码大全中关于命名(Naming)的一章,章名好像是变量名字的力量;以及Effective Java的Item44——如何编写代码注释及文档。

如何提升听力?

阅读量达到一定程度听力也不会差,个人推荐Channel 9、Google Tech Talk和Coursera,多看多听,此外务必不要中文字幕。

杂项

这里包含一些简短的问题,如果你有疑问也可以留言,我会把答案添加到这里。

是否一定需要阅读原版?

除非你阅读原版书籍和中文书籍一样顺畅,或者翻译书籍信息损失量太大,否则不需要刻意阅读原版。

开发者需要多少单词量?

没有标准答案。作为开发者,大词汇量不是必需,但一定要把词用对——尤其是动词。

以方法/函数名中经常出现的get为例:我们需要知道何时应该使用get,以及何时使用fetchbuildretrievecomputecalculatereceive这些get的同类词汇。

有没有好用的词典?

目前我还没有发现一个好用的词典应用,所以依然在使用6年前的CASIO V2800H电子辞典。(略土 –_–#

原文链接:http://lucida.me/blog/english-for-programmers/

(程序员/软件工程师/开发者)编程——计算机专业英语学习指引相关推荐

  1. 计算机专业与英语关系大不大,计算机专业英语学习的策略.doc

    计算机专业英语学习的策略 计算机专业英语学习的策略 摘 要 计算机专业英语水平是制约计算机专业技术人员发展的一个重要因素,学好计算机英语对于计算机专业学习不无裨益.只有了解计算机专业英语特点及学习策略 ...

  2. php程序员职业规划书范文,计算机专业职业生涯规划书

    计算机专业职业生涯规划书 时光飞逝,伴随着比较紧凑又略显紧张的工作节奏,我们的工作又将告一段落了,你是否有一个清晰而精准的职业方向了呢?我想是时候好好地做一份职业规划了.那么职业规划书要怎么写呢?下面 ...

  3. 一篇关于程序员的文章——献给广大计算机专业的大学生

    选择比努力更重要 关于方向的选择其实越早确定越好,生活中我们要面临无数个选择,以前看过的一个黑客相关的美剧中有句台词说的不错: life is binary 生活就是二进制,一个个0101组成的.每一 ...

  4. 计算机专业英语 学习笔记 6

    Scientific-mathematic nature 科学数学性质 Instruction 指令 operation code 操作码 operand 操作数 mnemonic 助记的 Symbo ...

  5. 计算机软件专业英语考试题,计算机水平考试-软件设计师分类模拟题计算机专业英语(二)...

    计算机水平考试-软件设计师分类模拟题计算机专业英语(二) (4页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 MIDI enables pe ...

  6. 计算机专业兴趣分析,浅谈计算机专业英语的兴趣教学

    [摘要] 本文根据技工学校学生计算机专业英语教学现状,就如何提高学生学习兴趣和激励学生自主学习这一论题,阐述了自己的观点. [关键词] 计算机专业英语 改革教材 教学方法 创新考核 [中图分类号] G ...

  7. 计算机专业英语critical,计算机专业英语教程汇总.ppt

    计算机专业英语教程汇总,计算机专业英语教程,大学计算机专业教程,计算机专业教程,计算机专业视频教程,计算机专业英语,计算机专业英语翻译,计算机专业英语pdf,计算机专业英语学习,计算机专业英语作文 C ...

  8. 用计算机写作ppt文库,计算机专业英语Unit 19 计算机专业英语写作.pptx

    计算机专业英语Unit 19 计算机专业英语写作.pptx Unit 计算机专业英语学习,Writing clear scientific English,Writing clear scientif ...

  9. 浅谈计算机语言与英语,浅谈日常英语与计算机专业英语区别.doc

    浅谈日常英语与计算机专业英语区别 浅谈日常英语与计算机专业英语区别 摘 要:为了帮助英语学习者更好地掌握英语专业学习基础,不断提升英语教学水平,该文就日常英语和计算机专业英语之间的区别进行深入的分析论 ...

最新文章

  1. Myeclipse优化配置
  2. 【Android 逆向】ptrace 函数 ( ptrace 函数族 | 进程附着 | 进程脱离 | 进程数据读写权限 | 进程对应的主线程寄存器读写 | 单步调试 |ptrace 函数族状态转换 )
  3. 使用sizeof计算类的大小
  4. java切片_ java中一个极其强悍的新特性Stream详解(非常实用)
  5. linux dns中文域名,Linux 搭建中文域名的DNS服务器
  6. 关于Python局部变量和全局变量必须知道的几句话
  7. python django ajax 逻辑推理_python django初识ajax
  8. Android加载超大图片
  9. c语言8bit转10bit,10bit视频转码成8bit视频教程(非常简单)
  10. html post 加号,post提交数据空格被编码成加号的解决办法
  11. java 中的radix_Java Scanner radix()用法及代码示例
  12. python ffmpeg模块_python 模块之-ffmpeg 中文参数对照表
  13. 嵌入式设计与开发项目-DS18B20温度传感器程序设计
  14. 请总结描述用户和组管理类命令的使用方法并完成以下练习
  15. Chrome——截图插件篇
  16. Entity Framework Core系列教程-25-Entity Framework Core日志
  17. 数字图像处理——图像退化(大气湍流模型与运动模糊模型)与图像复原(逆滤波与维纳滤波)
  18. 计算机平时作业抄袭,计算机安全检测系统 [抄袭检测系统对计算机类电子作业的影响分析]...
  19. 人工智能、大数据投身体育赛场 是搅局还是颠覆?
  20. linux 查看tdagent进程,Fluentd (td-agent) 日志收集系統

热门文章

  1. mfs文件服务器,MFS分布式文件系统搭建
  2. Pytorch:optim.zero_grad()、pred=model(input)、loss=criterion(pred,tgt)、loss.backward()、optim.step()的作用
  3. 从零开始java数据库SQL优化(二):多个LEFT JOIN的SQL优化
  4. 计算机网络:从物理层到应用层的五层模型
  5. python汇率换算程序_Python学习笔记8——汇率计算器
  6. KDD 2020(五) | 基于多源异构信息整合的视频标题生成模型(作者带你读论文)...
  7. oracle一些基本函数
  8. Kali安装GVM(openvas)教程并更改用户密码
  9. 赛尔无人机 | 航测新标杆 Phantom 4 RTK
  10. hive和presto下标准时间格式和时间戳的转化