Skip to content

Commit

Permalink
Finish the translation, roughly
Browse files Browse the repository at this point in the history
  • Loading branch information
izackwu committed Oct 8, 2019
1 parent a630287 commit 2a1c5a1
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions TeachYourselfCS-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -184,4 +184,52 @@ _Readings in Database Systems_,或者以[数据库“红书”](http://www.red

不管选择怎样的教材或者其他辅助资料,学习分布式系统必然要求阅读论文。[这里](http://dsrg.pdos.csail.mit.edu/papers/)有一个不错的论文清单,而且我们强烈建议你出席你当地的[Papers We Love](http://paperswelove.org/)(仅限美国)。

## 常见问题解答

### 人工智能/计算机图形学/XX主题怎么样?

我们试图把计算机科学主题清单限制到那些我们认为 _每一个软件工程师_ 都应该了解的内容,不限于专业或行业。拥有了这些基础,你将能更加轻松地挑选教材或论文,然而无需指引地学习核心概念。在这里,我们给出一些其他常见主题的自学起点:

* 人工智能:通过观看视频并完成Pacman项目来学习[Berkeley的AI课程](http://ai.berkeley.edu/)。至于教材,使用Russell和Norvig编写的 _《人工智能:一种现代方法》_
* 机器学习:学习吴恩达在Coursera上的课程。耐心学习,先确保理解了基础概念再奔向类如深度学习的诱人新主题。
* 计算机图形学:学习[Berkeley CS 184课程](http://inst.eecs.berkeley.edu/~cs184/fa12/onlinelectures.html)的材料,使用[Computer Graphics: Principles and Practice](https://www.amazon.com/Computer-Graphics-Principles-Practice-3rd/dp/0321399528)作为教材。

### 一定要严格遵守推荐的学习次序吗?

事实上,所有主题之间都有一定程度的重叠,彼此循环引用。以离散数学和算法的关系为例:先学习数学可以帮助你更深入地分析和理解算法,然而先学习算法可以为学习离散数学提供更大的动力和应用背景。理想情况下,你将在你的职业生涯多次重温二者。

因此,我们所推荐的次序主要是为了帮助你 _起步_……如果你出于某种强烈的原因而倾向以不同的顺序学习,那也没有关系,勇敢开始吧!不过在我们看来,最重要的“先决条件”是:先学计算机架构再学操作系统或数据库,先学计算机网络和操作系统再学分布式系统。

### 这份指引的目标受众是?

我们面向自学的软件工程师、培训班学生、“早熟的”高中生或者想要通过自学补充正式教育的大学生。关于何时开启这段自学旅程,完全取决于个人,不过多数人在有一定的职业经历后深入学习计算机科学理论会获益匪浅。比如,我们注意到,如果学生在工作中曾经使用过数据库,他们会 _喜爱_ 学习数据库系统课程;如果学生从事过一两个Web项目,他们会 _喜爱_ 学习计算机网络。

### 和Open Source Society、freeCodeCamp curricula等比起来,这份指引?

[OSS指引](https://github.com/open-source-society/computer-science)涵盖太多主题,在许多主题中推荐劣质资源,没有就特定课程哪些方面有价值提供原因或指引。我们努力对这份指引中的课程加以限制,仅仅包括那些你作为软件工程师 _确实需要了解的_,不论你的专业方向,并且对每门课程为何必要做出了解释以帮助你理解。

FreeCodeCamp主要关注编程,而不是计算机科学。至于你为什么要学习计算机科学,参见[上文](#为什么要学习计算机科学?)

### XX编程语言怎么样?

学习一门特定的编程语言和学习计算机科学的一个领域完全不在一个维度——相比之下,学习语言 _容易__缺乏价值_。如果你已经了解了一些语言,我们强烈建议遵照我们的指引,然后在学习的空当中习得语言,或者暂且不管以后再说。如果你已经把编程学得不错了(比如学完了 _《计算机程序的构造和解释》_),尤其是如果你学习过编译器,那么面对一门新的语言,你只需要花一个周末稍多的时间即可基本掌握。

### XX流行技术怎么样?

没有任何一种技术的重要程度可以达到学习其使用足以成为计算机科学教学的核心部分。不过,你对学习那门技术充满热情,这很不错。诀窍是先从特定的技术回退到基本的领域或概念,判断这门流行技术在技术的宏观大局中位于何处,然后才深入学习这门技术。

### 为什么你们还在推荐龙书?

龙书依旧是内容最为完整的编译器单本书籍。由于过分强调一些如今不够时新的主题的细节,比如解析,这本书招致了恶评。然而事实上,这本书从未打算供人一页一页的学习,而仅仅是为了给教师准备一门课程提供足够的材料。类似地,自学者可以从书中量身按需挑选主题,或者最好依照公开课授课教师在课程大纲中的建议。

### 如何便宜获取教材?

我们所建议的许多教材在网上都可以免费获得,这多亏了作者们的慷慨。对于那些不免费的书籍,我们建议购买旧版本的二手书籍。广而言之,如果一本教材有多个版本,旧版本大概率是完全足够使用的。即便新版本的价格是旧版本的10倍,新版本也绝不可能比旧版本好10倍!

### 这份指引是谁写的?

这份指引由[Bradfield School of Computer Science](https://bradfieldcs.com)(旧金山)的两位教员:[Ozan Onay](https://twitter.com/oznova_)[Myles Byrne](https://twitter.com/quackingduck)编写。这份指引基于我们对数百名自学成才的工程师和培训班学生教授计算机科学基础的经验。感谢我们所有学生对自学资源的持续反馈。同样感谢Alek Sharma,Omar Rayward,Ammar Mian和Tyler Bettilyon对这份指引的反馈。

### 这份指引是谁翻译的?

这份指引的中文翻译是[社区共同贡献的成果](https://github.com/keithnull/TeachYourselfCS-CN/),我们欢迎任何反馈和改进!

0 comments on commit 2a1c5a1

Please sign in to comment.