作者:じòぴé→尐俽 , PHILO (@看见微软我就跑), 服部半藏(@服部半藏ly)
大神们凭借他们的远见卓识和不懈努力,创造了广袤的自由世界,我们希望提供一张经过验证的地图,让新接触自由世界的人可以免于无谓的迷茫,又不至于过于详细而失去探索的乐趣。文中所列技能可能需要点亮前置技能才可学习,我们会尽可能的指出,另外,本文后出现的技能可能依赖前面的技能。
我们竭力使本文完善,如果有需要修改的地方,请提交补丁,我们会尽快合并。作者们怀着慢慢的善意,写下这篇文章,并不代表他们自信自己无所不知、对未来的每一项预见都是正确的,我们希望你不迷信本文的任何一个字,包括华丽的分割线。
当然,如果您再学习的路上感觉比较孤单,也可以加入到我们这里加入我们共同探讨,共同进步。提出意见,改良文档。群:55958311
计算机小白
本段包含一些进阶的操作,我想普通用户并不太需要这些。
你好,进阶小白,权限管理
Ubuntu默认的不是管理员权限,执行安装软件等操作时需要输入你的密码。
你好,进阶小白,新立得软件包管理
在软件中心有一个更强大的包管理工具,非常不建议小白使用,尤其是处女座。
你好,进阶小白,FTP上传下载
建议使用软件:
- FileZilla,从软件中心下载。
你好,进阶小白,文件系统
你好,进阶小白,文件权限
你好,进阶小白,command
只需要看一眼常用命令就行了,百度一大把。
你好,进阶小白,make
主要分为automake的安装参考大神文档 另外最近还有一个cmake火起来了。参考大神文档
计算机相关书单
本段写给有志于讲编程作为全职工作或者工作中大量使用编程的人。不同语言之间没有明确的依赖关系,同一种语言书目之间有从易到难的关系。
得益于上个世界对语言的研究,人类发现不需要使用机器码(010101010001)编程,可以使用类似于自然语言的人造语言编写程序,然后经由计算机翻译成机器语言。根据不同的人爱好不同,语言经常被分为强类型、弱类型,解释型、编译型,对象导向的、过程导向的、函数导向的等等。这些语言相互影响,相互学习,每几年会有一个新的标准(比如C++99和C++11差异就非常大)。
我们建议你多学几种(这个就跟恋爱一样,只有初恋比较青涩,之后越来越顺,一马平川,虽然女孩子分为很多类型),一方面,在不同的场景你需要不同的女孩子,啊,不,计算机语言(比如操作系统用C写,网页交互用JavaScript)。另一方面,特定的计算机语言本身限定了你的表达方式,多了解它们的区别有利于打开思路。
很多编程的教材都类似于五步画马法,我们更希望提供适合自学的,没有各种各样的坑,不需要丰富的想象力脑补就可以学会的书单。
从上到下依次看,C
C语言经历了漫长的演化,现在的它已经不是以前的样子了,但是它仍然适合做你的第一或者第二任女友,啊,不对,计算机语言。所有C语言已经42岁了所以已经不是女神了的思想都是异端邪说。
我们推荐的书:
- 《Head first C》,这本书讲了很多C语言的细节以及编译、运行的细节,很多同主题的书不曾提及。另外,它讲的C比较新。
- 《The C Programming Language》,这本书堪称C圣经,只可惜有部分过时了
- 《C专家编程》,大量整理了C的缺陷和易于混淆的地方,它诞生的比较早,也有点过时了。
- 《数据结构与算法分析 C语言描述》,有了语法,我们需要数据结构和算法才能写出好的程序。
从上到下依次看,Python
Python简单易用,非常适合带来你的初吻,啊,不,跟计算机的第一次接触,但是有两个非常不一样的标准,python 2和python 3,鉴于本文写于2014年中旬,我们推荐python 3。
我们推荐的书:
- 《a byte of python3》,它是一本很简单的入门书
- 官方入门书,有些写的比上一本更清晰
- 《learning python》,非常厚,讲了两个版本的python的方方面面。
我们不推荐的书:
- 《Head first python》,感觉写的有些松散,跨度太大,不太适合新手。
从上到下依次看,算法
在有了基本的语法之后,我们仍然需要一种方式把基本的语法组织在一起解决实际问题,这时候你就需要算法了。
我们推荐的书:
- 《编程之美》,标题过于夸张,实际上主要讲了一些很有意思的算法
- 《数学之美》,没有标题的那么夸张,但是不妨花一个下午看一下。
- 《算法导论》,非常厚,但是很值得花时间看完,虽然很多计算语言自带一套标准库实现了很多算法,但是对算法的掌握依然很重要。
我们不推荐的书:
从上到下依次看,设计模式
世界上本没有这种程序的写法,写多了也便有了这么多种设计模式。
- 《 Head First Design Patterns》,head first系列最好的几本书之一,讲的很清楚,代码使用Java。
- 《大话设计模式》,大话系列最好的几本书之一,编程语言使用C#,相对于上一本行文略显不通畅,但是所有的设计模式都讲全了。
- 《设计模式》,代码使用C++和SmallTalk编写,微言大义,非常适合买一本放在书架上。
从上到下依次看,C++
本段假设你已经会基本的C语法(但是C和C++是两种不同的语言),C++的程序员很贵,因为它非常复杂,在看完以下书单之前,我们不推荐你在简历上写“精通C++”。
我们推荐的书:
- 官方手册,它是目前能找到的最合适的入门书
- 《C++ primer》,这本书讲了C++的基础知识,非常厚,但是条理比较清楚。
- 《Effective C++》,讲解了C++的一些用法和注意事项,部分因为C++11的标准库而过时。
- 《More effective C++》,讲了一些更高端的用法,部分因为C++11而过时。
- 《深度探索C++对象模型》,对C++的继承、多态等实现机制进行了讲解,非常有启发性。
从上到下依次看,Java
Java是一门用途广泛的语言,当然本次我们只针对java语言来说,没有针对web跟安卓来讲。
我们推荐的书:
- 《Head first Java》,Java入门书,讲解的Java5,但是内容没有过时(Java有比较好的向前兼容性,也为此付出了代价),是head first系列最好的书之一。
- 《Think in Java》,对Java基础部门进行了详细的讲解,针对Java5但是没有过时。
- 《深入理解Java虚拟机 JVM高级特性与最佳实践》,对Java运行的环境(Java虚拟机进行了详细的讲解),精通Java必备。
我们不推荐的书:
从上到下依次看,Golang
Golang是google推出的服务器编程语言,对多线程支持非常好。
我们推荐的书(其实写的都不是特别好,只是目前可以找到的书非常少):
- 《Go语言程序设计》,较为细致的讲了Golang的基本语法。
- 《Go web编程》,前半部分是基本语法,后半部分是web开发,部分关于标准库的内容过时了。
我们不推荐的书:
从上到下依次看,JavaScript
JavaScript是Html5钦定的脚本语言,在后端也有广泛的用途。
我们推荐的书:
- 《JavaScript语言精粹》,它介绍了作者认为比较好用的JavaScript功能的一个子集合,表述方式可能并不易懂,但是讲的很不错。
- 《JavaScript权威指南》,全面的Javascript语法书,很多地方讲的并不清楚,比如面向对象的部分。
我们不推荐的书:
从上到下依次看,git
git是一个强大的分布式版本管理工具,功能强大。
我们推荐的书:
- 《pro git》,对git的命令做了简单的介绍。
- 《Git版本控制管理》,对git的内部机制,高阶用法进行了详尽的讲解。
从上到下依次看,操作系统
每天都有很多新手发问,我想深入学习一下Linux,需要看哪一方面的书,有人会推荐一本厚厚的命令手册,我更喜欢推荐操作系统的书。
我们推荐的书:
- 《现代操作系统》,作者很牛气,该书不难但是相当的厚。而且看完之后会让人感觉脑洞大开
从上到下依次看,网络
我们推荐的书:
从上到下依次看,数据库
受作者的领域所限,推荐的数据库类型非常少,欢迎补充。
我们推荐的书:
- 《Mysql必知必会》,很有意思的速查手册,虽然不是特别全面。
- 《数据库系统概念》,对数据库系统讲的非常详细。
- 《MySQL技术内幕 InnoDB存储引擎》,对该引擎讲的非常细致,包括存储方式、行级锁等概念都很清晰。
- 《MongoDB权威指南》,为数不多的MongoDB的入门书。
从上到下依次看,硬件及汇编
我们推荐的书:
- 《深入理解计算机系统》,以程序员的视角讲解的计算机系统的方方面面。
- 《计算机组成与设计 硬件/软件接口》,MIPS构架。
从上到下依次看,编译原理
编译原理虽然日常工作用不到,但是看完了可以知道计算机语言怎么变成机器语言的。
我们推荐的书:
从上到下依次看,项目管理
我们推荐的书:
发表回复