admin管理员组

文章数量:1531306

2024年7月14日发(作者:)

关于NotNet的理解和学习方法

在这里我只推荐很少的一部分资源,但因为我

们的时间和精力都有限,这些已经足够你成为

高手中的高手了。

[1]开发工具及相关下载:

(1)我的ftp:

202.200.238.199user:guestpass:guest

在这里有绝大多数的开发工具(当然包括DotNet),我同时也会经常更新。在你找某个开

发工具时,可先来这里看一下。

(2)MSDN下载:

MSDN开发中心下载(中文):

/downloads/?displaylang=zh-cn&categoryid=10

MSDNDownloadandCodeCenter(英文):

/downloads/

这是微软的官方站点,英文的资源多一点,如果在中文站点没找到,可去英文的看看。

[2]开发社区及学习资料:

(1)CSDN:

首页:

/

CSDN技术社区[C#]:

/expert/?url=/Expert/?

roomid=5201&typenum=1&xmlsrc=&whichpage=1

CSDN技术中心[DotNet文档列表]:

/?c=14

CSDN就啥都不说了,号称亚洲最大,其实啥人都有,别看花眼啊。

(2)MSDN[中文网站]:

/china/msdn/

首先我先给出微软对DotNet定义:

“是WebServices平台。XMLWebServices允许应

用程序通过Internet进行通讯和共享数据,而不管采用的是哪种操作系统,设备或编程语

言。平台提供XMLWebServices并将这些服务集成在一起,为个人用户的

好处是无缝的,吸引人的体验。”

DotNet中的语言是面向构件(组件)编程的典范。在这里我看到了语言层次的进步,C那代

语言是面向过程,C++那代是面向对象,而到了DotNet则是面向构件。

【书籍】《.NETFramework程序设计》(修订版),不多介绍了,这本书必读,否则你就不

叫懂DotNet,这本书的有些内容你可能有点看不懂,不过没关系,随着你以后的深入,你就

会明白了。《设计模式》(我未读过)和《重构》,

软工双杰的称号不是吹出来的,呵呵,开始吧。

不过,我推荐看《C#设计模式》,因为那本《设

计模式》据说太过抽象,很难看懂,并且里边

还是用C++描述的,不适合初学者阅读。看完之

后还推荐一本《设计模式精解》,书如其名,相

信可以给你带来新的感受。

深入阶段:

目标:学习DotNet的高级技术

具体实现:关于DotNet的高级技术,有很多方面(太多了),其中有很多我们可能到工

作阶段才能够深入了解。但是现在了解一些不无好处,我在下面只列出了很少的几个,你可

以从中选择几个学习。其中应该会有你已经熟悉的技术了,这是很正常的,本阶段不像开始

的那几个阶段,比较灵活,它的开始和结束具有灵活性,由你进行控制。

(1)线程操作:

这是提高软件并发性的基础,无论是桌面开发还是网站编程,相信你都会遇到它。强烈

建议打好基础。在这里DotNet下还没有本专题的好书,只能推荐这本《C#/线程手册》,

不过此书正如其名,它只是带着你将托管线程的类库浏览了一番,关键的东西都未提到,

因此你只有到网上看一些有关线程的资料了。不过在这里,我又要拿Java出来了,《Java线

程编程》(我未看过),这本Java线程方面的经典之著应该不会让你失望。

(2)网络编程:

这个重要性不说了吧,就是套接字那套东西。不过这可不是令人头疼的Winsock了,

DotNet对Winsock进行了包装,使其变得好用很多。强烈推荐:《C#网络编程》,它非

常系统的介绍了网络编程的原理和方法,看完之后,编个QQ或Serv-U应该不成问题,总

之不容错过。

(3)数据库编程:

这个好没意思阿,我也不大懂,又不能帮你了。基本的就是一些数据库sql语句和存储

过程,同时还要对常见的DBMS有一些了解就行了。如果想在这个领域深入的话,那就要熟悉

某种DBMS的性能特点,同时提高数据库分析和设计的能力。

(4)CLR和DotNet底层知识:

学了之后短期内应该没用,不过如果像我一样待着没事的话,看看DotNet的内部运作机

理还是挺有意思的。推荐:《高级.NET程序设计》和《.NET本质论》(此本有难度)。

(5)分布式:

它就是.NETRemoting,这是非常有用的一

种技术,我也在学习中。推荐《.NETremoting

技术手册》,不过还要到网上多看别人的例子。

(呵呵,让我们忘掉复杂的COBRA吧)

(6)WebServices:

这是将来的基础应用平台,现在应用的也很广泛。我对这个知识了解一些基础的知识。

没法推荐高深的,只推荐一本O’Reilly的《.NetWeb服务》,是本很好的入门教材。

(7)PockerPC和Smartphone:

热门领域,不过同样也没什么书籍可以参考,同样我也没法帮你,到网上找找吧。

成果:你现在对这几个DotNet的高级技术都有了了解,将来(应当是工作时了)你应该

会精通其中的某几项技术,这是你就是DotNet技术专家了。当然,别忘了,学习完这些技术

后,编几个东西熟悉一下啊。

[5]superman阶段:

目标:提高系统分析和设计的能力,提高OOA/OOD的能力,还有着众多的项目经验。

同时还对DotNet中各项技术都有了新的认识,不再拘泥于技术细节,能做到在最恰当的

场合应用最合理的技术(不一定是最先进的技术),同时还能对将来的技术趋势做出自己的

分析和把握。

过程:。。。。。。

成果:我该怎么称呼你呢?我亲爱的DotNet架构师。

学习.net软件开发的指导()

在我学习的时候走了至少3年的弯路,那个时候没有人告诉我该如何去学习,养成什么

样的学习习惯,用什么样的学习方式,走什么样的技术路线,只是用自己的理想坚持到了最

后,很苦,那个时候家庭的经济也到了崩溃的边缘,学费都要出去借,唉不想了现在好了。

既然也选择了软件开发的专业,所以不想让再走弯路。

程序员马上要做的事,希望他少走弯路,贴出来,博友们帮助看一下,那里有疏漏,提提建

1.马上就开始做!

2.外事不决问Google,微软还有一个Bing

3.习惯并强迫自己阅读英文资料。

4.善于积累和整理资料,做我们这个行业的,

资料(数据)是无价的;

5.习惯每天写博客,我推荐他来博客园,因为

这里提供开放的环境。

/

6.习惯每天阅读订阅最新技术信息,从不放过任何一条知识。

7.习惯跟踪最新的技术和业界新闻。

工具ExpressionStudio3。

9.最简单的学习方式,就是单刀直入,直接做要达到的事情,比如我要学编程,最多的事情

就是看代码,我要学英语,做的最多的事情就是直接去使用英语。

10.确定开发方向,对于Client我推荐Silverlight和Phone方向,但是(网页程

序)也是要学习的基础。

11.快速的搭建开发所用的环境SilverlightTools,Mobile6SDK

12.善于使用最新的软件工具,比如RSS阅读器,WebCast的iReaper下载视频等等,Windows

LiveWriter记录笔记

13.安装WindowsServer2008R2操作系统,搭建虚拟化开发环境。

14.安装VisualStudio2008Sp1和VisualStudio2010,精通C#打好基础

15.安装SQLServer2008sp1精通使用,标准SQL是基础,了解多维数据库和空间数据库,

嵌入式数据库打好基础。

16.了解虚拟化是什么会使用Hyper-VServer。

17.了解云计算服务是什么,并体验其滋生出来的产品服务。

18.了解软件的开发流程,

19.了解软件架构,设计模式,建模符号UML

20.打好C#基础,打好设计模式基础,打好软件架构基础,打好数据库设计基础,打好产品

开发意识,成本控制意识。

21.关于系统安全不要浪费时间,杀毒选用Nod32,MSE,习惯备份系统镜像,虚拟硬盘

22.如果要买台式机电脑,建议购买配置AMD处理器羿龙II4X,主板AMD790GX,DDR38G

金士顿,硬盘1T32M-64M缓存SATA7200,24LED显示器,因为AMD处理器大多都支持虚

拟化技术,没有虚拟化是不行的。

23.不乱结交朋友,不炫耀自己的技术,忠诚热爱自己的技术。

24.精神--学习是一种信仰,一种追求,一个理想,不是应付生活,应付人生,应付答案,

那么最后应付的人就是你自己。

25.对待做每一件事情都要以成功为结果,去努力做成功的事情,你才是成功的人,可想什

么事情别人做都能成功,而如果换作是你做不是这个原因就是那个原因,那将会是多么悲惨

的事情。

26.敏捷的思维模式很重要,成功的人的思维是一种定式的,模式化的,可想如果你不去锻

炼自己的能力,不去努力跟随和提高自己的理解力,当你在人群中,别人所沟通的问题,你

无法去理解,那么别人还会与你交流吗

27.追求更高,更远的目标,并将你的信心传递给每一个人,影响每一个人,你是一个可以

成功的人,拒绝说出“哎~,能找到工作就行啦,哎~,能呆着这里就可以啦”,这不是我们

家里人的性格

28.热爱我们的家庭,我们的传统,我们的追求,

永远不要忘记我们出生在一个工人家庭,并以

拥有像爷爷奶奶这样吃苦耐劳精神感到骄傲,

做宽容勤劳的人骄傲。

怎样学习软件开发技术

1区分计算机科学与计算机技术

“科学技术”往往是连在一起的,但事实上“科学”与“技术”是有区别的。

计算机科学主要研究理论,而计算机技术则是这些理论在实践中的应用。打个比方:

编译理论是科学,而具体的编译器如VBC(微软公司开发的程序编译器)就是技术了;

操作系统原理是理论,而Windows就是理论应用于实践的产品,因而归结于技术范畴。

讲到这里,读者可能明白了,计算机科学家就是指那些从事计算机理论研究的人,目

前,我国高校中计算机系开设的大部分课程都属于计算机科学范畴的课程,比如《数据库原

理》、《操作系统》、《计算机图形学》、《人工智能》、《算法理论》、《数据结构》等,而另一些

课程则属于技术范畴:比如《VisualBasic程序设计》、《SQLServer数据库开发》等等。还

有一些课程,比如《面向对象程序设计》、《软件工程实践》等往往同时涉及理论和技术,因

而是“混血儿”。

“科学”与“技术”的区别,自然地将从事计算机工作的人分成了两大块:计算机科

学研究者与计算机技术工程师。前者研究的是理论,是计算机科学,人数较少,他们从事的

工作是往计算机科学大厦中添砖加瓦的工作,是新知识的发现者,一般而言,只有非常优秀

的人才能进行理论研究工作,后者研究是技术,属于工程范畴,他们关注的是如何把一个好

的软件,一个好的系统给实实在在地做出来,大部分人属于这个范畴。

计算机技术总体上又分为软件与硬件两大块,硬件工程师研究的是芯片、是集成电路、

是板卡等“实实在在”可以“摸得着”的东西,而软件工程师则编写程序,驱动各种各样的

硬件完成工作。

在计算机技术中,有一个并不严格但众所周知的“软硬定律”:

任何一项由软件完成的功能,也可以用硬件实现,反之也一样。

比如Java虚拟机,它原先属于软件范畴,但如果将整个虚拟机烧录到硬件芯片中,然

后在它上面跑Java程序,那你说现在这个虚拟机是“硬件”还是“软件”?这个界限已经模

糊了。

本书所介绍的.NET,属于软件技术范畴,换句话说,如果你想成为一名软件工程师,

就可以看这本书。

与Java

Java是上世纪九十年代诞生的一种面向对象语言,它吸取了C++的许多长处,其最大的

特性是“跨平台”,由于它很好地满足了网络时代信息系统对高级语言的要求,因而在实践

中得到广泛应用。

Java经过近十年的发展,目前已在企业信息系统开发领域占据了主流地位,形成了一

整套完整的技术体系,取得了巨大的成功。

.NET是微软推出的一种新的软件运行平台,它包括一整套应用范围广泛的技术,旨在

迎接Java所带来的挑战。.NET给软件开发带来了很多新的技术,尤其是它的“混合语言”开

发方式,是第一个支持多种语言混合开发的软

件运行平台,下一代Windows——LongHorn(预

计2006年推出)的核心将会看到.NET的身影。

如果读者学过Java,那么您会发现,.NET

与Java实在是太象了。尤其是C#(.NET下的一

种编程语言,念成“CSharp”,不要念成“C

井”),如果给你一段代码,有的时候还真难

分辨出是用Java还是C#写的。

.NET与Java的这种相似为我们的学习提

供了便利,如果您掌握了C#,那么,掌握Java这个语言几乎是不费什么力气的,需要花费时

间的只不过就是熟悉彼此的类库。.NET是.NETFramework,Java是J2SE。学习这两者的理论

基础都是面向对象理论。所以,一名有着面向对象理论基础的人是很容易掌握.NET和Java

的。

《.NET软件技术学习与实践》

作为一个下定决心要学习.NET的初学者,首先要掌握(MicrosoftVisual

)的使用,之所以把掌握这一开发工具放在第一位,是因为在后面的学习过程

中,需要使用进行不断地编程实践,而只有通过实践,才能最终掌握.NET技术。

第二步是掌握一种.NET语言。由于.NET支持多种语言,所以读者可以根据自己的喜好

选择一门计算机语言,但请注意以下选择语言的标准:

(1)必须是全面向对象的语言,只有面向对象的语言才能充分发挥.NET的威力;

(2)拥有较多的开发者和技术资源,这样您就可以很容易地找到志同道合的人共同学

习。

微软官方提供的语言有以下几种:ManagedC++,C#,,J#。

其中ManagedC++是对标准C++的一种扩充,用的人很少(目前ManagedC++将演变为CLI,

但其前景仍不十分明朗);J#则是微软为吸引Java程序员转到.NET平台而采取的一种策略。

如果读者不属于原来使用C++和Java进行开发,并希望能继续使用原有的语言写.NET程序这

种情况,不要学习ManagedC++和J#。

C#和是目前.NET下开发的主流语言,其中,C#是全新设计的一种语

言,其语法与C++和Java都非常类似,保留了原来VisualBasic的大部分

语法特征和简洁方便的特性,同时加上了对面向对象特性的全面支持。两者几乎是一样强大

的,初学者选任何一种都是可以的。

目前支持.NET的语言已有几十种,而且还在不断地增加中。

本书选用的编程语言是。之所以选用,一个原因

是因为本书作者从VisualBasic3.0开始就使用VisualBasic来编程了,有丰富的Visual

Basic开发经验,另一个原因是.NET支持混合语言开发,开发出来的组件,

可以方便地组合到C#程序中,反之亦然。也是一种面向对象的语言,两者

功能几乎一样强大,而且与C#都使用同一个类库——.NETFramework,把

的程序代码转成C#代码也并不困难。在.NET下,语言已不再重要了。.NET

的跨语言特性,使我们可以用设计一个类,继承用C#或C++写的一个类,

反之也行。在第12章中就以和C#为例,介绍了.NET下的混合语言开发技术。

本书的实例以语言开发,但并不要求读者以前学过VisualBasic,

当然,您要是使用过以前版本的VisualBasic

(如VisualBasic6)开发过程序,那么,使

用会感到比较亲切的。网上

有许多人对VisualBasic有成见,要学.NET编

程,许多初学者一起跟风去学C#,其实Visual

Basic是一种优秀的计算机编程语言,尤其是最

新的,更是较以前的Visual

Basic空前地强大与灵活。笔者使用过许多其它

的语言如C++、Pascal、C#、Java开发过程序,

但VisualBasic许多独特的优点所带来的高的开发效率仍是让我喜爱。在此,我只想说一句:

关于语言优劣的讨论意义并不大,网上许多人的所谓高论,其实都是“盲人摸象”罢了,初

学者不要被这些言论误导。对于一种语言,在你没有使用它写过一定量的程序时,不要对这

门语言发表什么评论,就算发表评论,也要说明这是个人观点,这是一名软件工程师对技术

应采取的态度。

所以,学习本书读者一定要记住,您是在学习.NET编程技术,在学习如何开发一个软

件,不是在学习一门语言,您需要重点把握代码背后的计算机基础理论知识,所蕴含的软件

开发思维方法,以及学会使用.NETFramework本身,掌握语言不是重点,语言只不过是一个

工具罢了。重要的是不是您掌握了什么工具,而是您用这个工具做出了什么!

掌握了开发工具和编程语言之后,读者已经可以自己动手编一些小程序了。接下来的

任务是学习具体的编程技术。

据说.NET上运行的大部分程序是基于网络的(比如用开发的网站),但对于初

学者而言,不适合一下子就投入到网络程序的开发中。而应从易到难,先把基础打好。

因此,在第三步中学习WindowsForm是个好选择。所谓WindowsForm程序,就是传统

的运行于个人电脑上的单机应用程序,象大家常用的金山词霸。通过WindowsForm技术的学

习,读者可以掌握最重要最基础的windows软件开发技术,并对面向对象理论会有深入的体

会,有了这些基础,深入学习网络编程就是水到渠成的一件事。本书的主要内容就是向读者

介绍WindowsForm技术。

第四步则是学习.NET网络技术,具体而言,又可以按照以下顺序进行学习:

(1):主要掌握如何设计网页,搭建一个运行于.NETFramework之上

的Web网站;

(2)WebService:学习如何把网站的各种功能以WebService的形式提供给外界,或

者集成外部的WebService实现功能强大的信息系统。WebService是一个潜力无穷的新技术,

将对下一代的互联网产生深远的影响。

(3).NETReomting及相关技术:不像和WebService主要用于互联网,.NET

Remoting及相关的技术主要用于开发基于局域网的应用程序,目前大部分公司和企业都建有

自己的局域网,开发基于局域网的信息系统具有很大的需求。

当完成了以上四步的学习之后,您就基本上了解了.NET中最重要的技术,下一步有两

个选择:

(1)学习移动设备开发技术,比如为手机、SmartPhone等智能移动设备开发程序,设

计嵌入式系统等,.NETCompactFramework就是专为移动设备应用程序开发而准备的,使

用.NETCompactFramework开发移动设备程序与使用.NETFramework开发普通程序是类似

的,已有的.NETFramework开发经验仍然适用;

(2)另一个方向是进一步深入地学习企业级项目开发技术,成为一名系统架构设计师,

这需要更进一步地学习相关理论和技术,比如设计模式、软件工程等,还有J2EE等.NET竞争

对手的技术。

如果读者能沿着我的路线图走到这里,那

就恭喜您,您已成为了一名.NET技术专家,更

宽广的道路将展现在您的面前。

本书写作的主要目的之一是帮助想学

习.NET技术的读者顺利地走完前三步。

四、本书章节安排

本书主要介绍了开发一个功能完备

的.NETWindowsForm应用程序所需要掌握的全

部技术基础。适合于没有.NET开发经验的人通过此书迈入.NET软件开发的大门。

全书分为四大部分:

第一篇初识

l第一章初识.NET

在这一章中,将介绍到底什么是.NET,.NET与Windows有何关系,如何搭建.NET运行平

台,并编写第一个.NET程序。接着介绍.NET体系结构和.NET程序运行原理,最后介绍如何发

布.NET程序。

当学完这一章时,读者就会对.NET有了一个全局性的认识,可以对别人说:哦,我现在

明白.NET是怎么回事了……。

l第二章.NET程序设计基础

在这一章中,将介绍集成开发环境的使用技巧,并使用它来创建用户界面。接

着将介绍的基本语法,使读者能学会使用书写程序。

在本章的最后,则是一个实例代码分析,介绍如何用学会的语言为本

书示例程序“MyEditor编辑器”编写功能代码。

读者学完这一章,就可以使用开发出简单的应用程序,在这一章中学到的知识

与技能,将在后面的章节中反复使用,是最重要的基础知识与技能。

第二编入门

l第三章面向对象的程序设计语言

在这章中,将介绍的面向对象特性,其基本目的是向读者介绍使用

开发所必须知道的语法知识,由多个实用的小例子组成。如果您已掌握一

种面向对象开发语言(如Java、C++、ObjectPascal),则此章可以让您快速地了解Visual

语法,并马上可以用来开发程序;如果您以前还没有学过一种

面向对象的语言,请务必仔细地阅读本章,并在中把书中所有的例子全部运行一次。

强调:虽然配套光盘中有本章全部示例源代码,但我强烈要求以前没有学过面向对象

编程语言的读者手动一行行地敲入代码。

本章介绍了的以下面向对象特性:类、封装、继承、多态、委托,

但并不以语法为重点,而重点地介绍这些特性是如何用在程序代码中的。

在本章的最后,将介绍面向对象特性应用的一个实例,独立开发一个应用程序向导框

架,初识面向对象编程的威力。

学完这章,读者应该可以使用开发复杂一些的程序了。

l第四章WindowsForm程序设计原理和技巧

有了前三章的基础,读者可以开发一些简单的程序,但要想开发出真正专业的程序,还

需要学习更多的东西。

在本章中将介绍传统的运行于单机上的WindowsForm应用程序开发技术。包括:使用文

件,灵活使用控件,数据验证,键盘与鼠标操作。内容非常丰富,也全部都是开发一个真正

的功能完备的应用程序所必须掌握的技术。

在本章中,我们将完成一个文件管理应用

程序的开发,原来开发一个资源管理器一点也

不难!

一旦读者能掌握这些技术,您就基本上具

备了开发WindowsForm应用程序的能力,就可

以投入到无限精彩的软件开发世界中去

了……。

第三篇深入

l第五章.NET数据库编程概览

数据库无疑在当前的信息系统中具有中心的地位,本章通过一个典型的实例,介绍如何

通过.NET的对象模型访问数据库,让读者快速地了解使用.NET开发数据库应用程序

的概貌,避免在今后的学习过程中出现“盲人摸象”的情况。

l第六章SQL语言入门

SQL语言是专用于操作关系数据库中数据的计算机语言,语法简洁而功能强大,在现在

的软件系统中应用极为广泛,一条精心设计的SQL命令,往往可以代替几十行的或C#

代码!本章将从实用的角度出发,让读者学会使用SQL命令操作数据。

l第七章编程访问数据库

.NET是通过一个新的数据库存取引擎来访问数据库的,有一个庞大而

复杂的体系结构,在本章中我将帮助读者理出一条清晰的脉络,以数据为中心,分为以下几

个部分介绍编程技术:连接数据库,向数据库发送SQL命令,获取数据,显示数据,

编辑数据,保存数据,查找与过滤数据,统计和分析。

心中有这个脉络,学习起来就不会盲然,再开发数据库程序就会胸有成竹了。

l第八章数据库编程技巧与实例分析

有了前面介绍的知识,就可以开发出实际可用的数据库应用程序了。

在这章中我把数据库应用程序中最常用和最实用的功能封装成了一个功能强大,使用

方便的数据库存取组件——OLEDBAccessObj,这个组件将构成我们后面许多程序的基础,而

在本章中,你将一层层的揭开OLEDBAccessObj的面纱,一睹其庐山真面目。

第二个大的数据库应用实例是使用开发一个客户信息管理系统。通过对这个系

统开发全过程的详细介绍,读者可以初步学会如何开发一个功能完整的软件系统,理解模块

化、迭代开发的思想,并培养出良好的编程风格。

l第九章使用XML处理数据

XML将是下一代互联网技术的基石。而.NET从一诞生开始,就具备了强大的XML支持能

力。第七章介绍的功能如此强大灵活,其内部就是采用XML来表达数据的。

在本章中,先介绍XML的基础知识,接着介绍.NETFramework中用于处理XML数据的两

种主要方式:DOM和流机制,

本章实例包括可以直观查看XML文档DOM结构的DOM阅读器,以流方式在XML文件中查找

数据的自定义类:XMLReaderObj,并介绍了一个实用“公文包”小程序:这是一个可以脱机

使用数据库的小程序,从中展示了开发移动办公的软件基本技术。

l第十章计算机绘图原理与GDI+

这是内容异常丰富的一章,也是很有趣的一章。

本章分为三个部分:

1.计算机绘图原理:这部分首先介绍了使用GDI+在处理图形方面的基础知识与编程技

巧,其中涉及到了坐标变换、绘制数学函数图形、分形递归等数学知识,并介绍了如何处理

图像的方法与原理,掌握了这些基本的知识与

技能,读者一是可以开发出自己的矢量绘图软

件,二是可以更进一步地去学习《计算机图形

学》等专著。在这部分中,读者还可以直观地

看到数学知识与计算机图形技术是如何结合在

一起的,从而初步解决“从小学开始学数学,

却没看到它有什么用”这个困惑。

ck程序是微软公司在Visual

-to范例库中提供的,其开发者

是KenGetz。程序使用GDI+绘制时钟,并在编程中应用了许多技巧,是一个非常好的学习范

例。通过剖析这一优秀程序实例,读者不仅可以学到许多编程技巧,对好的程序有个直观的

认识,并且可以了解如何培养阅读别人写的代码的这一软件工程师基本技能的方法。

3.打印是应用程序中非常重要的功能,在这一小节中,首先介绍打印的基本原理,接着

用循序渐进的几个小实例全面介绍.NETFramework下开发打印程序的基本技巧,帮助读者理

出一条清晰的脉络。最后,剖析一个功能完备的邮签打印程序的开发过程,让读者体会如何

将学到的知识应用于实践,将一个个独立的功能代码组合为一个真实的程序。

第四编精通

l第十一章学会开发面向对象软件

面向对象软件开发技术已成为了软件开发的主流,.NET就是面向对象技术应用的一个典

范。那么,为什么面向对象技术有如此的“魔力”?它到底有哪些“法宝”?在本章中首先将

介绍面向对象编程的基本思路,并以一个简单的实例来说明这一思路。接着,介绍软件的动

态链接技术,这是构造.NET强大组件技术框架的基石。在最后,介绍以图形化来描述面向对

象软件系统的统一建模语言(UML),UML已成为国际标准,是当今一个软件工程师所必须掌

握的基本知识。流件DI+!

av

l第十二章基于组件的软件开发

本章是您迈入职业程序员的必经之路!

首先,介绍什么是软件组件,如何把组件装配成一个完整的软件系统,这种开发方式为

何被称为是软件开发方法的一场变革?

接着介绍如何在.NET中开发可以复用的软件组件,以一个支持自动匹配的文本框开发的

全过程介绍.NET自定义控件的开发技术。

紧后引入了.NET混合语言开发、组件动态插拔等用于团队开发的技术,学会了这些技术,

您就可以与其他人合作,开发出结构复杂、功能强大的软件系统,并初步了解CBD、设计模

式等面向对象理论。

如果读者能掌握这些技术,那么可以理直气壮的说,您已经知道面向对象是怎么回事了!

l第十三章面向对象软件开发实战——PersonalInfo

PersonalInfo是一个功能强大而实用的工具软件,我写作这本书时,写作所需的大部分

资料,以及安排写作计划等工作都是由它来管理的。

PersonalInfo这个程序用到了本书介绍的几乎全部技术,源代码总数超过7000行!

本章从系统分析阶段开始,接着介绍单个组件的开发,然后是如何装配组件,最后还介

绍了真实的测试与BUG排除过程。

读者如果能仔细阅读源代码并体会这一实例的开发过程,将会提升您的软件开发能力,

最终成为一名优秀的软件工程师!

五、本书学习指南

1本书的可能用途

本书力图为读者勾划出一个实用的软件

开发学习全景,读者不仅可以学会许多编程技

巧,并且会了解许多计算机专业课的理论是如

何用应用在软件开发中的,比如《数据库原理》,

《数据结构》,《操作系统》等,从而为读者自

学相关的课程打下良好的实践基础,建筑在实

践基础上的学习才能有的放矢,不会成为“空

对空”导弹。

另外,本书对于许多在校的计算机专业的学生而言也是很有用的,根据笔者从教若干

年的经验,计算机专业的学生普遍地不了解所学的许多抽象而复杂的理论如何应用在实践

中,因此,他们可以在本书中亲眼看到理论是如何指导实践的,从而帮助他们更有目的和有

效地学习计算机专业理论课。

本书虽然主要针对广大的自学者而写作,但在普通高校及相关IT培训机构中如果开

设.NET软件开发系列课程来说也是有用的,本书提供了足够丰富的教学资源足够一学期的

60~70学时的教学使用,本书出版之间,主要内容作为讲义在北京理工大学已讲授过两年之

久,配套光盘中附上了学习过这门课的学生的一些典型的作业,还包括一些对.NET技术感兴

趣学生写的其他一些程序,笔者为其加上了简短的评语。

如果有教师愿意选中本书作为教材使用,可以与出版社或本人联系免费索取电子教案。

2怎样才能从本书中得到最大的收益

每个人都有自己的读书方法,但以我的观点来说,读者在阅读这本书时,建议把电脑

打开,跟着书同步查看示例源码。

本书提供了大量的可以运行的范例,由于编幅所限,在书中只能列出一部分代码,在

配套光盘提供的示例源码中可以看到完整的代码全貌,务必要保证你明白每一条语句的含

义,如果不明了某句的含义,请查阅随机文档MSDN,尝试自己去弄明白,实在弄不明白,记

下来,继续学习,或者上网问问高手,当然,也可以给作者我发邮件,但我可不保证一定回

信哟!J

强调:一定要上机实践。书的正文中有许多标有“试一试”的内容,就是希望读者能

亲手做一做,先思索一下为什么程序运行会出现这种情况,然后再阅读书中的解释。

虽然本书配套光盘提供了所有例子的源代码,但请自己动手一行一行地敲入(尤其是本

书第一和第二篇的前四章中的示例代码),这是很重要的,千万不要图简便,直接打开示例

工程运行看看结果就算了。只运行例子和手动敲入例子,学习的效果绝对是不一样的!特别

如果您以前没编过程序,想通过这本书来学会如何编程,请务必手动敲入每行代码!

“实践与探索”部分提供了非常有价值的扩充阅读资料,并提供了大量有意义的编程

场景,包括程序开发实践与代码阅读练习,推荐你上互联网上获取对应主题更丰富的信息与

资料。

当读者学会编写一些短的代码完成一些小功能之后,请试着把这些小的代码段连在一

起,构成一个相对复杂一些,功能更多一些的程序,由此不断地“滚雪球”,让程序功能越

来越强大。当这个雪球滚到一定的程度,您一定会产生新的想法,会发现我这本书中所介绍

的内容不够用了,自会去找其他的一些书籍学习。如果这种情况真的发生了,那么恭喜您已

经到了可以自己探索学习的水平,我所提供的拐杖可以丢开了,您己经正式地迈入了软件开

发的大门。

“师傅领进门,修行靠个人”,读者最终

达到什么样的水平,就看您自己的实践了!

在此,我祝愿您一路走好!

学习.NET的痛苦

最近我一直在学习.NET.对于这一门

高级语言,我真的没有什么兴趣,也找不到什

么好的办法去学好这门语言。(*^__^*)嘻嘻……还是对java比较感兴趣。

.NET让我最头疼的就是控件问题了,微软为.NET的许多控件都写好了代码,我们只要直

接去拉出来使用就行了。可是,有很多的控件总有许多属性。看得我的头都晕了。也许是因

为我的.NET学的很糟吧。我总是在做题总找不到思路和做题的灵感,那时一件多么痛苦的事

呀。还是学Java好,一个程序出来,我还可以知道从什么地方入手。.NET好像是一门不需要

什么逻辑的语言,或是我刚接触它,不了解它的深度,总之,我对.NET没什么好感。从学.NET。

我的日子过得浑浑噩噩的。即使我想征服这门语言,可总是提不起激情来学习它,这对一个

编程学习者来说,是学一门语言最致命的。

谁来教教我,我到底该怎么掌握这一门高级语言呢?我想过去了解它的控件,可是那些

控件实在是太多了,所以我只好慢慢看一本.NET的书,学习它的思想。因为我不想只学JAVA,

因为.NET在微软强大的支撑下,发展地越来越好。我不要求学得很好,但我希望我能把最基

本的学好,这样也方便我以后找工作。

.net的学习路线

入门篇

1.学习面向对象(OOP)的编程思想

许多高级语言都是面向对象的编程,.NET也不例外。如果您第一次接触面向对象的编程,

就必须理解类、对象、字段、属性、方法和事件、封装、继承和多态性、重载、重写等概念。

需要说明的是,微软的产品帮助文档做得非常完善,而且查询相当方便,入门者不得不看。

安装完2003(或者2002)后,在“程序”组里有一个

VisualStudio组合帮助集合。初学者从帮助文档就会获得许多知识。

2.选择一门语言,学习语法及相关基础知识

选择语言的标准:根据你自己的需求和个人的技术背景。在.NET平台下,C#、

都是调用Framework的类库,效率基本一样,C#的语法严谨,适合以前C++、VC的程序员。

不区分大小写,写法随意一些.,自动缩进,适合以前VB的程序员,微软也一再提倡用

进行快速开发。VC++.NET更接近底层,可以用**和非**两种方式进行编程。

选择了需要使用的语言后,我们需要了解语言的语法规则,包括语句、类型、表达式、

运算符、函数等等,我建议一开始写程序就要养成良好的编程风格,规范地进行变量的命名,

在代码中写好注释。这对以后的软件开发生涯都是很有意义的。

3.理解.NET思想并熟悉框架类库(FrameworkClassLibrary)

我们借用一幅图来说明一下公共语言运行

库(CLR)、框架类库(FCL)与应用程序之间以

及与整个系统之间的关系。

首先,我们要了解公共语言运行库、程序

集、通用类型系统的概念。在此基础上,学

习.NET框架类库。.NET框架类库是一个与公共

语言运行库紧密集成的可重用的类型集

合。.NET框架类库封装了大部分Win32API,

许多以前需要调用API才能实现的功能,在.NET

下非常容易就实现,许多情况下只需要一句话就足够了。所以,我们在程序设计的时候要尽

量避免调用Win32API。学习.NET框架类库的捷径:掌握常用的类库,其它不常用的类库只

需要了解,用到的时候查阅即可。

4.利用写程序

在.NET平台下写程序我们一般用微软的开发工具,因为一个好的

IDE,能极大地提高开发效率。我建议初学者从WindowsForms或者是WebForm开始,等有一

定的基础之后,再转向写类库或是控件、组件方面的东西。微软的帮助文档里自带许多示例,

我们可以一边看帮助,一边进行演练。在学习其中的代码的同时,一定要理解和思考。多写

代码、从项目中锻炼是编程高手的成长之路。记住:一定要多看多写源代码;多上论坛(如

CSDN和Dev-club)和微软的新闻组讨论技术问题。

我们一定要用好这个集成开发环境,除了编写代码外,我们还要了

解.NET的部署原理,学习打包、部署及管理应用程序。多人开发的项目可以考虑用Visual

SourceSafe进行源代码管理,这一系列开发工具的使用都要有大量的实践。

推荐书籍:

《C#高级编程》(第二版)(清华大学出版社)

《程序设计技术内幕》(清华大学出版社)

《技术内幕》(清华大学出版社)

《VisualC#.NET技术内幕》(清华大学出版社)

.NET入门教程(包括WindowsForm和WebForm):

5.最好掌握大型数据库编程

一般来讲,大多数软件开发都涉及到数据库。大部分软件的后台数据库都使用如Access、

SQLSERVER、Oracle等。提供了对关系数据、XML和应用程序数据的访问。我们必

须掌握Connection、Command、DataReader和DataAdapter对象的使用,正确运用DataSet

数据集和DataView进行数据操作。当然,要有一定的数据库基础,包括表、视图、存储过程

等的使用。必须把后台数据库和前台的都掌握好,才能真正精通数据库编程。

在项目的开发中,建议使用数据访问应用程序块(DataAccessApplicationBlock)

来简化SQL查询。微软msdn网站有下载,我们可以利用SqlHelper类进行的数据访问,使用起

来非常简单,很容易地构建我们的数据访问层。参考微软MSDN文档:

推荐书籍:

《技术内幕》(清华大学出版社)

《高级编程》(中国电力出版社)

《和SQLServer2000高级编程—创建高效数据层》(清华大学出版社)

6.学习XMLWEBService

XMLWebservices正在开创一个分布式应用程序开发的新时代。XMLWebServices是

把软件当成服务的一种体现,通过使用XML消息处理启用数据交换和应用程序逻辑远程调

用。XML使数据能够通过防火墙,实现异类系统

之间移动数据。虽然公共的WebServices还不

是很普及,但是在一些企业中,已经涉及到了

WebServices的开发。用很

容易创建Web服务,调用Web服务也相当简单,

只需要添加一个Web引用,然后调用即可。进行

这方面的学习,需要了解Web服务描述语言

(WSDL)、SOAP协议等。

推荐书籍:

《构建XMLWEB服务:基于平台》(清华大学出版社)

《tform》(影印版)

.NET技术网上资源:

中国软件网(中国最大的技术社区)

计算机世界开发者俱乐部

中国DotNet俱乐部

微软官方MSDN权威站点:

微软官方站点:

微软官方WindowsForm站点:

微软官方DotNET站点:

英文站点Codeproject:

************************************************************************

提升篇

1.学习.NET框架开发平台底层原理和体系结构

.NET框架的核心是公共语言运行时(CommonLanguageRuntime,CLR)。通常情况下,

我们使用一种高级语言(如C#或者)编写程序,这些高级语言的编译器产生的是一个**

模块(即中间语言IL代码)。**模块是一个需要CLR才能执行的标准WindowsPE文件。执行中

间语言代码的时候,CLR中的即时编译器(Just-in-time,简称JIT)把其转换成CPU指令。这

中间有许多细节,包括怎么初始化CLR,微软组件运行时执行引擎(Microsoft

ComponentObjectRuntimeExecutionEngine,在system32目录下)怎么工作等等。如果你

想精通.NET技术,就必须对.NET框架原理、程序集、元数据、值类型/引用类型、类型设计、

异常处理、自动**回收等核心技术有一个清楚的认识。

推荐书籍:

《.NET框架程序设计》(修订版)(清华大学出版社)

《meworkProgramming》(影印版)JeffreyRichter著

《.汇编语言程序设计》

《.NET本质论》(中国电力出版社)

2.熟练运行底层工具进行调试和解决各种问题

了解.NET平台的底层原理,我们需要学会一些工具和CLR调试器()的使用。

C#命令行编译器()和编译器()的重要性就不用再多说。

.NET框架SDK提供的几个比较重要的工具是:MSIL汇编程序()、MSIL反汇

编程序()、程序集链接器()。强烈建议大家在开发中多使用MSIL反汇

编程序(),以加强对CLR和底层的了解。MSIL汇编程序()从MSIL汇

编语言生成可移植可执行的PE文件。反汇编程序()可对任意.NET框架.exe

或.dll程序集进行分析,并以可读的格式显示信息。程序集链接器()从一个或多

个文件生成一个带有程序集清单的文件。.NET

框架SDK还提供许多其它的工具,如:PEVerify

工具()、强名称工具()

等,我们力求能用命令行的方式使用他们。

需要指出的是:不是能

完成所有命令行能做的工作,一些任务必须由

命令行来完成。如:创建多文件程序集,必须

求助于的addmodule选项。只有在

对.NET框架有很深理解的基础上,才会灵活运

用这些工具。

3.进行大型软件系统架构设计

进行软件系统的架构设计,需要积累相当丰富的经验,要求我们从全局的概念上把握软

件的总体结构。首先的一点是,我们必须参照软件需求说明书。需求说明书是用户和开发双

方对所开发软件的功能、性能、用户界面及运行环境等做出详细的说明,所以我们设计软件

必须以此为依据。接下来,我们要做软件的总体设计,即概要设计。一般需要根据软件的业

务需求和业务流程进行模块划分,规划程序的总体结构、输入输出以及接口设计、运行设计、

数据结构设计和出错处理设计等,为详细设计奠定基础。在详细设计中需要指出每一模块是

怎样实现的,包括实现算法、逻辑流程、数据流程图等。以后的工作,就是程序的实现。测

试是和编码同步进行的,必须严格把好质量关。

在用.NET开发大型系统的时候,一般都是做成三层(或是N层)结构的形式。即将应用

程序逻辑地分为3个基本层:数据访问和存储、业务逻辑层、表示层。三层结构的优点主要

是:可扩展性、可伸缩性和灵活性。在做Web应用的时候,可以考虑采用MVC(模型-视图-

控制器Model-View-Controller)模式让Web应用程序的用户界面功能实现模块化。

顺便要说的是,大型软件有时需要整合多种产品,来满足企业级的应用需求。微软提供

了许多Server产品,如SQLServer、ExchangeServer、SharePointServer、BizTalkServer

等。记住:大家一定要多了解微软的产品线,微软很多技术都是相符相承的,结合起来才能

发挥作用!我们可以微软的Server级产品的基础上整合软件系统、实现数据共享访问、终端

设备上的电子邮件、消息协作。总之,通过互联网,让所有人一起协同工作,是未来软件的

发展趋势。我们把握好这些方向,就等于驾驭未来。

推荐书籍:

《使用的企业解决方案模式》微软出版社

《》MSPress

网上资源:

软件工程专家网

UML软件工程组织

4.带领团队进行软件开发

一个好的团队,才能开发一个成功的产品。软件开发主要由项目管理团队、软件开发团

队、软件测试团队组成。项目管理人员主要对项目进行控制,协调开发人员、测试人员的工

作。开发人员的工作主要是负责软件的实现。测试人员是软件产品的质量保障。其它人员,

如产品规划方面、软件技术支持和文档、后勤都是不可缺少的。

大型软件是许多人集体智慧的结晶,要求ProjectLeader有较强的管理能力和技术背

景,以及良好的沟通能力。如果你作技术的时间很长,积累了丰富的经验,做过项目组长等

管理工作,通过不断的学习和提升,极有可能成长为ProjectLeader。如果你已是Project

Leader,就到对软件的成败负责,你可以根据现有资源决定开发中任务分配,合理用人,决

定功能模块是否值得开发,项目进度控制等许

多问题。总之,带领团队的人必须有远见卓识,

采取正确方法引领团队取得成功。

推荐书籍:

《人月神话》清华大学出版社

《人件》清华大学出版社

资深专家给.NET初学者的学习建议

从1.0开始,.NET这几年发展的速度异常惊人,全新平台的.NET1.0、改良的.NET1.1,迈

向成熟的.NET2.0,大跃进的.NET3.0,2008年将正式站上舞台的.NET3.5,每一次的改版,

都带来了不同程度的惊喜。然而,更好的功能,更具生产力的工具,一切的一切,带给开发

人员的不是喜悦,而是追赶新技术的疲累与茫然,今天当红的技术,转眼成为明日的黄花,

不如归去,或许已经成为开发人员的共同心情写照。

如果你有这样的无奈,这篇文章,或许可以给你不同的想法,即便无法让你在一波波技

术浪潮的冲击下,重拾对技术的热情,至少也能让你未来的.NET学习之路,走得比较顺遂。

.NET从1.0发表之后,它的框架便已固定,与微软之前的技术最大的不同点,在于它的

发展以渐进式的演化取代了破坏性的革命,仔细检视.NET的架构,你会发现每一次的改版都

只是在旧的框架上,堆叠新的软体元件,而非如.NET1.0创造一个全新的技术平台,这样的

好处在于,开发人员既使面对新版本,使用的依然是熟悉的技术,想要新的功能,只要针对

新版释出的部份,进一步作学习即可。

.NET1.X跳到.NET2.0的时候,BCL新增了一些类别,语言本身作了一些改良,

则嵌入了一些新的机制,除此之外,所有的东西都是旧的,观念亦没有改变,.NET3.0则单

纯的加入了四个新的软体框架,.NET3.5则比较复杂,但是基本上,还是在.NET2.0与.NET3.0

上面,堆了一些新的功能上去。

是的,你在.NET1.0开始所作的投资,不会被浪费掉,几乎所有的东西都能够延用,某

些功能,新版本或许有更好的作法,但是并不代表你就必须丢掉旧版本,相反的,在原来的

基础上,你可以更快速的学好新的东西。

有了概念,我们现在知道改版不是件坏事,但这是一回事,.NET究终是只技术巨兽,如

何驯服它,又是另外一回事,如何找到正确的学习方向,将是你的.NET之路是否能够顺利的

关键。

学习.NET没有密诀,务实、不求速成是重点,.NET的开发工具,包装了很多好用的东西,

导致开发人员(尤其是入门的程式员)天真的以为,开发.NET应用程式,无论WinForm或是

WebForm,都可以轻易的用工具搞定,忽略了语言与API才是关键,导致.NET的学习之路愈走

愈窄,本来可以愉快的学习经验,最后成为可怕的恶梦。

无论是初学者或是已经有一般基础的程式员,接下来我们列举一连串的步骤,作为你学

习.NET的参考。

1.了解.NET语言:在你开始学习.NET之前,选择一个语言,C#或是,学习相关

语法,例如迴圈,宣告等等,了解类别设计,OOP的基础概念,在你熟悉这些东西之前,不

要去碰所谓的WinForm或是,当然,这是建议,如果你不觉得这会模煳学习焦点,如

果你打算就语言本身下去学习,从Console模式作练习。

2.探索基础的.NETFramework类别库:了解何谓命名空间,类别如何被组织归纳,如何

引用现有的类别库实作所需的应用程式功能,

学习一些基础的核心类,例如Math、Exception

等等。

3.选择所使用的UI:传统的视窗应用程式

(WinForm),或是Web应用程式(WebForm),也

就是。

4.深入类别库:学习特定领域的技术,例

如资料库的,绘图技术的GDI+,网路与

串流技术,甚至大型应用程式的发展等等。

.NET程式设计师一旦过了初学的门槛,有一大部份的时间,都会在类别库的类别功能

上打转,无论你所开发的是的Web应用程式员,还是传统视窗应用程式,都脱离不了

类别库的应用,强化类别库的知识将是最主要的课题。

.NET的架构设计得非常出色,因此很容易学习,按步就班很快的就会成为一个堪用

的.NET应用程式开发人员,有了好的基础,无论是目前的.NET3.0,或是明年蓄势待发

的.NET3.5,对你都不再会是困扰,因为它们都只是堆叠了一些新的东西上去,只要在需要

的时候,针对这些新增功能继续下功夫即可,至于那些新功能,我们用一些简单的数学式来

说明。

.NET2.0=CLR+BCL+C#()+WinForm+WebForm

.NET3.0=.NET2.0+WCF+WPF+WF+WCS

.NET3.5=.NET3.0+X+Silverlight+LINQ

如何,是不是比较好受了,从这几条数学公式当中,我们得到了一个很重要的结论,如

果没有.NET2.0的基础,你是不可能学好所谓的.NET3.0,甚至迎接明年即将到来的.NET3.5,

也因此,除非你已经准备好了,否则学好你的.NET2.0逺比关注目前的新技术来得重要。

至于.NET1.0或是.NET1.1,试着摆脱它吧,.NET2.0相较于.NET1.X的改变尽管并非

革命性的,但是.NET2.0在某些方面的确作了一些变动,语言的功能亦作了不少的加强,编

辑器的档案架构同时也有一些不小的调整,跳到.NET2.0是比较合适的选择。

至于2008年中即将释出的VS2008,它同时允许开发人员选择所要开发的版本,你可以选

择.NET2.0、.NET3.0或正.NET3.5进行开发,就如同我们上面说明的,除非你要新的功能,

例如WPF,否则不用可虑新版本的问题。

对学.net方向的有什么好的规划吗?

一份.Net的学习规划2008-05-0201:32一、研究方向智能信息处理实验室.Net小组的主要

研究方向是“.Net平台下软件开发技术及相关应用”,其研究内容包括.Net框架、.Net语言、

面向对象的设计、软件工程学方法以及以上理论在实际中的应用。小组将以.Net为开发平

台,着眼于软件体系结构,特别是面向对象的软件设计方法,学习软件模块化、系统解耦合

和设计模式等相关的理论知识,并结合实验室“Web语义”、“工作流”等已有的课题点,

讨论以上技术在实际生产中的应用。在更高层次上,小组将系统的学习目前较为常见的软

件工程学方法,包括瀑布模式、螺旋模式和敏捷模式等。并在项目中尝试采用这些方法,分

析这些模式的特点和适用范围,使小组成员掌握基本的软件项目管理能力。二、研究阶段

对于.Net下软件的开发的研究分为以下四个阶段:第一阶段:.Net开发环境的掌握和相关

开发技术的学习。这一阶段主要是掌握一门.Net语言(推荐C#);掌握.Net开发的基本技能,

包括熟悉.Net框架中的核心类、用于数据访问

的和用于Web应用的等;掌握

Web开发的相关技术,包括数据库、HTML、

JavaScript、CSS和服务器的配置等;熟悉

、VisualSourceSafe等

开发工具。该阶段完成后小组成员将有能力阅

读.Net系统的代码,并在已有的基础上进行改

善的能力。第二阶段:掌握基本的面向对象设

计。在这一阶段,小组成将继续学习.Net框架

的相关知识,了解包括反射、XML、ORM和Ajax等较为深入的内容。同时,应该注重对相关原

理的理解,包括IL语言、运行时和Http协议等。在软件结构体系方面,小组成员开

始学习使用面向对象的方法进行思考,使用继承、引用和多态等面向对象的思路来描述系统

的设计,掌握UML等系统设计工具。这一阶段将加大实践的比例,使小组通过开发实际项目,

掌握相关的技术和面向对象设计能力。在这一阶段,随着项目实践的展开,小组成员开始接

触软件工程学方法,了解不同的开发模式,掌握团队协作能力和相关协作工具的使用。第

三个阶段:掌握初步系统架构设计。在这一阶段,系统地实现已经不是重点,而该是如何设

计出一个良好的系统结构。这要求深入的理解面向对象的思想,并且具有一定的开发经验。

在这一阶段,小组将学习软件构架的相关知识,包括系统的模块化、模块间解耦合、面向对

象的设计原则、设计模式、测试和重构等,并且学习使用这些知识对不同的系统进行设计,

掌握各种模式的特点和使用范围,从而对于给定的系统要求能够设计出较为完善的架构。第

四阶段:掌握完善系统架构设计。这一阶段着眼于如何对系统的需求进行深入的理解,以及

此基础上,设计出完善的系统架构。完善的系统架构应该重视并准确的反映系统的业务逻辑,

并考虑需求变化的应对,兼顾系统的灵活性、健壮性、复杂度、开发效率和运行效率等诸多

方面。小组成员在这一阶段将学习大量现有的优秀系统设计,并结合实验室相关项目,充分

理解不同系统所应该采用的构架模式,并尽量能够拥有自己独到的设计见解和设计风格。

附:参考书目1,第一阶段:a)《C#高级编程》b)《高级编程》c)《HTML&XHTML

权威指南》d)《JavaScript权威指南》e)《数据系统概论》2,第二阶段:a)《.Net

Framework高级编程》b)《技术内幕》c)《C#XML高级编程》d)《JavaScript

高级编程》e)《Ajax基础教程》f)《代码大全2》g)《面向对象开发实践之路——C#

版》h)UML书籍一本3,第三阶段:a)《重构——改善既有代码的设计》b)《敏捷软

件开发——原则、模式及实践》c)《HeadFirstDesignPatterns》d)《设计模式——

可复用的面向对象设计》4,第四阶段:a)《企业应用构架模式》b)《测试驱动开发》

c)《程序员修炼之道》

我在学c#,求.NET相关技术的学习顺序?

关于初学技术的学习顺序问题前前后后有很多询问的学习顺序问题,在此

就向打算系统学习技术的初学者谈谈我的建议。如果你已经有较多的面向对象开发

经验,跳过以下这两步:第一步掌握一门.NET面向对象语言,C#或我强烈反对在

没系统学过一门面向对象(OO)语言的前提下去学。是一个全面向对象的技

术,不懂OO,那绝对学不下去!第二步对.NET

Framework类库有一定的了解可以通过开发

WindowsForm应用程序来学习.NETFramework。

是建构在.NETFramework之上的技术,

你对.NETFramework了解得越深,学习

就越快。举个例子:下面简单列出几个对掌握

非常重要的概念:对象的内存模型,

委托,事件,多线程,程序集和应用程序域,

安全模型.NETFramework当然还有许多其它的

东西,但不理解与把握清楚上述这些东西,是很难真正把握的。出于急迫的心情与

现实的考虑,不少人没有扎实的面向对象基础就想直接学习,其结果只能是欲速则

不达。在具备了OO基础之后,以下是具体的学习技术步骤。第一步:学习HTML与

CSS这并不需要去学一大堆的诸如Dreamweaver,Firework之类的各种网页设计工具,关键

是理解HTML网页嵌套的block结构与CSS的box模型。许多控件最后都必须转化为

HTML。而且,div+CSS是当前主流的网页布局模型。学习这部分时,关键在于理解概念,而

不需要将精力花在美化页面的许多技巧上,那是网站美工的工作,不是程序员的工作。第

二步:学习JavaScriptJavaScript不是Java,它主要运行于浏览器端。可以完成许多工作,

功能也很强大:比如它将客户端网页中的HTML元素看成一棵树,可以编写代码访问并修改树

节点,动态生成新的HTML代码,从而达到动态修改网页显示特性的目的。JavaScript在目

前的网站开发中用得很多,非常重要。另外,它也是目前非常流行的AJAX技术的基础。第

三步:学习计算机网络原理找一本大学<计算机网络>教材,重点看看它的有关互联网的部

分,了解一些域名解析和HTTP协议等知识。这是进行互联网开发的理论基础。第四步:学

习表示层技术,会设计Web页面需要结合先前打好的面向对象技术的基础,至少掌

握以下内容:(1)各种Web控件的使用方法,(2)理解信息在网页中的传送方式,比如

Cookie,ViewState,Session等的使用。(3)应用程序与网页的生命周期,以及相

关对象(比如httpcontext,response,request)的用途。(4)实现事件驱动的内幕

(5)自定义用户控件再次强调一下,没有OO基础,很难掌握上述技术,就只能被这些东东

牵着鼻子走了,会很被动。第五步掌握数据库技术具体地说,要学习以下内容:(1)学

会使用SQLServer2005:不要求精通它的各种工具与管理配置技术,但至少知道如何连接,

如何建表,如何创建存储过程(2)学习,掌握使用代码人工访问数据库(别用VS2005

的向导)的方法(3)学习数据绑定控件的使用第六步理解多层架构这时,先前在OO学习

阶段涉及到的程序集与应用程序域等就派上用场了,现在,网站架构大多采用多层架构:表

示层、业务逻辑层、数据存取层以及数据库本身。可以先上网找一此多层架构的资料看,

再找一个现成的比较复杂的开源项目分析一下其架构就差不多了。基本上都是一个

套路,到处应用。

1.要先学习C#,掌握基本的语法结构2.学习数据库,各种编程语言都是为了操作数据库,所

以,数据库一定要学的很精,这样以后学习其他语言的时候就简单了3.学习html语言,C#

最强的就是Web程序的开发,所以网页相关的东西是一定要学习的4.要学习JavaScript,可

以提高你制作网页的水平,可以制作动态网页5.要学习jsp和ajax进一步提高的你网页水平

如何学习.NET

一、观点

.net的基础是什么?也就是说,刚起步怎么开

始入门。

1、先了解CLR,就是.net的编译原理,对.Net的

内部有点认识。

2、学习C#语言的基本语法(如果你想从事

,学方面的)

3、然后重点学习其中的字符串使用,数据库

使用,这是在开发中使用很多的。

4、最后你若有时间学些.Net的反射机制,元数据的使用。那是.Net中的核心,也是最难弄

明白的。

二、建议

不要以为.net就需要把代码全部写到.cs页面,不屑于使用vs提供的方便的控件操作.

.不要以为.net就是把各种控件往页面上一拖,然后通过vs方便的设置一下就ok.

.不要以为.net就需要在一开始从编译原理到web服务各种各样的书都看上一遍

.不要以为.net就是直接打开vs建立页面然后闷头写代码就ok

.不要以为.net现在版本是2.0就不屑于看1.1的资料

.不要以为.net从1.1到2.0没有什么变化

.不要以为.net可以在一开始的时候把代码都写在一个页面而不是分开数据访问层和页面展

示层

.不要以为.net就是需要分很多没什么用的层把一个简单的事情搞的半年都写不完

实际上,.net是相当有技术含量的.实际上,.net没有你想的那么难,但也绝对不简单.

下面是我当年学习.net的过程,和大家分享一下.

1.决定使用C#进行.net的开发.

2.费劲千辛万苦,终于安装上了vs2003

3.照着图书馆借来的书,完成了第一个console程序helloworld

4.照着一本把当asp教的书,完成了一些简单的页面

5.照着一本介绍操作的书,把.net对数据的操作从头到尾玩了一遍

6.学会使用.netsdk文档

7.试验着写留言本

8.从图书馆借到了一本非常棒的中级.net书

9.照着那本书,开始练一些小东西(用户控件,form验证等)

10.试验着写了一个小论坛

11.慢慢认识了很多朋友,大家相互学习,共同进步

12.接触到了petshop3.0

13.深入学习了petshop3.0

14.开始学习自定义控件,在这期间加深了对.net内部知识的了解

15.接触了其他一些开源项目

16.体会到了一个开源项目对初学者的帮助之大,决定自己写一个开源项目,一则帮助其他的

朋友,二则自己也可以学习更多

froum的开发

18...........

总结一下,要点有三

1.勤奋动手写代码,写实例

2.努力接触基础知识,努力接触实际项目代码

3.朋友之间多多交流

学习.net应该知道什么

前些日子我发了一份面试题清单.有一些访客比较保守,觉得我是没事找事,

里面都是些很琐碎的问题。剩下的人则说“蛮不错的,我得去看一看其中的一些问题”我

更喜欢后者的回复,我觉得后者才是正确的态度。

当然我并不想把.NET软件开发概括为一些简单的小问题,我只是想让大家多思考。我相信一

个真正优秀的(及WinForm)开发人员应该不仅仅会拖放控件到设计器中,也应该掌

握更多的东西。一个优秀的赛车比赛选手很了解他自己的坐驾,他知道哪些可以做?哪些不

能做?

所以我准备了另外一份清单——一份扩展的清单,供你使用。这是我上个星期在从博伊西去

波特兰的路上写在一块板上的,并且我也考虑到了那些觉得我的清单过于琐碎的意见,试图

把这个清单按节管理。如果你从来没有深入,你肯定不会知道所有问题的答

案。如果你是一个独立顾问,你可能从来没有遇到过这些概念。但在我呆在科林斯的这4年

中,这些问题我都遇到过。因此,是否全面理解这些问题也许与你是不是一个优秀的开发者

没有关系,但在遇到问题时它的确可以帮你节省不少时间

任何一个使用.NET的人

1)描述线程与进程的区别?

线程(Thread)与进程(Process)二者都定义了某种边界,不同的是进程定义的是应用程序

与应用程序之间的边界,不同的进程之间不能共享代码和数据空间,而线程定义的是代码执

行堆栈和执行上下文的边界。一个进程可以包括若干个线程,同时创建多个线程来完成某项

任务,便是多线程。而同一进程中的不同线程共享代码和数据空间。用一个比喻来说,如果

一个家庭代表一个进程,在家庭内部,各个成员就是线程,家庭中的每个成员都有义务对家

庭的财富进行积累,同时也有权利对家庭财富进行消费,当面对一个任务的时候,家庭也可

以派出几个成员来协同完成,而家庭之外的人则没有办法直接消费不属于自己家庭的财产。

2)什么是Windows服务,它的生命周期与标准的EXE程序有什么不同

Windows服务是运行在windows后台指定用户下(默认System)的应用程序,它没有标准的UI

界面,想比标准的EXE程序,Windows服务是在服务开始的时候创建,而在服务结束的时候销

毁,而且可以设置服务是否与操作系统一起启动,一起关闭。它支持三种方式:1)自动方

式2)手动方式3)禁用。自动方式的时候,windows服务将在OS启动后自动启动运行,

而手动方式则必须手工启动服务,禁用的情况

下服务将不能被启动。另外标准的EXE默认使用

的当前登录的用户,而windows服务则默认使用

System用户,这在对系统资源访问的时候特别

需要注意。

3)Windows单个进程所能访问的最大内存量是

多少?它与系统的最大虚拟内存一样吗?这对

于系统设计有什么影响?

这个需要针对硬件平台,公式为单个进程能访

问的最大内存量=2的处理器位数次方/2,比如通常情况下,32位处理器下,单个进程所能访

问的最大内存量为:232/2=2G。单个进程能访问的最大内存量是最大虚拟内存的1/2,因

为要分配给操作系统一半虚拟内存。

4)什么是强类型,什么是弱类型?哪种更好些?为什么?

强类型是在编译的时候就确定类型的数据,在执行时类型不能更改,而弱类型在执行的时候

才会确定类型。没有好不好,二者各有好处,强类型安全,因为它事先已经确定好了,而且

效率高。一般用于编译型编程语言,如c++,java,c#,pascal等,弱类型相比而言不安全,在

运行的时候容易出现错误,但它灵活,多用于解释型编程语言,如javascript,vb等

5)PID是什么?在做系统的故障排除时如何使用它?

PID是进程编号,在系统发现故障的时候,可以根据它寻找故障所发生的具体进程,并且可

通过等ide将故障进程附加到进程中进行调试(debug)

6)单个TCP/IP端口上能够被多少个进程侦听?

可以为多个,多个为端口复用(多谢蛙蛙池塘的提醒)看下面代码

端口复用Socketsocket1=newSocket(etwork,

,);Socketsocket2=new

Socket(etwork,,);

(newIPEndPoint(("127.0.0.1"),8235));

(10);

ketOption(,ddress,

true);(newIPEndPoint(("127.0.0.1"),

8235));(10);();

7)什么是GAC?它解决了什么问题?

GloalAssemblyCache,全局应用程序集缓存。它解决了几个程序共享某一个程序集的问题。

不必再将那个被共享的程序集拷贝到应用程序目录了,其实这道理很简单,.net应用程序在

加载的时候,会首先查看全局应用程序集缓存,如果有就可以直接使用,没有再到应用程序

目录进行查找。

中级.NET开发人员

1)阐述面向接口、面向对象、面向方面编程的区别

面向接口更关注的是概念,它的原则是先定义好行为规范,再根据行为规范创建实现,严格

的来说,面向接口应该是面向对象中的一部分吧,因为面向对象也强调的是依赖倒置原则,

也就是实现依赖于抽象,而抽象不依赖于具体

实现,更具比较的应该是面向接口与面向抽象

对象,我的体会是面向接口更加灵活,但实现

时候,稍微有些代码冗余,而面向抽象可以结

合面向接口,先定义接口,再定义抽象类,在

抽象类中处理一些公共逻辑,再实现具体实现

类。面向对象是对复杂问题的分解。面向方面

的编程是一种新概念,它解决了很多面向对象

无法解决的问题,比如面向对象技术只能对业

务相关的代码模块化,而无法对和业务无关的代码模块化。而面向方面正是解决这一问题的

方案,它的关键思想是"将应用程序中的商业逻辑与对其提供支持的通用服务进行分离"。

2)什么是Interface?它与AbstractClass有什么区别?

接口(Interface)是用来定义行为规范的,不会有具体实现,而抽象类除定义行为规范外,

可以有部分实现,但一个类能实现多个接口,但只能继承一个父类

3)什么是反射?

程序集包含模块,而模块又包括类型,类型下有成员,反射就是管理程序集,模块,类型的

对象,它能够动态的创建类型的实例,设置现有对象的类型或者获取现有对象的类型,能调

用类型的方法和访问类型的字段属性。它是在运行时创建和使用类型实例

4)使用ASMX的XMLWeb服务与使用SOAP的.NETRemoting的区别?

Web服务使用的消息机制,而Remoting采用的vice能用于不同平台,不同语言,

Remoting只适用于.Net。效率上Remoting高于XmlWebService

5)类型系统是由XMLSchema表示的吗?CLS是XMLSchema表示的吗?

不清楚

6)从概念上阐述前期绑定(early-binding)和后期绑定(late-binding)的区别?

这个就像是强弱类型的比较相似,前期绑定是在编译的时候就确定了要绑定的数据,而后期

绑定是在运行的时候才填充数据。所以前期绑定如果失败,会在编译时报编译错误,而后期

绑定失败只有在运行时的时候才发生

7)调用算静态引用还是动态引用?

动态

8)何时使用om?何时使用le?

呵呵,这个比较有意思,相比LoadFile,LoadFrom则显得不地道,因为它娶媳妇的时候,是

让人家穿上嫁妆,坐上马车,还得带着人家的妹妹来,:)用它加载的是程序集,这就要求同

时将此程序集所依赖的程序集加载进来。而LoadFile就地道的多,它是加载程序集文件的内

容,只将传入参数的文件加载,不考虑程序集依赖,但如果有相同实现,但位置不同的文件

用LoadFrom是不能同时加载进来的,而LoadFile却可以。由于LoadFile加载的是文件,所以

调用它之后,可能因为缺少必要的依赖造成无法被执行。

9)什么叫AssemblyQualifiedName?它是一个文件名吗?它有什么不同?

它不是一个文件名,相比文件名,AssemblyQualifiedName(程序集限定名称),更能确定

一个程序集,它包含文件名,但同时包含版本,公钥,和区域。因为同样一个名称的文件可

能有不同的版本和区域,此时单独靠文件名称,可能会造成不能确定程序集的正确性。

10)("");这句话是否正确?

错误,正确的应该是("foo");或者om("");(多谢

Tristan(Guozhijian)的提示更正)

11)做强签名的assembly与不做强签名的

assembly有什么不同?

强签名的程序集可以做成com,而不做强签名的

就不行,同样强签名程序集可以安装到GAC中,

而不做强签名的确不能。

12)DateTime是否可以为null?

不能,因为其为Struct类型,而结构属于值类

型,值类型不能为null,只有引用类型才能被赋

值null

13)什么叫JIT?什么是NGEN?它们分别有什么限制和好处?

JustInTime及时编译,它是在程序第一次运行的时候才进行编译,而NGEN是所谓的

pre-jit,就是说在运行前事先就将生成程序集的本机镜像,并保存到全局缓存中,适用NGEN

可以提高程序集的加载和执行速度,因为它可以从本机映像中还原数代码和数据结构,而不

必像jit那样动态生成它们。感觉和缓存的道理大同小异。

14)Finalize()和Dispose()之间的区别?

Finalize()用于隐式释放资源,Dispose()用于显示释放资源(Finalize()的确相当于C++

中的析构函数(多谢JeffreyZhao提示更正)

15)using()语法有用吗?什么是IDisposable?它是如何实现确定性终结的。

有用,实现了IDisposiable的类在using中创建,using结束后会自定调用该对象的Dispose

方法,释放资源。不明白什么是确定性终结

16)tasklist/m"mscor*"这句命令是干嘛的?

列出所有使用了以"mscor"作为开头的dll或者exe的进程和模块信息

17)in-proc和out-of-proc的区别

in-proc是进程内,进程内能共享代码和数据块,out-of-proc是进程外,进程外的互操作需

要用进程间通讯来实现。

18).NET里的哪一项技术能够实现out-of-proc通讯?

.NetRemoting技术或者WCF技术

19)在WindowsXP,Windows2000,Windows2003上分别跑在哪个进程里面?

Xp:aspnet_dows2000:aspnet_dows2003:

编程其实并不难!

要编程并不需要到大学计算机系里去学很多艰深的理论,经过适当的指导与训练,一个高中

生就可以写出很好的程序!

那为什么会有那么多的人把编程视为很高深的东西?

那为什么我国的那么多的软件企业深感合格的程序员是如此地难找?

与此同时,每年毕业的大批计算机专业学生,找工作又成了一件非常困难的事情。

一边是真正合格的程序员人数很少,一边是大量的学生毕业找不着工作,这个怪圈为何会形

成?

我想,造成这个怪圈的一个重要的原因就是计算机教育问题。目前高校中的计算机

教育并不能大批量地培养出合格的软件开发者,学生在四年本科期间计算机理论学了不少,

却对培养编程能力重视不够,缺乏实践的结果是理论也掌握不好,学习成了“夹生饭”。

除了在校的大学生,社会上还有大批的软件开发爱好者,他们由于没有机会系统地

学习软件开发技术,就采用自学和自我实践的方式,结合自己的工作来应用学到的计算机技

术,虽然他们没有在校生的优越条件,但其中

优秀的人物其真实开发能力远胜正规高校计算

机专业“科班”出身的本科生甚至是硕士生。

这种例子已经很多了。

“职业选手”不如“业余选手”!

我自已是走“野路子”出来的,走的是

实践为主导的自学之路,从亲身实践中深切感

受到计算机科学本质上是一门实践性非常强的

科学,不管是在校学生还是社会上的软件开发

爱好者,实践就是最好的老师!

我是从2002年开始接触.NET技术的,并一直研究使用至今,我前前后后看了近百本

国内外的.NET编程书籍,写了几万行的.NET代码,在对.NET有了一定的了解之后,我认为.NET

技术是初学者学习软件技术非常好的切入点,学习者可以一步到位,直接学习目前主流的面

向对象软件开发技术,而不用按部就班,按传统的先结构化编程再面向对象编程的顺序去学

习。

接着我思考的问题是:这本书该怎么写?

著名的物理学家爱因斯坦曾经表达过这样的思想:学习时只需要掌握那些能让思维

导向深入的东西,而将其它无关的知识全部抛弃。

软件技术本身就是一个庞大而复杂的体系结构,不分巨细地样样都想掌握,只能是

疲于奔命而无所得。

为此,基于我自己的理解,在书中将我认为最重要最基础的东西突显出来,这些东

西是必须掌握的,一旦理解并掌握之后,读者就掌握了“捕鱼”之“渔”,自己就可以进一

步探索某一领域内的其它技术点了,在书中不须对每个技术领域的每个技术点都“面面俱

到”。

编程是有规律的,读者能不能迅速成为一名具备相当水平的程序员,关键在于对编

程规律与必备知识基础的把握程度。

读者在阅读时,最重要的是要掌握原理,在开发过程的所进行各项具体活动与工作

步骤中,其背后都是有道理的,理解清楚了这些道理,在整个软件开发过程中该做什么,不

该做什么,先做什么,后做什么,也就心中有数了。

编了这么些年的程序,我意识到其实学习软件开发技术的过程就是一个学会做事的

方法的过程。例如,在开发软件时,要“分而治之”,“步步为营”,“先局部后整体”,

“合理安排开发次序”,“养成良好编码习惯”等,这不仅仅是程序设计的技巧,也是做好

编程之外许多其他类型的工作所需要的基本素质。

在学习与掌握软件技术这一过程中,可以锻炼一个人许多基本素质,如思维周密、

意志坚强、学习能力、创新精神等。如果一个人能在竞争空前激烈的IT业凭借着其高的素质

站住脚跟,那么,可以很有把握地说,如果他转向其他行业,也会是一个优秀的人才,会创

出自己的一番天地!

在本书中,结合我个人的开发经验,精心安排了学习次序,循序渐进地引导读者迈

入软件开发的大门。

在许多计算机技术书籍中,出现了大量的技术术语,对于不熟悉这些术语的读者而

言,这无疑加大了阅读的难度。对于这些计算机术语的表述,如果强调其在理论上的科学性

与严谨性,则往往不易于理解,很大程度上限制了这些知识的传播、普及和应用,因此,本

书对这些术语大都采用了一些通俗易懂的文字来表达,甚至使用了不少比喻手法来阐明其内

涵,这种表达方式虽易于理解,但不免在科学性和严谨性上有所不足,读者如果需要科学而

精确的定义,请自行阅读相关的科技文献。强

调一下,本书是一本志在普及软件开发技术的

专业书籍,与传统的工程技术专著和计算机科

学理论教材是不同的,阅读时不要象中学学习

数学一样,每个字都不放过,而重点放在形成

对软件开发过程的一种直观理解和感性认识

上。

对于一个具体的软件开发者而

言,只有被理解了的知识才是真正有用的知识,

无法理解的知识是毫无用处的。笔者写书的主要目的是让读者能迅速地汲取书中所提供的知

识,应该尽量做到“用大白话讲述复杂的技术”,因此笔者在文字上追求深入浅出,但是否

真的做到了这一点,还得由读者来作出评价。

知识的获取与掌握是有其客观规律的,一般来说,具体的知识易于理解,而抽象的

知识则难于把握,在学习过程中,应遵循“具体”à“抽象”à“具体”à……这样一个无限

循环的过程。

如果某人对一门学科所知不多,却指望他能通过理论学习迅速地把握这门学科,这

是违反人类认识世界的客观规律的。可惜的是,目前中国教育体制中普遍采用的是让学生重

点学习抽象理论而忽视具体实践的做法,所以造成了大批的学生把理论学成了“夹生饭”,

理论既没学好,实践基础也没有。

笔者认为,只有建立在实践基础之上的理论学习才是真正有效的学习。因此在整个

计算机技术的学习过程中,应该把开发实践当作是一条主线,由它串起所有的计算机理论。

如果把计算机技术中的各个子领域看作是一个个的珍珠的话,开发实践就是那根把所有珍珠

串成项链的丝线,没这有根线,所学的各门计算课程得到的不过是一棵棵零散的珠子,派不

上大用场。

出于这些考虑,笔者在介绍许多编程技巧的同时,也同步介绍了相关的高等数学、

数据结构、操作系统、数据库理论、软件工程等计算机科学理论内容,其目的就是希望读者

能在实践中亲自了解到理论是如何应用在开发实践中的,从而有助于读者日后有更强针对性

地去学习这些计算机理论课程,最终成为一名优秀的软件工程师。

本书虽然介绍了大量的编程技巧,但绝不是简单的编程技巧的汇编,其中涉及到了

计算机科学中相当广泛的知识,如果读者能够从本书中体会到计算机技术的脉络,并培养出

一定的开发能力,则笔者会感到非常地高兴与欣慰。

学习此书,要求读者对Windows操作系统比较熟悉,对软件开发有着浓厚的兴趣就可

以阅读这本书了,并不要求读者系统学习过计算机专业课程,或者有C、Pascal等丰富的程

序开发经验。

二、怎样学习软件开发技术

1区分计算机科学与计算机技术

“科学技术”往往是连在一起的,但事实上“科学”与“技术”是有区别的。

计算机科学主要研究理论,而计算机技术则是这些理论在实践中的应用。打个比方:

编译理论是科学,而具体的编译器如VBC(微软公司开发的程序编译器)就是技术了;

操作系统原理是理论,而Windows就是理论应用于实践的产品,因而归结于技术范畴。

讲到这里,读者可能明白了,计算机科学家就是指那些从事计算机理论研究的人,

目前,我国高校中计算机系开设的大部分课程都属于计算机科学范畴的课程,比如《数据库

原理》、《操作系统》、《计算机图形学》、《人工智能》、《算法理论》、《数据结构》等,而另一

些课程则属于技术范畴:比如《VisualBasic

程序设计》、《SQLServer数据库开发》等等。

还有一些课程,比如《面向对象程序设计》、《软

件工程实践》等往往同时涉及理论和技术,因

而是“混血儿”。

“科学”与“技术”的区别,自然地将

从事计算机工作的人分成了两大块:计算机科

学研究者与计算机技术工程师。前者研究的是

理论,是计算机科学,人数较少,他们从事的

工作是往计算机科学大厦中添砖加瓦的工作,是新知识的发现者,一般而言,只有非常优秀

的人才能进行理论研究工作,后者研究是技术,属于工程范畴,他们关注的是如何把一个好

的软件,一个好的系统给实实在在地做出来,大部分人属于这个范畴。

计算机技术总体上又分为软件与硬件两大块,硬件工程师研究的是芯片、是集成电

路、是板卡等“实实在在”可以“摸得着”的东西,而软件工程师则编写程序,驱动各种各

样的硬件完成工作。

在计算机技术中,有一个并不严格但众所周知的“软硬定律”

本文标签: 开发技术学习