编程入门指南

这是一篇《编程入门指南 v1.5》的摘要。

最近陷入一个很糟糕的状况,就是看到什么都想学,学一会就停下来了。
我觉得可能跟我基础不扎实有关系。恰好读到这篇文章,摘下关键部分来提醒自己。

源地址:编程入门指南 v1.5

启蒙

  1. 完成 MIT 6.00.1x (计算机科学和 Python 编程导论)。网易公开课地址:它强调学习计算机科学领域里的重要概念和范式。能让你在自学时开阔眼界;课程内容:
    1. 计算概念
    2. Python 编程语言
    3. 简单的数据结构与算法
    4. 测试与调试。
  2. 完成 Harvard CS50x(哈佛大学:计算机科学)。这门课与MIT的导论课互补。教学语言涉及
    1. C
    2. PHP
    3. JavaScript + SQL
    4. HTML + CSS,
  3. 支线任务:阅读《编码》
  4. 完成 Python 教程

入门

Structure and Interpretation of Computer Programs (SICP)《计算机程序的构造和解释》

  1. Udacity CS212: Design of Computer Program:教学语言为 Python,内容有一定难度。
  2. How to Design Programs, Second Edition:HtDP 的起点比SICP低,书中的内容循循善诱,对初学者很友好,如果觉得完成SICP过于困难,可以考虑先读一读 HtDP。
  3. UC Berkeley SICP 授课视频以及 SICP 的两位作者给 Hewlett-Packard 公司员工培训时的录像(中文化项目)
  4. Composing Programs:一个继承了SICP思想但使用Python作为教学语言的编程导论(其中包含了一些小项目)
  5. SICP 解题集:对于书后的习题,作为初学者应尽力并量力完成。
  6. 开始一些简单的项目,诸如搭建一个网站并维护它,或是编写一个小游戏再不断进行扩展,如果你自己的想法不明确,推荐你关注炼瓜研究所 ,或者从 Mega Project List 中选取自己喜欢的项目。

The Elements of Computing Systems

  • 它会教会你从最基本的 Nand 门开始构建计算机,直到俄罗斯方块在你的计算机上顺利运行。
  • 入门阶段的目标就是坚持完成这本书的所有项目(包括一个最简的编译器与操作系统)。

计算机系统基础: Computer Systems: A Programmer’s Perspective, 3/E《深入理解计算机系统》

  • 该书就是从一个程序员的视角观察计算机系统,以「程序在计算机中如何执行」为主线,全面阐述计算机系统内部实现的诸多细节。
  • 上层设计到底层实现都了然于胸,并能在脑中回放数据在网络->内存->缓存->CPU 的流向
  1. Coursera 上的 MOOC: The Hardware/Software Interface,这门课的内容是 CSAPP 的一个子集,但是最经典的实验部分都移植过来了.
  2. 看看 The C Programming Language (C程序设计语言),回顾一下C语言的知识

数据结构与算法基础

  1. 《算法导论》 Introduction to Algorithms。都不懂就跳过习题和证明,如果还觉得心虚先看看《数据结构与算法分析》
  2. Algorithms: Design and Analysis Part 1 & Part 2;网易公开课:麻省理工学院:算法导论
    • 培养使用常规算法解决小规模问题的能力,结合前文的SICP部分可以读读:《编程珠玑》,《程序设计实践》

编程语言基础

  • 能至少实现一个简单的解释器
  1. 《程序设计语言-实践之路》:CMU 编程语言原理的教材,程序语言入门书,极大扩展眼界,拉开与普通人的差距。
  2. Programming Languages:课堂上你能接触到
    • 极端 FP (函数式)的 SML
    • 中性偏 FP 的 Racket
    • 以及极端 OOP (面向对象)的 Ruby
    • 问题的 FP 分解 vs OOP 分解
    • ML 的模式匹配
    • Lisp 宏、不变性与可变性、解释器的实现原理
    • 让你在将来学习新语言时更加轻松并写出更好的程序。
  3. Udacity CS262 Programming Language:写一个简单的浏览器——其实就是一个 JavaScript 和 HTML 的解释器,完成后的成品还是很有趣的;接下来,试着完成一个之前在SICP部分提到过的项目:用Python写一个 Scheme Interpreter

其他

  1. 到 Stack Overflow 提问:能有效解决问题的提问方法。
  2. 到 CoCode 与人交流
  3. 搭建一个个人博客,像你看到这样的
  4. 订阅自己喜欢的博客

在 Stack Overflow 上票选得出的程序员必读书单中,排在前两位的两本书:

  1. Code Complete:不管是对于经验丰富的程序员还是对于那些没有受过太多的正规训练的新手程序员,此书都能用来填补自己的知识缺陷。对于入门阶段的新手们,可以重点看看涉及变量名,测试,个人性格的章节。

  2. The Pragmatic Programmer :有人称这本书为代码小全:从 DRY 到 KISS,从做人到做程序员均有涉及。

完成这些,你就入门啦!