最近很多小朋友都在请教我自学各种技术应该读什么书,为了避免各种人每过几天问我一遍,干脆写出来,方便大家一次获取,终身受益,然后不要骚扰我了,哈哈哈。
我自己的读书习惯,特别是学习计算机,喜欢读哪些写的通俗易懂的书,学到代码后面为什么这么做的原因,只有学习到之其所以然才能在以后用到的时候融会贯通。
推荐书单
Python: Python 核心编程
系统学习 Python,这一本书足矣,把 Python 的每个细节都讲的很透,每个例子都非常实用。
我学习完这一本书以后,再看任何 Python 库的时候都是翻翻 API 手册,
Google 一下就可以快速学会任何 Python 库的用法,并融入到自己的项目中。
C++: C++完全参考手册
我高三看的一本书,2000 多页,大部头,全英文,但是写的非常好。
这也是我唯一看过的一本 C++的书,只要会这些语法,找个 C++项目,
比如 Qt/C++写一个项目,几乎就知道 C++怎么玩了。
其实 C++还是非常方便的,虽然没有 Python 简洁,但是表现力和库生态都太强大,
不用担心性能问题,大多数讨厌 C++的人,
其实是恐惧自己学不好 C++, 放下恐惧,C++其实很容易学习。
Java: Java 编程思想
这本书是在书店读完的,写的很不错,但是当时还在读高二,所以已经记不清当初的读后感了,
模糊印象就是一本写的非常通俗易懂的书,讲的非常细节。
Haskell: 1. Real World Haskell
十年前,#haskell IRC 频道,大多数 Haskeller(科学家,数学家)还在迷恋 Haskell 的数学之美的时候,
GHC 黑客 Dons Stewart 写的这本 Real World Haskell 系统型的讲解了 Haskell 应用的各个领域,
从基本语法、函数式编程、科学计算到图形编程等,讲的一针见血,
而且非常薄,学习玩了就可以流畅写程序了。
当然进阶的知识还是要去 #haskell IRC 频道请教数学家们,哈哈哈。
Haskell: 2. Learn You a Haskell for Great Good!
好朋友写的 Haskell 入门书籍,大爱这种又会计算机又会画漫画的艺术家了,
把一个严谨的数学基因的编程语言讲的诙谐幽默
Elisp: GNU Emacs Lisp Reference Manual
十多年前,我用 Emacs, 对 Elisp 半毛钱不懂,天天就在 EmacsWiki 抄各种配置,
就像一个拾荒者,每天早上起来逛 EmacsWiki, 偶尔碰到高级 Elisp 技巧就把我折腾死了,
然后对着 Emacs 破口大骂。
为了不瞎折腾,我花了一个月的时间读完这本大部头,遇到不懂的 API,
就打开 ielm 临时写一个 demo 函数验证一下,当我读完以后,
我发现 99%的 Emacs 的问题都可以自己调试和解决。
如果你花时间读完这本 Emacs 内置的宝典, 你也可以像我这样写这么多扩展: Andy Stewart
Ruby: The Ruby Programming Language
学习 Ruby 的时候,已经会了几十门编程语言了,手册从头看一遍,不用写练习基本就可以学会。
因为当你编程语言学得足够多的时候,不同语言的语法都是相同的,
只用学习不同语言之间的微小区别就可以了。
以前一直对 Ruby 的 end 语法抱有偏见,但是至从我在 Emacs 配置了 ruby-end 插件以后,世界都清净了。
Vala: Vala Tutorial
Vala 有 C 的速度,Python 的简洁,语法类似 C Sharp,
基本看完这本手册以后,拿着 API 就可以直接开始写了。
Vala 写 Gtk+是非常爽的。
Rust: Rust 语言圣经
这本书应该是中文范围内将 Rust 最好的一本书, 所有权讲的很清晰, 基本概念的章节都通俗易懂, 进阶章节可以先看一遍, 以后遇到了当工具书来查看。
作者后面讲线程和异步模型时, 理解还是很到位的, 证明作者基本功很扎实, 强烈推荐想学习 Rust 的同学读这本书, 一本就够了。
正则表达式: 精通正则表达式
这是我唯一看过一本带有 “精通” 名字的书,确实写的非常好,
Yahoo 工程师把他平常用到的经验都朴实无华的写出来,
基本学会这本书讲的怎么构建正则表达式的思路,不管是标准的正则表达式,
还是 Perl, Elisp 等其他语言的变种正则,都是触类旁通的。
代码质量:重构 改善既有代码设计
这本书代码是 java 写的,但并不掩盖它作为重构第一书的地位。
讲解了很多重构小技巧,教你只要养成十来个重构小细节的好习惯,
不论写什么编程语言,局部代码和整体逻辑都干净的像艺术品一般。
这本书的技巧我这十几年都在践行,难得的好书。
X11: Xlib - C Language X Interface
这本书是读过最枯燥的书籍,但是要从头做一个 Linux 桌面环境,这本书的 API 是必读的。
因为你除了 github 外,根本找不到更多资料来讲解 X11 这个古老的技术了。
Gtk+: Gtk+ Programming Tutorials
写的最通俗易懂的 Gtk+书籍,学完这本书,直接看 Gtk+ Developer Manual 就可以直接写程序了
Qt: PyQt5 Totorial
写的最好的 Qt 入门教程,加上 Python 的方便性,非常容易系统学习,
加上学习 Qt 之前已经有 Gtk+五年编程经验,两天看完就直接用 Qt 写程序了。
JQuery: 锋利的 JQuery
国人写的书,写的非常通俗易懂,每个 API 的参数都是渐进式讲的,
举的例子也很实用简单,基本不用动手就会了。
Rails: Rails Tutorial
系统的讲解了怎么用 Rails 搭建一个网站,虽然很多架构设计和整体逻辑我是靠 Google 摸索出来的,
但是这本书确是入门不可或缺的,难度适中,学习完了,你对构建网站有一个基本的认识了。
SVG: SVG 入门教程
虽然是翻译老外的技术博客, 却是深入学习 SVG 不可多得的教材, 讲的通俗易懂.
可以学到很多 SVG 高级技巧.
CSS: CSS 世界
很多 CSS 网站或书籍都告诉你一个效果要怎么实现,或者直接丢出一段可以直接使用的 CSS 代码。
但是我们在真实的开发场景中遇到的往往是,为什么这段 CSS 代码不能工作?为什么抄的几段 CSS 合在一起不能工作?
这本书的作者研究了很多年的 CSS,他可以告诉你很多关于浏览器的实现细节以及为什么 CSS 不能工作的原因。
懂了为什么不能工作,剩下的很多事情就能举一反三啦。
但这本书不适合初学 CSS 的朋友读,建议在几个项目中熟练了基本 CSS 技巧以后再来读这本书会更有收获。
编译器: Flex & Bison
系统的讲解了什么是词法分析器、语法分析器
以及怎么写编译器的基本流程
这本书特别讲究循序渐进, 细心的讲解每个 API
看完这本书就不会觉得这两个技术有啥高级了, 哈哈哈哈
加解密: 图解密码技术
这本书系统地让你学会对称加密、公钥密码、单向散列函数、消息认证码、数字签名、伪随机数生成器等加解密技术背后的原理和细节, 以及这些技术组合而成的安全大厦的框架和应用。
其实加解密不光是学习破解和干坏事, 知道背后的数学原理和实现细节可以更好的让我们理解安全技术, 并以此来构建更加健壮安全的软件和系统。
强烈推荐作者 “结城浩” 的其他书籍, 已经看了他写的两本书了, 全书都是图文并茂的讲解复杂技术, 很少有数学公式。 人的精力是有限的, 学习最重要的是先要了解其原理再深入学习, 避免投入无谓的精力在不感兴趣的领域。 而作者在深厚的知识背景下, 能通过浅显易懂的文字传授知识, 真是厉害。
Git: Pro Git
这本书除了讲解 Git 的所有日常用法外, 还系统的讲解 Git 的一些高级用法。
同时最后一章还详细的讲解了 Git 背后这种基于文件系统技术的实现原理。
当你理解 Git 基本用法、 高级用法以及背后简单的原理后, 你就可以知其所以然的变成 Git 专家。
万能的 Google
不是每个技术都有很好的书,所以这个时候基本上就是 Google 教你所有的东西。 以下技术基本都是 Google 教的:
- Golang
- Rust
- Html5/CSS3
- Scheme
- OCaml
- Lua
- Perl
- Linux
- …
Emacs 教会我自学
这么多年的自学经历,我最应该感谢的是 Emacs, 是这个世界上最难折腾的软件,虐我虐到我待她如初恋,给我莫大的耐心,我再学习其他技术的时候才会觉得得心应手。
感谢 Emacs 让我接触到强大而又无私的顶尖黑客们和黑客精神,每天看着一群天才比我自己还努力的时候,自己就更萌生发奋学习的动力。
自学的技巧
耐心、耐心、耐心
致 Deepin 粉丝
关心我干嘛的 deepin 粉丝,我现在在写 Rails 代码养家糊口,顺便下班折腾我的 EAF, 我现在活的很好,很开心,谢谢大家的关心! ;)