【转载】.NET程序员走向高端必读书单汇总
如今程序开发工作越来越简单(丰富的API、智能的IDE、越来越多的开发框架),普通人通过简单的训练,通过组合和复制就能完成众多程序的功能。因此程序员这种过去高技术职业的代名词,现在却如此低贱,被称之为码农。借用微观经济学原理,当供应量增加而需求不变时,价格平衡点将下移,因此普通程序员工资越来越低。而且大街上众多的培训机构还不停的产出,可以预料到不久将来价格平衡点还将下移(不考虑通货膨胀等因素)。那么作为有远见的程序员更应该加强自己内功,成为不可替代品。看书是对自己最有效的投资方式,我整理了已经看了和准备看的书籍,并按知识点分门别类供大家参考和讨论。
一、知识树
计算机科学与技术是一门庞大而复杂的学科,不可能了解完所有内容,但可以通过知识树梳理了解整个领域的核心知识,为后续应用做好准备。
如果将计算机科学与技术看成是武学的话,左边部分是内功,右边部分则为招式。武学高手可以用简单的招式发挥出巨大的威力,是因为内功的强大。因此要了解整个计算机科学与技术的全貌需要从内功开始。
1. 基本能力
1.1 数学
很多做应用系统的程序员会觉得数学基本上没有用,因为在系统中基本没有用过。但实际上数学是整个计算机的基石,因此对数学的了解不可或缺。如果是从事机器学习、数据挖掘、计算机图形学的更需要较强的数学功底。
- 具体数学:《具体数学-计算机科学基础》 https://book.douban.com/subject/21323941/
- 概率论与统计学:《概率论基础教程》 https://book.douban.com/subject/1803862/
- 离散数学:《离散数学及其应用》 https://book.douban.com/subject/3125432/
- 线性代数:《线性代数及其应用》 https://book.douban.com/subject/1425950/
- 高等数学:《托马斯微积分》 https://book.douban.com/subject/1231399/
1.2 英语
英语是程序员最重要的语言,大部分的技术书籍、协议、会议等均是英文,因此需要了解第一手的资料需要很强的英文读写能力,英语学习是一个循序渐进的过程,可利用碎片时间学习。
- 英文方法论:《把你的英语用起来》 https://book.douban.com/subject/3748247/
- 学习教材:《赖世雄从头学美语系列》
1.3 语言表达
语言表达主要是书面和口头,需要培养逻辑严密、语言流畅的语言表达能力。这个主要靠多写多练比如在博客园上写文章(像我现在一样),多和同事朋友美女交流。
2. 计算机组织与体系结构
计算机系统的组织结构,以 冯·诺依曼模型作为基础,是计算机的硬件基础。
核心知识点
- 数据的机器表示
- 汇编级机器组织
- 接口和通信
- 存储系统
- 多处理器
参考书籍
- 计算机结构:《深入理解计算机系统》 https://book.douban.com/subject/1230413/
3. 算法与数据结构
很多人觉得现在应用系统根本就不需要数据结构,高级语言早已经封装好了,不需要学习。这个问题类比于如果只干搬砖砌墙的活,熟练掌握工具那也就够了。但是要想设计建筑的话,物理是必须学的。
核心知识点
- 算法策略:
穷举算法
、贪心算法
、分治算法
、回溯法
、数值逼近
- 基本算法:
查找算法
、排序算法
、哈希表
、图算法
、最小生成树
- 基本数据结构:
列表
、树
、图
参考书籍
分类 | 书籍 | 难度 | 重要度 |
---|---|---|---|
数据结构与算法分析 | 《数据结构与算法分析》 https://book.douban.com/subject/1139426/ | 一般 | 精读 |
算法描述语言入门 | 《c和指针》 https://book.douban.com/subject/3012360/ | 一般 | 精读 |
解释下为什么要把《c和指针》放到这里,因为个人觉得所有算法与数据结构描述语言中c是最爽的一种(没有之一),并且在《c和指针》中不仅讲解了c语言,更对简单的数据结构和算法做了讲解,非常漂亮。建议一定在正式学习《数据结构与算法分析》前先看这本。
4. 操作系统
操作系统中的很多概念需要了解,比如进程、线程、资源互斥,在实际开发中很多地方都需要用到。
核心点:
- 内存管理
- 设备管理
- 调度算法
- 并发性
参考书籍
分类 | 书籍 | 难度 | 重要度 |
---|---|---|---|
操作系统原理 | 《现代操作系统》 https://book.douban.com/subject/3667744/ | 较难 | 泛读 |
5. 计算机网络
计算机和远程通信网络尤其是基于TCP/IP网络的发展,使得联网技术变得十分重要。
核心知识点
- 网络分层(Tcp/ip 4层结构)
- 网络传输安全
- HTTP协议
参考书籍
分类 | 书籍 | 难度 | 重要度 |
---|---|---|---|
计算机网络 | 《计算机网络》 https://book.douban.com/subject/1179807/ | 较难 | 泛读 |
HTTP协议 | 《图解http协议》 https://book.douban.com/subject/25863515/ | 简单 | 精读 |
6. 信息管理
信息管理技术在计算机的各个领域都是至关重要的 , 它包括了信息获取、信息数字化、信息的表示、信息的组织、信息变换和信息的表现 ; 有效存取算法和存储信息的更新、数据模型化和数据抽象以及物理文件存储技术.
核心知识点
- 数据建模
- 数据库系统
- 关系型数据库系统(Mysql最佳)
参考书籍
分类 | 书籍 | 难度 | 重要度 |
---|---|---|---|
数据库基础 | 《数据库系统概念》 https://book.douban.com/subject/1929984/ | 较难 | 泛读 |
mysql数据库 | 《高性能Mysql》 https://book.douban.com/subject/4241826/ | 一般 | 精读 |
7. 开发语言及框架(以.net平台为例)
这个主要到程序领域了,本文以.net平台为例。
核心知识点
- CLR
- 面向对象程序设计
- Web编程
参考书籍
分类 | 书籍 | 难度 | 重要度 |
---|---|---|---|
虚拟机技术 | 《CLR via c#》 https://book.douban.com/subject/4924165/ | 较难 | 精读 |
面向对象程序设计 | 《敏捷软件开发 c#版本》 https://book.douban.com/subject/1140457/ | 一般 | 精读 |
C#语言 | 《深入解析c#》 https://book.douban.com/subject/4822302/ | 一般 | 精读 |
《c#与.net4高级程序设计》 https://book.douban.com/subject/6062550/ | 一般 | 精读 | |
ASP.NET | 《asp.net高级程序设计》 https://book.douban.com/subject/6428937/ | 一般 | 精读 |
JavaScript | 《JavaScript权威指南》 https://book.douban.com/subject/10549733/ | 一般 | 精读 |
《JavaScript模式》https://book.douban.com/subject/11506062/ | 一般 | 精读 | |
《javaScript语言精粹》https://book.douban.com/subject/3590768/ | 一般 | 精读 | |
HTML&CSS | w3c网站 | 简单 | 精读 |
8. 软件工程
软件工程学科涉及到为高效率地构建满足客户需求的软件系统所需的理论、知识和实践的应用。 软件工程适用于各类软件系统的开发 , 它包含需求分析和规约、设计、构建、测试、 运行和维护等软件系统生存周期的所有阶段。软件工程使用工程化方法、技术和度量 , 它使用管理软件开发的工具、软件制品的分析和建模工具、质量评估与控制工具、确保有条不紊且有控制地实施软件演化和复用的工具。 软件可由个人开发者或者开发小组进行 开发 , 他们 要选择 最适合 开发 环境 的工具、方法和途径。质量、进度、成本等软件工程的要素对软件系统的生产都是十分重要的.
核心知识点
- 软件设计
- 软件过程
- 软件项目管理
参考书籍
分类 | 书籍 | 难度 | 重要度 |
---|---|---|---|
软件设计 | 《head first 设计模式》 https://book.douban.com/subject/2243615/ | 一般 | 精读 |
《企业架构模式》 https://book.douban.com/subject/4826290/ | 一般 | 精读 | |
软件工程 | 《软件工程》 https://book.douban.com/subject/6047742/ | 一般 | 精读 |
项目管理 | 《如何管理软件企业》 https://book.douban.com/subject/4178846/ | 一般 | 泛读 |
项目管理 | 《软件项目管理与敏捷方法》 https://book.douban.com/subject/4837350/ | 一般 | 精读 |
二、学习方法
要想学完以上知识光靠死记硬背是不行的,要有科学的方法,下面书籍包括了科学的学习方法。
分类 | 书籍 | 难度 | 重要度 |
---|---|---|---|
学习方法 | 《整体学习》 https://book.douban.com/subject/25783654/ | 一般 | 精读 |
阅读方法 | 《如何阅读一本书》 https://book.douban.com/subject/1013208/ | 一般 | 精读 |
时间管理 | 《另外8小时》 https://book.douban.com/subject/10535830/ | 一般 | 精读 |
《把时间当作朋友》 https://book.douban.com/subject/5171244/ | 一般 | 精读 | |
禅修 | 《正念禅修》 https://book.douban.com/subject/23037911/ | 一般 | 精读 |
三、后记
以上书籍是计算机科学上需要学习的书籍的整理,部分看过,也有很多还没看过或没看完,而且由于知识有限还有很多书籍或知识点没有例出。希望可以有更多朋友一起来完善这个书单,让我们每个人都可以享受到知识所带来的乐趣。
我相信,只要合理利用时间,坚持学习,在加上科学的方法,定可获得越来越多的知识,同样的财富也会随之而来。
【转载】.NET程序员走向高端必读书单汇总的更多相关文章
- .NET程序员走向高端必读书单汇总
.NET程序员走向高端必读书单汇总 一.知识树 1. 基本能力 1.1 数学 1.2 英语 1.3 语言表达 2. 计算机组织与体系结构 3. 算法与数据结构 4. 操作系统 5. 计算机网络 6. ...
- Java程序员转Android开发必读经验分享
小编最近几日偷偷的发现部分Java程序员想转安卓开发,故此加紧补充知识,为大家搜集资料,积极整理前人的经验,希望可以给正处于困惑中的你,带来些许的帮助. 啰哩啰嗦的说说Java和Android程序的区 ...
- <转载> 优秀程序员必备的23条好习惯
转自 优秀程序员必备的23条好习惯 编程是一项聪明人玩的游戏,它既是对智力的考验,也是对习惯的考验,智力的好坏取决于父母的基因,人们无从左右,但习惯的好坏却是可以不断培养.一项由美国芝加哥大学国家研究 ...
- [转载] C++ 程序员快过来围观:非常实用全面的 C++ 资源
原文: http://codecloud.net/c-plus-plus-resource-2983.html 绝对是c++开发者的福音啊, 必须推荐. 这次的资源涉及到了标准库.Web应用框架.人工 ...
- <转载>国外程序员推荐的免费编程书籍资源
一.George Stocker 提供了一大串,分类如下: How to Design Programs: An Introduction to Computing and Programming 2 ...
- 转载-优秀程序员的十个tips
理解技术债务 技术债务就像信用卡一样,会有很高的利息,时间越长,修复所化的代价就越大.团队应该培养一种保证设计质量的文化,鼓励重构.同时应当鼓励其它有关代码质量的实践. 保持对原理的好奇心 做Andr ...
- ACM竞赛高手比其他程序员水平高很多吗?
1. ACM是一种很直接的评价程序员水平的体系 2. ACM竞赛会带来很多机遇(深造or工作),同时又是一个不小的挑战 3. 为竞赛而竞赛的事情不可取 详细点击这里
- [转载]图解程序员必须掌握的Java常用8大排序算法
这篇文章主要介绍了Java如何实现八个常用的排序算法:插入排序.冒泡排序.选择排序.希尔排序 .快速排序.归并排序.堆排序和LST基数排序,分享给大家一起学习. 分类1)插入排序(直接插入排序.希尔排 ...
- 【转载】 程序员制作996.icu网站抗议加班,你认为996能提高工作效率吗?
原文地址: https://zhidao.baidu.com/question/623053193192988612.html ------------------------------------ ...
随机推荐
- linux下创建的符号链接的权限
今天为shell脚本创建符号链接的时候突然发现的, 创建的符号链接文件的默认权限是 777, 而想要这个脚本可执行, 必须为真正的文件加上 x 权限才可以.
- x9015数字电位器应用
/*********************************************************************** 名称:main() 功能:主函数,将x90 ...
- jQuery操作json数据
json是一种轻量级数据交换格式,简单的json格式为[{"key1":"value1"},{"key2":"value2&quo ...
- 一个容易被忽略的ReportingService超时问题
我们在使用Sql Server Reporting Service开发报表的时候,经常会遇到报表超时的问题,报表超时的原因有很多,也有很多地方可以设置报表的超时时间,比如在报表中的数据源(dataso ...
- OpenStack 多台计算节点时的问题
Contents [hide] 1 前言 2 bug 3 解决方法 4 网络问题 前言 添加一台计算节点后无法创建虚拟机.在调度层就错误: bug https://review.openstack.o ...
- 项目发布时候出错--项目文件包含 ToolsVersion="12.0"
项目文件包含 ToolsVersion="12.0".此工具集可能未知或缺失(您可以通过安装相应版本的 MSBuild 来解决该问题),或者该生成因策略原因已被强制更改为特殊 To ...
- linux上操作mysql数据库
sudo /etc/init.d/mysql start启动mysql netstat -lntup|grep 3306查看端口3306 grant all privileges on *.* to ...
- input放在a标签里面不能选择input里面的文本,IE9点击失效
input放在a标签里面不能选择input里面的文本,IE9点击失效 在IE浏览器中<input type="text" value="test" /&g ...
- linux下xargs命令用法详解 【转】
转自:http://blog.chinaunix.net/uid-128922-id-289992.html xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xa ...
- String.Join 和 Distinct 方法 去除字符串中重复字符
Qualys项目中写到将ServerIP以“,”分割后插入数据库并将重复的IP去除后发送到服务器进行Scan,于是我写了下面的一段用来剔除重复IP: //CR#1796870 modify by v- ...