给大一CS生的推荐书单

Sep 18, 2017

小伙子离开家上大学了,说C语言听不大懂,网上资料虽然多,但是百度都是广告,让我推荐一下。我虽然是学过谭浩强C语言的,但是早就在大二买二手电脑的瞬间,都还给了老师。这里只是综合牛人们的博客文章,给几个建议,仅供参考。

(请注意有下划线的都是链接。在这个css风格下,不是很清楚地强调链接,我觉得挺美,也懒得改。)

C语言有必要学,但用处不广

老司机的推荐

C是Linux的内核语言,运行效率很高,因为能直接与硬件打交道。也因为这一点,编程效率不是很高。

现代的新书也不多,但是有很多经典的好书,这里看到三本,来自于“Some dark corners of C”:

这是帮助理解语言运行的工具

这里是一个姓郭的人做的网站,可以把各主流代码的执行过程可视化,对于了解、熟悉范畴、指针等概念很有帮助。

http://www.pythontutor.com/

其中C语言的页面是:

http://www.pythontutor.com/c.html#mode=edit

页面底下有实例代码,点进去运行一下,很直观。

经典中的经典

另有Ritchie和Kernighan合写的《C程序设计语言》,经典中的经典。

这本书在“编程随想”的个人博客里有中英文电子书,不过下载要翻墙。

学Python,我刚刚读完入门书

我刚刚在8月里读完了Downey的《Think Python》,第一遍读,做完了70%的习题,用中文做的复盘

现在正在上MITx的网络课Introduction to Computer Science and Programming Using Python。由于是第一次用MOOC工具,还没有找到节奏感。

所谓科班出身,关键是像计算机专业人士一样想问题

关于这一点,很多人都给出了具体的建议。我只恨自己没有早点通读他们的话。其实,只要看看大小标题,就能大致知道前进的路径和方向,有多么多,多么广,急不得,好好走。

  • Peter Norvig是谷歌大神,他看到书店里的一些书名,感觉很困惑,比如《24小时自学Java》,还有C,SQL,Ruby, 算法,等等,都能在几小时,几星期内学成。他看不下去了,写了一篇在CS届引用率超高的文章Teach Yourself Programming in Ten Years自学十年编程,建议点进去好好看看。 我逐字逐句读了,还写了MindNode笔记。他的建议很具体,但是要每一步都需要几个月的时间,加在一起,十年也许走不完。
  • Sam King在Norvig的基础上,结合自己经验,给出了更细化的建议,可望又可及,写在他的博客中:How to Think Like a Computer Scientist。 我也通读过,我想成为他那样的人,也能说出类似的话。
  • Yevgeniy Brikman贴出了一篇长博客Don’t learn to code. Learn to think.。他受Simon Peyton Jone的TED演讲激发而写的。我看了文首的视频,没有字幕,没大听懂,但是感情是接收到了。文章逻辑很清晰,可读性好。文末给的大学开放课程,线上教程,社区和俱乐部链接,都是业界良心。

李笑来老师的建议很中肯

李笑来老师是新东方作文老师,后来写了三本书,都大叫好,一本是《把时间当作朋友》,一本是《人人都能用英语》,一本是《七年就是一辈子》。第三本我还没有读。

他去年打算在“新生大学”框架之下,办一个软件学院,培养全栈工程师,所以他在github上开了一个专题博客,开始写一本书,叫《人人都是工程师》。虽然后来因为请到了更专业的老师,他的书没有写下去,但是头几篇文章还是很有示范作用的,告诉你有用的教程长什么样子。

李笑来老师那里也是个学习大坑,我还没转出来呢。

授人以鱼不如授人以渔

关于翻墙

前几天回学校,发现交大已经给在校学生们提供VPN翻墙服务了。不知道湖北什么样?

我现在用的是云梯,240块一年,每月100G流量,不限时间,可以同时三台机器在线。如果需要,可以问我。

关于阅读

如果你不擅长听课,而是更愿意自由阅读,那么恭喜,你前面的路无限宽广。这里提供一个行路指南,就是哎德勒和范多伦的《如何阅读一本书》。

“编程随想”的博客有一片专文介绍此书,说得很具体。为了阅读方便,我复制粘贴过来,镜像在这里了。

  • https://john-qu.github.io/mirror-how-to-read-a-book

2017-09-20 update