.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&CSSw3c网站简单精读

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/一般精读

三、后记

以上书籍是计算机科学上需要学习的书籍的整理,部分看过,也有很多还没看过或没看完,而且由于知识有限还有很多书籍或知识点没有例出。希望可以有更多朋友一起来完善这个书单,让我们每个人都可以享受到知识所带来的乐趣

我相信,只要合理利用时间,坚持学习,在加上科学的方法,定可获得越来越多的知识,同样的财富也会随之而来。

原文地址:http://www.cnblogs.com/vipyoumay/p/5681982.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android roboguice2,Android快速开发框架 roboguice

//使用框架前class AndroidWay extends Activity {TextView name;ImageView thumbnail;LocationManager loc;Drawable icon;String myName;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);name (TextVi…

java 为什么需要常量池

转载自 java 为什么需要常量池java中讲的常量池,通常指的是运行时常量池,它是方法区的一部分,一个jvm实例只有一个运行常量池,各线程间共享该运行常量池。 java内存模型中将内存分为堆和栈,其中堆为线程间共享的内存数…

.NET Core第三方开源Web框架YOYOFx

YOYOFx框架 YOYOFx是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台。 本着学习的态度,造了这个轮子,也是为了更好的了解各个框架的原理和有点,还希望可以和大家多交流 。 GitHub:https://github.co…

JavaScript实现搜索框效果

要求&#xff1a;搜索框获取焦点的时候如果里面的内容是“请输入关键字”&#xff0c;则清空&#xff0c;否则不清空 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">…

JVM调优总结(1):一些概念

转载自 JVM调优总结&#xff08;1&#xff09;&#xff1a;一些概念数据类型Java虚拟机中&#xff0c;数据类型可以分为两类&#xff1a;基本类型和引用类型。基本类型的变量保存原始值&#xff0c;即&#xff1a;他代表的值就是数值本身&#xff1b;而引用类型的变量保存引用…

android通讯录增删改查,android 通话记录的增删改查 .

//获取当前的手机号public String getLocalNumber() {Context context getApplicationContext();TelephonyManager tManager (TelephonyManager)context.getSystemService(TELEPHONY_SERVICE);String number tManager.getLine1Number();return number;}//删除通话记录privat…

使用C#进行系统编程

虽然对于系统编程&#xff08;System programming&#xff09;的定义很模糊&#xff0c;不过可以将其描述为在比特、字节、指令&#xff0c;或CPU周期层面所进行的思考。系统编程这个概念也暗含了对性能和可靠性的需求。Microsoft技术总监Joe Duffy在QCon New York活动中介绍了…

html表格转换为csv,python实现将html表格转换成CSV文件的方法

python实现将html表格转换成CSV文件的方法发布于 2015-11-18 16:53:39 | 155 次阅读 | 评论: 0 | 来源: 网友投递Python编程语言Python 是一种面向对象、解释型计算机程序设计语言&#xff0c;由Guido van Rossum于1989年底发明&#xff0c;第一个公开发行版发行于1991年。Pyth…

JVM调优总结(2):基本垃圾回收算法

转载自 JVM调优总结&#xff08;2&#xff09;&#xff1a;基本垃圾回收算法可以从不同的的角度去划分垃圾回收算法&#xff1a; 按照基本回收策略分 引用计数&#xff08;Reference Counting&#xff09;: 比较古老的回收算法。原理是此对象有一个引用&#xff0c;即增加一个…

巧妙使用信用卡N个小技巧

大家看标题也看出来了&#xff0c;今天的博文与之前的相差十万八千里&#xff0c;既不是代码&#xff0c;也不是黑科技&#xff0c;既不属于创业&#xff0c;也不属于赚钱&#xff0c;今天咱们坐下来就慢慢的谈谈信用卡吧&#xff0c;现在大多数白领&#xff0c;老板&#xff0…

ubuntu16.4下用jexus部署asp.net core rtm

今天说下ubuntu 下部署asp.net core&#xff0c;不需要安装.net core sdk&#xff0c;自带运行时方式部署&#xff0c;利用jexus服务器转发请求到asp.net core. 1.部署准备环境 vmware虚拟机&#xff08;其他也可以&#xff09; ubuntu16.04镜像 2.发布环境 win10系统 vs2015 u…

html页面会出现浏览器崩溃,大规模WebGL应用引发浏览器崩溃的几种情况及解决办法...

我们使用Javascript写WebApp的时候&#xff0c;一般都不会考虑对象的生命周期&#xff0c;不太关注内存“泄露”的问题&#xff0c;依赖JS引擎的垃圾回收机制就可以运行的很好&#xff0c;基本上很少会出现浏览器崩溃的情况。但在Web端显示大规模三维模型的时候&#xff0c;内存…

细说SSO单点登录

什么是SSO&#xff1f; 如果你已知道&#xff0c;请略过本节&#xff01; SSO核心意义就一句话&#xff1a;一处登录&#xff0c;处处登录&#xff1b;一处注销&#xff0c;处处注销。即&#xff1a;在多个应用系统中&#xff0c;用户只需要登录一次就可以访问所有相互信任的应…

java实现字符逆序输出

package cn.jbit.array;import java.util.Arrays;public class CharsSort {/*** 字符逆序输出*/public static void main(String[] args) {char[] chars new char[]{a,c,u,b,e,p,f,z};System.out.print("原字符序列&#xff1a;");for(int i 0; i < chars.lengt…

html5页面转场,基于HTML5 SVG的页面过渡切换效果

示例中使用了CSS Flexbox和CSS变量&#xff0c;不是所有的浏览器都支持这些新的CSS属性。该HTML5 SVG的页面过渡变形切换效果的基本HTML结构如下&#xff1a;d"M -44,-50 C -52.71,28.52 15.86,8.186 184,14.69 383.3,22.39 462.5,12.58 638,14 835.5,15.6 987,6.4 1194,1…

JVM调优总结(4):分代垃圾回收

转载自 JVM调优总结&#xff08;4&#xff09;&#xff1a;分代垃圾回收为什么要分代 分代的垃圾回收策略&#xff0c;是基于这样一个事实&#xff1a;不同的对象的生命周期是不一样的。因此&#xff0c;不同生命周期的对象可以采取不同的收集方式&#xff0c;以便提高回收效…

.NET Core系列 : 2 、project.json 这葫芦里卖的什么药

.NET Core系列 &#xff1a; 1、.NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境&#xff0c;本文介绍.NET Core中最重要的一个配置文件project.json的相关内容。我们可以使用.NET Core 的dotnet 命令行接口&#xff08;CLI&#xff09;dotnet new命令创建一个应用&…

html5 地图效果,html5 echarts图表插件炫光的分布地图动画特效

特效描述&#xff1a;图表插件 炫光的动画 分布地图动画 动画特效。html5地图动画&#xff0c;html5 echarts图表插件代码结构1. 引入JS2. HTML代码&#xfeff;ECharts$(#document).ready(function(){getEcharts();});function getEcharts(){// Step:3 conifg EChartss path, …

ASP.NET MVC @helper使用说明

简单的 helper 方法应用场景 Razor中的helper语法让您能够轻松创建可重用的方法&#xff0c;此方法可以在您的视图模板中封装输出功能。他们使代码能更好地重用&#xff0c;也使代码更具有可读性。 在我们定义helper方法之前的代码 让我们看一个简单的产品列表应用场景。在此场…

java实现向有序数组中插入一个元素

package cn.jbit.array; import java.util.*;public class Insert {public static void main(String[] args) {//字符排序char[] chars new char[9];chars[0] a;chars[1] c;chars[2] u;chars[3] b;chars[4] e;chars[5] p;chars[6] f;chars[7] z;System.out.print(&quo…