近期开始接触到在校学生、高校实习生和毕业生,在此说一下笔者对这些徘徊在职场门口的学生一些建议,希望能给这些初学者进入软件开发行业带来一些帮助,使得毕业生能更顺利的进入软件开发公司开始职场生涯,人生来一个完美的转弯。[袁永福版权所有]

--------------------------------------------------------------------

C#(读C Sharp)是微软主打的一种基于.NET框架的快速开发语言。它功能强大,使用方便,学习起来也比较快。已经成为一种主流的计算机软件编程语言了。

C#是微软公司20006月发布的,是由著名的Anders Hejlsberg领导研发的,此人是Turbo Pascal的主要作者,是Delphi的创作者。

从语法上看,C#是属于C语言家族的,和JAVA有不少共同点,现在有不少人认为C#抄袭JAVA,不过现在多种现代编程语言之间是相互借鉴的,C#包含了不少VB的特性,新版的JAVA也包含了不少C#特性。

从运行平台上看,JAVA强调的是跨平台的,一次编译到处运行。

从应用范围上看,有图有真相,下图是近年全球软件业界各种计算机编程语言的使用率变化图,

 

 

 

 

在这个图形中,最黑的那条线是C#的,从这个图形可以看出,C#已经是一种主流的计算机编程语言,而且使用率还在稳步上升。下表是今年全球软件业界使用的计算机编程语言排行榜。

Position
May 2011

Position
May 2010

Delta in Position

Programming Language

Ratings
May 2011

Delta
May 2010

Status

1

2

Java

18.160%

+0.20%

  A

2

1

C

16.170%

-2.02%

  A

3

3

C++

9.146%

-1.23%

  A

4

6

C#

7.539%

+2.76%

  A

5

4

PHP

6.508%

-2.57%

  A

6

10

Objective-C

5.010%

+2.65%

  A

7

7

Python

4.583%

+0.49%

  A

8

5

(Visual) Basic

4.496%

-1.16%

  A

9

8

Perl

2.231%

-1.05%

  A

10

11

Ruby

1.421%

-0.67%

  A

2001年,ECMA国际组织批准了微软的C#编程语言为标准,并与2003年被ISO国际组织确定为国际标准。类似的CC++语言都已经成为ISO国际标准,而JAVA尚未成为国际标准。

 

.NET框架简介

.NET框架是微软提出的先进的企业级应用开发框架,功能强大,使用方便。是Windows平台上最为流行的软件开发技术。

下图就是微软对.NET框架的结构图。

 

C#是一种计算机编程语言,它比较简洁的,是面向对象。它和CC++JAVA等都属于C语法家族。掌握C++的再学C#应当不难。[袁永福版权所有]

.NET框架是微软推出的软件开发基础框架。它采用了类似JAVA的虚拟机技术,并进一步实现了中间语言运行技术。C#语言和.NET框架是有区别的,它们的应用架构如下图所示

 

 

 

 

C#是一种计算机编程语言,它比较简洁的,是面向对象。它和C,C++,JAVA等都属于C语法家族。掌握C++的再学C#应当不难。

 

微软提出了一种中间语言的规范,初学者可以看做一种不限于CPU类型的标准汇编指令集,各种各样的计算机编程语言编写的程序代码都可以编译成符合中间语言规范的程序。中间语言规范已经定为国际标准,任何人都可以实现符合这种标准的计算机编程语言及其配套编辑器。目前微软提供了C#VB.NETJ#的中间语言程序编译器。

 

微软针对中间语言实现了中间语言虚拟机,它能将跨越硬件的中间语言指令转化为运行程序的电脑CPU类型的机器指令然后调用CPU执行这些指令。

为了提供很好的开发时和运行时支持,微软实现了.NET程序框架,其中包括了大量的实用软件组件库,还有用于实现ASP.NET的针对IIS的扩展程序库等重要软件模块。.NET框架就运行在Windows操作系统上。

JAVA技术实现了跨操作系统平台但不跨语言,而.NET技术实现了跨语言但不跨操作系统平台。理论上由于中间语言规范是国际标准,.NET技术是可以跨平台的,而且业界著名的MONO项目也初步实现了.NET技术的跨平台,但相信微软由于其商业利益不会实现微软.NET框架的跨平台的。

综上,.NET框架是一种软件开发框架,一种虚拟的电脑,在其中能运行多种编程语言开发的应用程序;C#只是能.NET框架上运行的其中的一种编程语言,但它是.NET开发中最重要最常用的编程语言。

 

这个图结构复杂,内容很多,对于刚刚接触.NET开发的人来说,其主要特点是

1.       提供一个大而全的类库和控件库。.NET框架包含一个很大的类库,能方便的实现对文件、网络、数据库、安全控制、图形绘制方面的功能。

2.       .NET平台是一个开发平台,并不限制为某种计算机语言。我们可以使用C#VB.NETVC++.NETDelphi.NET或者其他语言在其上面进行开发,这样以前会这些语言的开发者仍然可以方便在.NET平台上开发,以前掌握的开发语言不会扔掉。不过建议新手在.NET平台上的开发可以一步到位的学习使用C#语言。[袁永福版权所有]

3.       .NET平台具有很大的覆盖面,凡是Windows操作系统能运行的地方都可以运行.NET平台,包括PC机和智能手机。未来.NET平台还可用于大型机和嵌入式开发。而业界有一个名为Mono的开源.NET平台具有一定的跨平台特性。由于.NET平台具有很大的覆盖面,使得在其上面开发的程序也能运行在很多环境下,而且移植工作量小。比如我们在PC机上编写的源代码,大部分也能运行在智能手机中。

 

在这个结构图中,Windows操作系统/硬件形成整个架构的核心。在左边是运行库,类似JAVA虚拟机,在核心的基础上构筑了一个虚拟的计算机。.NET程序是运行在这个虚拟机之上,而不是直接运行在核心上。

    运行库之上就是一个类库,这个类库包含了大量的功能类库,比如操作文件的、数据库的、网络的、用户界面的等等。
    类库是微软官方提供的,功能强大,但仍然不能满足千千万万的软件开发者的所有需求,此时开发者可以编写自定义对象库,实现各自的功能,左边最外层就是托管应用程序,它就是用户实际使用的程序,它能调用类库和自定义对象库中的功能模块,实现各种完整的功能。
    托管应用程序的概念很重要,是.NET框架的基础概念之一。这个名词可以拆分成“托管”和“应用程序”。应用程序说得通俗点就是EXE文件,可以运行来完成某种功能,关键是“托管”这种概念。
    其实在现实中已经有托管这种概念,比如拿金融投资来说,某人手上有笔钱,他有两种投资方式,第一种就是偶然路过某个商场,发现它生意貌似不错,于是出大手笔投资这个商场,然后撒手不管了,坐等年底分红;另外一种就是把钱交给股神巴菲特,然后撒手不管,坐等年底分红。
    对于第一种投资方式,这是直接投资,那就是靠天吃饭了,完全依赖被投资的商场的运营,而投资者对此毫无了解,风险巨大,容易出大事。
对于第二种投资,这是间接投资,将钱交给专业人士,委托他管理这笔钱进行投资,这就是资金托管,虽然投资利益会被托管人分享,但风险小,不容易出大事。因此这种资金托管是比较好的。
    类似的,应用程序也可以被托管。在应用程序没有托管前,应用程序是直接运行在核心之上的,结果应用程序发生错误很容易影响到核心的和谐稳定。虽然企业应用是稳定压倒一切的,但没有开发者能开发出完全没有错误的应用程序,用户一直在冒着单个应用程序发生错误而影响整个系统的稳定,甚至全体死机的风险。
更坏的情况是,很多应用程序有安全漏洞,比如缓存区溢出漏洞,***利用应用程序的漏洞而非法进入系统核心,给用户带来重要数据的泄露甚至丢失,这是非常严重的情况,会引起纠纷的。
    而应用程序被托管后,.NET框架就成为一个软件错误防火墙,应用程序错误的波及范围都会被.NET框架所限制,使其不致影响到系统核心,这样一个应用程序的崩溃就不会导致整个系统的死机。而且当应用程序有漏洞被人利用后,.NET框架会第一时间感知到应用程序的异常情况,对非法操作进行阻击,这样能避免托管应用程序的漏洞对系统核心造成的祸害。
    虽然应用程序被托管后性能受到一些影响,但能大幅提高系统核心的和谐稳定,因此在大部分情况下是符合用户利益的。[袁永福版权所有]