计科专业大一学生一枚，如何提高编程能力？
Part I 昨天，有朋友发现清华《招生指南》里有我的特写，我赶紧去看了看。能被选中自然是不胜荣幸，但是说我记录了一万多页笔记，实际上是报道上出了偏差。 我在答辩的PPT里面说的是看过的书超过一万页，其中大一看过的书占了很大一部分。那时候，我刚入学，几乎什么都不懂，就疯狂看书，K&R/C primer / C++ primer plus/python学习手册 看了个遍。但是有些抽象的东西，看书就是看不明白；也有些边边角角的东西，书上讲得特别细，但是实际上使用频率低。 后来，一次偶然的机会，有个朋友找到我一起做外包项目。今天看来，那是个很简单的项目，就是帮学校的某个实验室的网站增加个上传文件的功能，但是当时我才大一，完全不懂网络开发，为了项目硬着头皮学各种知识，而且都是实干导向：IIS怎么用、http://ASP.NET怎么写、怎么把代码插入在HTML页面里……项目是在2017年的劳动节假期完成的，我记得特别清楚。 做完这个项目之后，我赚了500块钱。那是我第一次知道，原来程序员赚钱这么容易。在这样正反馈激励下，我后来又接了一些外包项目，包括给某几个数学大会做网站维护等等。要用的技术都是现学的，需要什么学什么，而且做多了之后就能有一种直觉，似乎自己知道什么知识是重要的、什么知识是不重要的。 所以说，编程是一门实践，不动手是学不会的。 前段时间，孙家广院士为我们讲课，向我们分享了他的成长经历。 孙院士在清华读书的时候，为了帮别人修半导体收音机去学习电子机械；他在毕业之后在清华参与筹办计算中心的时候把学校的唯一一台计算机修好了，在这个过程中从计算机底层到软件全精通；他在90年代做出的国产CAD软件更是一举把国外垄断公司AutoCAD的产品价格从几万元降低到了几百块，让中国的制造业摆脱了传统的绘图板，走向了信息化。 孙院士在我们入学时就送给我们三句话，他的人生经历，可以作为这三句话的完美注脚。 所以说，编程是一门实践，不动手是学不会的。 我最近在学习强化学习，一直很苦恼，难于下手。 强化学习领域的创始人Richard S. Sutton和Andrew G. Barto在2018年出版了《强化学习导论·第二版》，我想，2018年出版的书，应该是对强化学习非常全面的概述了吧，学完这本书，就可以说是精通强化学习了！ 抱着这样的心态，我花了半个多月把这本书粗略地看了一遍。 看完之后依旧很苦恼。书里每句话掰开看大部分能看懂，连起来看完一遍，却不记得他讲了什么。书里面介绍了那么多种算法，也不知道它们具体适用于什么场景。 这个时候，我看到了朋友 @Trinkle 开源的天授项目，一个优雅精巧的强化学习平台，居然主体代码只有两千多行。于是我转变思路，通过阅读这个项目的代码来了解强化学习。由于我和 @Trinkle 也比较熟，看到不懂的代码就向他请教，学习起来就很开心。阅读代码过程中发现一些bug、以及 @Trinkle 说想加一些feature，我就顺手加了，没想到已经写了一千多行了，成为项目contributor之一。 通过看代码、运行试验，我现在对强化学习能有个整体上的认识了，不敢说精通，略懂略懂。 所以说，编程是一门实践，不动手是学不会的。 有些重要的事情，即使说了三遍，依然不能让人记住里面的道理。所以我不仅说了三遍，而且还加了这么多故事，满足知乎用户听故事的欲望。 苦口婆心说这么多，大家明白我想干什么了吗？ 快去给我们的 天授 项目点个star吧 今天刚好是高考结束的一天，接下来马上是招生季了。 祝大家高考顺利，欢迎大家报考清华大学！ 巧的是，今年开始，我将成为一名带班辅导员，带的就是今年入学的新生。 我在清华大学的计算机大类的软件学院等你来！ 