当前位置: 首页 > news >正文

新作《.NET 4.0面向对象编程漫谈》之序“穿越梦想、起锚远航”

穿越梦想 起锚远航

注:

本人之新作——《.NET 4.0面向对象编程漫谈》之《基础篇》已经完成了出版前的各项准备工作,估计11月份可以上市,《应用篇》可能会晚一点推出。

本书《基础篇》适合于已有一到两年开发经验的读者,而《应用篇》要求读者拥有更多的开发经验,并且己经掌握了《基础篇》中的技术。这两本书都不适合于那些刚开始学习.NET的,还没有掌握C#编程语言的读者。

从现在开始,我将在本博客上发布一些有关本书的信息和资料,等书出版以后,也会以本博为主要场所与读者相互交流。

希望我的这两本书能帮助大家更好地理解和掌握.NET技术。

点击此处下载本书的完整目录。

金旭亮

2010年9月23日

====================================================================

经过约1年的紧张写作,本书终于在20108月完稿了,不禁长舒一口气。

笔者从2008年就开始追踪.NET 4.0Visual Studio 2010从跑在虚拟机里的“CTP(社区预览)版”开始,BETA1 à BETA2 à RC à 正式版,微软公司所有公开发布的版本都先后在我的计算机上“安营扎寨”,Channel 9上的技术视频,.NET各开发小组的团队博客,国内外特定技术领域专家的个人博客,还有MSDN上的官方文档……都成为我写作本书的技术源泉和原始素材。

需要指出的是,由于本书属于技术普及类书籍,不是学术类著作,并且我对这些“原材料”都进行了比较彻底和全面的加工和重新组织,并非原样引用,因此书中没有全部标出这些素材的原始引用来源,大多以脚注的方式注明其原始链接,并在书后附上了本书主要的参考文献。

写作本书之前,笔者已经在个人博客上发表了多篇有关.NET 4.0的技术文章,这样看来,大概我应该属于国内那批为数不算太多的“技术发烧友”群体。等到本书正式完稿,已经过去了近两年的时间。

我从2002年开始学习.NET技术,这本书,其实也是我这几年来所积累的知识和经验的一次集中释放。

写作,真是一件“苦差事”,甚至可以说是“体力活”,但同时又是让人“乐在其中”、“欲罢不能”。这种矛盾交织的心理我想可能每个作者都会有。

写作本书时有点诚惶诚恐,毕竟我在写作最新的技术,能参考的资料并不多。在整个写作过程中,我不停地问自己:

我对这些新技术的把握是否全面?是否有理解错误的地方?用什么方式才能表述清楚这些有着复杂关联的技术?……

而最大的困惑与担心莫过于以下这两点:

1)以我这点有限的水平,能写好这本书吗?

2)如果这本书包含着不少疏漏或错误,读者会不会骂我不自量力?面对着可能会有的种种议论,我能否有足够的心理准备去坦然承受?

这些问题曾经纠缠我好久,但后来我想通了,释然了。

首先,没有人能不犯错。

我认为:除非是某项技术的原创者,大多数学习和应用此技术的人其实都是在“盲人摸象”。

要想真正地掌握好某项技术,比较仔细全面地阅读它的源代码是最直接有效的方式。著名技术作家侯捷先生也是此观点的坚定支持者,他说:源码面前,了无秘密。

虽然当前可以看到不少软件的源代码,比如使用Reflector工具我们可以看到.NET基类库中各个组件的源代码,而且我个人在写作过程中也经常这样做,但毕竟.NET基类库太庞大了,谁能有这个时间和精力去通读一遍其源码?最多只是从中选一部分阅读。而且就算是把相关源码读了一遍,能否真的读懂?再退一步说,就算读懂了这部分源码,对整个技术的理解与把握是否全面又成了问题,因为可能没有时间看完全部的源码或者没有真正全部看懂相应的源码。

在这种现实情况之下,又有谁能完全避免陷入“盲人摸象”的窘境?

其实“盲人摸象”不要紧,关键是要知道自己在“盲人摸象”!

在实际写作过程中,我收集了大量的技术资料进行对比阅读、仔细分析和动手实验,并有选择地阅读了.NET基类库中的部分源码,然后将我对这些技术的理解组织好,以一种比较有条理的通俗易懂的方式展现给读者。

在此我需要强调的是:书中所写的内容是我个人学习、探索、应用和思索的结果,由于.NET软件技术的庞大与复杂,由于我个人的局限性,书中存在的疏漏和错误在所难免。

因此,读者对书中所介绍的内容应该执一种“批判性阅读”的态度,不唯书,只唯实。如果读者对书中的叙述有疑惑,就请大胆地去独立试验、探索和研究,发现了问题,及时地反馈给我,我将使用各种方式更正本书中发现的错误,我会在个人博客上为本书开辟专区,发布勘误表,并回答读者的问题。如果本书重印,我会与出版社商量重印的版本尽量体现出勘误的修订。

现在再谈谈第二点:为什么我明知自己能力有限,宁愿冒着被读者批评的风险,也要投入巨大的时间和精力去动手写这本书?

对这个问题的回答需要扯得远一点,因为它与我个人的经历有着密切的联系。

我从1994年开始投身IT,到2010年为止,沉浸在软件技术中已经16年,可以说我把最好的青春年华献给了软件技术,之所以如此,实在是因为软件技术那令人难以抗拒的魅力。

16年的光阴,刚好可以平分为两段。

在这段人生的前半段(1994年开始系统学习计算机技术到2002年研究生毕业,共约8年),我的时间和精力主要是花在学习和应用软件技术上。这段时间我先后购买和阅读了大量的软件技术书籍,同时“疯狂”地写程序,七八年下来,代码总量估计达到了数十万行。所有的努力其实都围绕着一个看上去很不“崇高”的梦想——成为一名“很牛”的软件开发高手,出人头地,过上我想要的生活

8年过去了,梦想没能变成现实。

时至今日,我耳边经常回荡着刘德华唱的那首老歌——《忘情水》,这首歌的前四句真的很切合自己:

曾经年少爱追梦,一心只想往前飞。

行遍千山和万水,一路走来不能回……

为什么梦想没能实现?

我分析一是自己天资有限,二是环境所限。

8年里,我走了许多的弯路,犯了无数的错误。现在年近四旬,觉得自己才刚有点明白软件是怎么回事,尽管还有许多其他的“惑”,但至少有一点是清醒的:我不过是一个普普通通的人罢了,并不比其他人强到哪里去。但人活一世,总得做点有意义的事,我想我应该围绕着自己的长处去做点实实在在的事,这样到老了至少不会后悔,也不枉到这世间走一回。

在这段人生的后半段(从2002年到现在,也有8年多的时间),我留校任教,成为了一名计算机专业教师,并订立了新的目标——成为一名优秀的知识传播者

我期望能以自己的工作成果,帮助后来者以较高的效率去掌握新技术,不要再走我所走过的弯路。

为此我一方面努力地学习和汲取最新的软件技术进展,另一方面,则精心地梳理知识脉络,搭建技术框架,选择合适的方式将这些知识和技术以尽可能高的效率传播出去,我觉得这是我力所能及的,而且也是我最有可能做好的工作。

我想,虽然自己没有成为一名软件高手,这确实很遗憾,但如果我讲的课、写的书和文章能够引导帮助学生和读者在学习之路上少走弯路,能以较少的投入和较高的效率了解软件技术的新进展,在同样的时间段内,他们就有可能在技术之路上比我走得更快更远,而在这些人中间,相信终会有高手脱颖而出,达到我个人所无法企及的技术高度,欣赏到我未能领略的技术风景。倘能如此,我的工作就是有成效的,我的劳动就是有价值的。如果日后这些成功的人还能记得住我的名字,能说一句“在我学习和起步的早期,金老师的文章和书对我的成长是有帮助的”,我想这就是对我的最大赞扬了。

所以我愿意投入巨大的时间和精力动手写作。

我最后一点担心是:如果书中包含了不少的疏漏和错误,面对读者可能如潮水一般涌来的批评,我能否有足够的勇气去面对?

经过反复思索,我想清楚了这个问题。

前面已经说过,由于个人的能力局限,疏漏和错误在所难免。书中有错,改了就是,有什么好担心的?拒不认错才是错误的!

其中的关键之处不在于书中有没有错,而是我的写作态度是否认真,是否能有一个宽广的胸怀去勇敢地面对读者的批评,有则改之,无则加勉。

在本书的写作上我是尽力了,读者所看到的书,体现了我目前所能达到的最高水平,我的写作态度是认真的,没有粗制滥造,没有偷懒,没有走“拼凑”和简单“堆砌”材料的“终南捷径”。

所以,读者认为这本书是好是坏已经不重要了(虽然我非常希望读者认为此书不错),因为我尽了自己的能力去写作,如果书不好受到读者的批评,这也是我个人能力的问题,不怨任何人,于己又问心何愧?

最后,作为本书的作者,我真心期望本书能对读者真正有所帮助,我在此预祝读者能成长为一名优秀的.NET软件工程师,能在波澜壮阔的信息时代写下自己的华彩乐章!

是为序。

金旭亮

2010年中秋于北京

相关文章:

  • java synchronized详解(非常详细)
  • 123456789分割成12,34,56,789
  • 分享代码
  • C语言实现 字符串过滤并修改并返回个数
  • 记录:对这次转正的一些预测
  • mysql插入中文报错
  • Nebula3嵌入WPF
  • i=i++在java等高级语言的解释
  • JVM学习笔记(一)------基本结构
  • JVM学习笔记(二)------Java代码编译和执行的整个过程
  • 工具汇总
  • 听讲座笔记:国立交通大学《如何成功投稿国际科学期刊》 投稿准备+审稿流程剖析...
  • kettle使用命令行来运行ktr和kjb
  • oracle URL参数获取
  • 记录:真是有这个字
  • 0基础学习移动端适配
  • CAP理论的例子讲解
  • Java小白进阶笔记(3)-初级面向对象
  • Python_网络编程
  • Spark学习笔记之相关记录
  • unity如何实现一个固定宽度的orthagraphic相机
  • Vue--数据传输
  • 安卓应用性能调试和优化经验分享
  • 大整数乘法-表格法
  • 分类模型——Logistics Regression
  • 关于extract.autodesk.io的一些说明
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 回流、重绘及其优化
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 一天一个设计模式之JS实现——适配器模式
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • ionic异常记录
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • #100天计划# 2013年9月29日
  • #HarmonyOS:Web组件的使用
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (JS基础)String 类型
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (译) 函数式 JS #1:简介
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)C#调用WebService 基础
  • (转)http协议
  • (转)Windows2003安全设置/维护
  • ***通过什么方式***网吧
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET 药厂业务系统 CPU爆高分析
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .sdf和.msp文件读取
  • @Repository 注解
  • [ C++ ] STL---stack与queue
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [cb]UIGrid+UIStretch的自适应
  • [EFI]Acer Aspire A515-54g电脑 Hackintosh 黑苹果efi引导文件