终于,我也要出一本C#的书了 - 我的写作历程与C#书单推荐

我之前的面试题停了很久,是因为 - 我写书去了。

前言

我于2012年3月开始工作,到现在马上就满六年了。这六年里,我从一个连Sql server是什么都不知道,只会写最简单的c#的程序员开始做起,一步一步从一个籍籍无名的外包公司奋斗到了一个比较大的金融机构的中层,工资也提升到刚参加工作的接近四倍。在奋斗的过程中,我也走了很多弯路,一度十分消沉,但幸运的是,最终我的努力并没有白费。

我一直就是一个比较喜欢写文章的人。在平时工作时,我也喜欢把很多必要的东西(例如服务器的ip地址,登录密码等)写下来,并做成文档以便随时查阅。在前几年,我对自己的公司不满意,在业余时间一直在准备跳槽,于是,我搜集了很多面试题和解答。后来我发现这样准备毫无系统性,便去买了本书开始看。说来惭愧,我在工作的第三年才开始系统的看书,那时买的第一本书是《精通C#》第6版。在读书的同时,我也知道了其实C#领域最出名的书是clr via c#,并买了一本,重写了自己的文章(之前它们只是面试题的解答),慢慢贴到网上,成为了面试题系列。在这个系列的编写过程中,我也参考了博客园上很多杰出的网友的优秀文章。这个过程中我的技术水平提高了很多。在写博客的同时,我也得到了某公司编辑的注意。通过博客园站内信,编辑希望我写一本关于C#的书。当时我清点了一下自己文章存货,发现总字数已经有大概10万左右,而且那时候公司工作也不忙,就同意了。

书籍写作

在签了初步合同之后,编辑将我的书命名为C#笔试面试题集,因为毕竟我在网上的博客和面试题关系比较密切。我根据自己电脑里已有的文章存货,提交了目录,并拟定为7大块:
1 .NET基础知识,包括类型基础,面向对象等
2 C#重要特性,包括委托事件,泛型反射,LINQ等
3 设计模式
4 数据库基础知识
5 算法基础知识
6 测试,部署和持续集成
7 多线程

之所以包括这么多内容,是因为我在准备面试时对这些都写了文章。但在写书的过程中,我逐渐发现,我的“野心太大”了。如果我按照上面的大纲去写书,我不仅时间不够,目前的能力也完全无法胜任:我的算法水平很一般,也不是设计模式和数据库专家,对测试和部署的经验也不多。而且,即使在刚开始写.NET基础知识这部分我自以为最“擅长”的部分时,我也在查资料和参考其他书时,发现我的认知其实还颇为皮毛。因此,在刚开始写书时,虽然是在过去文章的基础上改进,我的进度仍然很慢。有时候,我还会不时的在网上撞到一篇超强文章,它比我的认识透彻多了,导致之前写的大部分内容都得重写。

在写书进行了几个月之后,我决定从书中砍掉设计模式,数据库,算法,测试和部署,并令书更加集中于c#的讨论。这样一来可以不让书的内容过于松散,二来也让自己更有信心。现在,整个书已经写了90%,这个月底就全部交稿了。在交稿之后,相信还会有一段审稿和与编辑讨论的时间。等到该书正式出版时,我再来通知大家。现在这本书的内容包括:
1 .NET基础知识,包括程序集,类型基础,内存分配,面向对象,字符串,GC等。介绍了一点关于IL的知识。
2 C#,包括委托事件,泛型反射,LINQ,DLR,C#6和7的新特性等
3 多线程,包括多线程基础知识,同步与锁,异步模型,async/await等

第一部分主要参考了clr via c#的第一和第二部分以及其他国内外相关书
第二部分主要参考了深入理解c#以及其他国内外相关书
第三部分主要参考了clr via c#最后一部分(关于线程的),深入理解c#的async/await那部分。我试图用较为容易理解的语言将这两本书的相关章节解释清楚。

我对本书的定位是:适合有1-2年开发经验的人士阅读。该书的书名已经确定为《c# 从现象到本质》,将会有以下几个特点:

  1. 与时俱进,对最新推出的C# 7的特性也有涵盖,但不会介绍最基础的c#语法
  2. 夯实基础,深入本质,并非简单的msdn搬运工 + 一段又长又没有注释的代码这种风格的图书,例如,《21天。。。》。本书会提到IL,并不时张贴IL代码以便深入分析各种语法糖背后的实质
  3. 目前市面上关于c#多线程的中文资料较少,大部分c#书籍在这部分都是简单一提,但我的书中多线程将自成一篇,包括5章,使用通俗易懂的文字解释c#多线程相关的各种各样的锁和同步工具,以及异步编程模型,直到最新的async/await
  4. 重视英语,很多名词旁边配有对应英文翻译

参考书籍

我在写作的时候参考了大量书籍,从大名鼎鼎的赵三本到很多博客园网友写的书,和其他中英文书籍。在阅读他人的书籍时,我也发现有些书真的十分优秀,但却默默无闻。有些书的某些章节颇为精彩。这里我也将它们列出来,作为一个我自己推荐的C#进阶书单。

如果你基础不是很扎实,那么可以找来《精通C# 第6版》入门(不用看wpf,wcf那几部分),或者《Learning hard C#学习笔记》也行。前者内容比较多,后者相对比较简练,可以增强学习信心。但最好的入门书我认为是《NET 4.0面向对象编程漫谈 基础篇》这本。

下面的书都不是用来入门的。

CLR via C#第四版
这本书实在太重要了,太有名了。实际上,它几乎出现在任何一本讲C#的书的参考资料中。该书虽然现在看来已经有点“过时”了,但它对CLR的讲解是十分透彻的。很多国人的C#书籍,都或多或少的受了这本书的影响。

该书虽然很厚,但结构十分清晰,分为五大部分:
1. CLR基础,讲程序集的结构和部署,IL,JIT,类型系统。第一章很重要,必须好好看,第二章和第三章相对不那么重要。
2. 设计类型,该部分遍览了一个类型可以拥有的所有成员,所有章节都很重要,第12章泛型尤其重要。
3. 基本类型,13,14,16,17,19章很重要,15和18可以大概看看。
4. 核心机制,主要包括异常处理,GC,应用程序域,反射和序列化。
5. 线程处理,作为Windows操作系统的大师,作者对线程的理解非常深入。26章主要是概念,27-30章全是多线程,通读这部分对多线程的理解帮助极大。不过,该部分充斥大量专有名词,对非windows高手来说不太友好。可以和其他多线程书配合着看。

这本书由于成书较早,因此缺失了对C#一些较新版本功能的介绍,例如LINQ等。此时,就需要另外一本大名鼎鼎的书 - 《深入理解C#》出来救场了。

深入理解C#
这本书相比上一本不那么“底层”,不过,它的阅读难度也不小。对于更喜欢特性而非原理的读者,可以通读一遍此书,它按照演进顺序讲述了C#1-5的所有特性,对LINQ,异步的讲解既实用又涉及原理。本书所有章节都很重要。

.NET设计规范:约定,惯用法与模式
在争论应该是抽象类还是接口,应该是类还是结构时,我们其实看看这本书就够了,它早就给了我们一大堆最佳实践。不知道怎么书写异常处理?看看第七章吧。本书实际上就是一个代码规范集合。

本书适合在需要的时候随时查阅。以上三本书相辅相成,包括了一个中级开发者需要掌握的所有主语言相关技能(实际上,即使只理解一半也已经足够好了),故被某知名程序员称为“赵三本”。该程序员还认为,充分理解了“赵三本”的开发者在大陆的待遇应至少为20k人民币每月,即中级开发者。

Pro .NET Performance
本书以一个独特的视角 – 性能作为切入点,讲述了.NET程序和类型在性能这一方面的体现。该书的前两章主要讨论了性能测试的衡量方法和工具,第三章深入了类型系统,第四章详细的讲述了GC,这两章值得细读。

本书目前只有英文版,阅读难度很大。

.NET本质论 第一卷 公共语言运行时(Don Box)
本书实际上就是在讲CLR,它也是对CLR的探讨中,我目前知道的书中,最底层,最深入的一本。该书的作者同时也是COM专家,因此,对于CLR这个更好的COM来说,他必然也是驾轻就熟。

本书中我最喜欢的部分是第6章,作者使用了一章的篇幅讨论了方法调用。该书过于底层,成书年代也很早,读起来可能有些脱离实际的感觉。

NET 4.0面向对象编程漫谈 基础篇
本书的作者是金旭亮老师。他的这本书(以及后面相邻的那本)以生动有趣的笔触讲解了.NET的方方面面。我个人非常喜欢这本书。如果你觉得《CLR via C#》太枯燥,行文方式又过于老外,看不下去,可以先看这本。这本书虽然没有《CLR via C#》那么深,但对于底层也有颇多涉及,它和很多粗制滥造的“拖控件教程”有着本质的不同。

NET 4.0面向对象编程漫谈 应用篇
作者在此书中着重分析了进程和线程以及在C#中的实地应用。这是多线程方面来自国人的为数较少的好资料。这本书和上一本一样,我强烈推荐。

你必须知道的.NET(第二版)
本书的编排顺序十分独特。它的视角是完全面向对象的,并且将.NET各个知识点以逐个对比的方式呈现在了读者面前,第一次阅读时,可能会觉得不太适应。本书有一定深度,而且作者行文比较幽默,因此读起来也不是很枯燥。

本书有很多SOLID和设计模式方面的内容,对开发者不无裨益。

Threading in C#
本书(以网页形式在网上公开)提供了另一个关于C#多线程的介绍资料,目前已经有翻译版本https://blog.gkarch.com/threading/part1.html。该书对.NET提供的各种各样的锁都有所涉及,可以和《CLR via C#》最后四章一起看。

.NET之美 .net关键技术深入解析
本书是博客园网友张子阳的作品。这本书的委托那章是经典之作。

其他多线程书籍包括async in c#(只有英文),c#并发编程经典实例(这本内容新,但实在是。。。难懂)以及C#并行编程高级教程(这本难度还比较温和但没有async/await)。

结语

我写书并非是指望它挣多少钱(稿费很低)。首先,我对技术与.net有着浓厚的兴趣,常常在写书时搞到废寝忘食,玩游戏都觉得没意思了。另外,我的文章受到出版社编辑的赏识也是对我能力的一种肯定,我既然接下了这个任务就应该认真完成,对得起自己写的每一个字,不误导读者。最后,我也希望通过写书这个契机认识更多的朋友,给自己带来更多的机会。这本书顺利出版之后,我的下一步可能会转向人工智能或机器学习方向的学习和研究(我自学过作曲理论,也一直对人工智能作曲很有兴趣),或者算法方面的研究(出一本书用c#实现各种小游戏求解,例如华容道,数字拼图等等),现在还没有确定。但是我可以确定的是,整个写书的过程中,我收获了很多,也很快乐。

原文地址:https://www.cnblogs.com/haoyifei/p/8513687.html

时间: 2024-10-26 04:06:53

终于,我也要出一本C#的书了 - 我的写作历程与C#书单推荐的相关文章

异步4月新书,送出一本你爱的!

点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书 --异步小编 4月工作日的第一天,小编带来了10本新书,包含关键词Python.神经网络.C语言.iOS开发.数据科学.git.OpenSctck.Joomla.Oracle等. <Python神经网络编程 > [英] 塔里克·拉希德(Tariq Rashid) 著 点击封面购买纸书 当前,深度学习和人工智能的发展和应用给人们留下了深刻的印象.神经网络是深度学习和人工智能的关键元素,

这是一本以情景方式对Android的源代码进行深入分析的书

书是Android应用开发工程师和Android系统工程师进阶修炼的必读之作.它由资深Android内核专家亲自执笔,从源代码角度,系统.深入.透彻剖析Android系统框架层(Framework)的设计思想和实现原理,为Android应用工程师和系统工程师解决实际工作中的各种难题提供了原理性的指导.为了降低读者的阅读成本,<Android的设计与实现:卷1>使用了大量简单的UML类图和序列图来展示类的层次结构和方法的调用流程,使读者能迅速读完<Android的设计与实现:卷1>并

怎么写出一本程序员风格的修真小说?

(转) 终有一天我手中的编译器将成为我灵魂的一部分,这世界在我的眼中将被代码重构,我将看到山川无尽银河无垠都汇成二进制的数字河流,过往英雄都在我脑海眼前一一浮现,而我听到无数码农跪倒在我的程序面前呼喊. 他们叫我代码之神. 到那个时候,我想我一定可以找回你. 一丶这是一个属于代码的修真世界. 这世界里的每一个人,每一个东西,包括高山大海,刀剑风云,其本质都是一串数字流. 打个比方,如果你知道一块石头的内部数据结构,并且参透其中玄妙,你就能用程序改变它的一切.如果能参透自身这一个复杂的操作系统,就

如何写出一本好书?

首先,我们要知道写书能给我们什么好处?第一能总结,第二能在此基础上不断提升,第三在找工作时帮助很大帮助.我知道有很多的朋友想出书,在本文里,我就来分享下两个话题,第一如何出书以及出书的各种细节,第二,如何写出有畅销资质的书. 1 写书对能力的要求未必像想象中那么高,更关键得靠长时间的毅力.我记得看过一篇古文,叫<为学一首示子侄>. 其中讲了个故事,四川有两位和尚,一位贫穷一位富裕.穷和尚对富和尚说:"我想去南海."富和尚说:"您凭借着什么去呢?"穷和尚说

VS2010、MFC对话框程序、点击一个按钮弹出一个有多选项卡的属性页界面(即属性表单)

第一步: 建立多个属性页,可以添加对话框资源,然后修改对话框资源的属性,在vs2010中,修改如下3个:Style设置为child:Border设置为Thin:System menu设置为fasul; Title Bar为true(默认即为true):修改Caption:为此属性页选项卡的名称: 第二步: 为上面的属性页添加类,父类选为CPropertyPage:添加方式:右击对话框添加类即可. (若是父类中没有CPropertyPage类,从类向导中添加即可,此种方法添加时需要选好相应的对话框

上周热点回顾(3.5-3.11)

热点随笔: · 终于,我也要出一本C#的书了 - 我的写作历程与C#书单推荐(风口上的猪)· 我为什么突然想转管理?(南尘)· 官方老爹之痛:为什么苹果能收到推送,而安卓不行?(陈树义)· [开源]C#.NET股票历史数据采集,[附18年历史数据和源代码](数据之巅)· ASP.NET Core 2.0 : 六. 举个例子来聊聊它的依赖注入(FlyLolo)· docker 数据卷之进阶篇(sparkdev)· 高并发场景下的httpClient优化使用(道德楷模周鸿祎)· 快速开发 HTML5

行者无疆,一往无前

经济学与金融学的区别,有一个相当挑衅的描述: 经济学,就是计算一斤老干妈的价格会在哪个区间波动 而金融学,则是计算"两罐半斤老干妈"."一罐一斤老干妈"这二者的价格是否相同 刚重温了<华尔街>(是87版的电影,不是央视的记录片),感慨奥利弗斯通的风格变化,拥有企管学位的迈克尔道格拉斯的游刃老练,以及查理辛的泯然众人矣. Greed is Good, isn't it? 贪婪有理,一部分人的信条,金融不是实业,物质上等同的商品,价格会有差异,这些差异正是利

IT界现在流行写书,NB就出书!腾讯、360、阿里、小米。。。你看过几本

最近互联网科技公司大佬们不仅比拼公司业务水平,各自企业主的吹嘘式经验图书越来越多,有自传的.有授权的,下面我来盘点一下. 跨界:开启互联网与传统行业融合新趋势(全彩精装) 第一本全面解读互联网与传统行业跨界趋势与机会的著作.腾讯科技耗时半年 贫一句:感觉不错  穿布鞋的马云 阿里巴巴上市后,首度官方独家授权!马云只认这一本!附赠史玉柱曹国伟任 贫一句:感觉是借阿里上市的东风,炒作一下自己 小米口碑营销内部手册:参与感(小米终于开口!) 传统企业互联网转型第一书!揭开小米4年600亿奇迹背后的理念

移动流量入口终于重开 “输入法”暗战人工智能

各家"输入法"此刻用专利问题互相攻伐,其目的除了追求曝光度外,也有分散对手精力,减缓步伐,为自己赢得时间的考量 文/张书乐 刊载于<法人>杂志2016年12月刊 在输入法领域,以熊爪为标识的百度和以狗冠名的搜狗,多年来已经撕咬过多次.近日,百度表示,已正式向北京知识产权法院起诉搜狗侵权,起诉书中称"搜狗拼音输入法"和"搜狗手机输入法"侵犯百度输入法10项技术专利,要求搜狗赔偿金额1亿元. 这是一次年度例行开撕,还是别有所图?2010年