c#选择之路

来源:互联网 发布:教育机构网站域名 编辑:程序博客网 时间:2024/05/02 15:12

        选择的智慧

       --选自Google中国区总裁李开复先生于西电演讲题

   引:李开复先生说过,“不是没有时间,而是没去选择时间”,“不选择也是一种选择,不过是别人来帮你选择”,“最无奈的时候可以选择一种积极的态度”,“中庸拒绝极端”“我不知道,但我会去查”,“增加对自己可以改变的事的影响,不去做一些自己无法改变的事情”

昨天见一同学抱着一本厚厚的c++教程在学,他说有一千多页,就非常感兴趣的想看看到底为什么一本大学的c++如此之厚。如果要精通这门语言倒也无可厚非,更甚这些事远远不够的,但是当他谈及其他什么语言可以不要时,我感到诧异,接着是一阵慌张。

诧异是因为他的如此绝对化,慌张的是我是否真的错了,应该做这样一个选择,在我现有的了解,现有的经验下做这样一个选择。于是,我就认认真真的思考了这个问题,也是关乎未来的很重要的选择抉择问题。今天下午上了两节课后,便回来理了个头绪,来认真探索这个问题,然后再考虑做一个决定。本人学疏才浅,只是搜罗了一些认为有帮助价值的前沿与历史性的信息,来参考做怎样一个决定。或许可以帮到一些正在决定走那条路的广大编程爱好者,更多的是希望在未来有立足之地的莘莘学子。如果有观点偏激,希望读者见谅;如果觉得说得有理,也可以去搜罗一些资料信息的,可以更加坚定你的选择。李开复先生说的是:选择的智慧!!智慧的选择!!

      一般在接触了一门或者泛泛接触了几门编程语言的编程爱好者就会开始考虑这个问题:我到底该好好学习哪一种语言,来为以后长久立足做准备。很多人都会有这种困惑,当然也包括我,因为我正被这困惑着,但是因为李开复先生那句话,“我不知道,但是我会去查”,于是,我抱着学习的态度,去查了一些东西。大部分人都是从程序设计语言中比较低级的学起的,当然不排除开始便学习高级编程语言的,一般都是会有一个相对渐进的过程,去了解编程语言的方式,更低级的也更接近物理性的。所以对编程都是有一定的自己的见解的。而今天我所写的话题可能不是你所涉及的,但是或许有些值得考虑、借鉴。今天我只是抱着讨论性的来谈论该如何选则一种适合的编程语言。

我想以我目前为自己考虑的编程语言C#为例,经过种种因素结合,我决定还是打破常规(大学一般都花两年教cc++或者别的语言),自学C#(精学)作为自己的主攻方向(在此之前,我仍决定学习c++,它们也不怎么离开吧)。当你要做出一个选择的时候肯定需要结合时下多种因素。我觉得有些是必须考虑的因素,有些是建议考虑的因素。必须考虑:所选择语言的历史渊源,所选择的应用范围,所选择语言的市场占有份额,所选择语言的发展前景,所选择语言的发展现状,所选择语言的受其他语言影响的因素。当然也有建议考虑的因素:个人的兴趣爱好(其实在考虑未来情况下,基本都不存在绝对的兴趣问题,人是一种明白厉害关系的动物),个人的综合能力,个人对以后的条件要求,当下的条件水平。

对于语言发展的历史渊源,这个我觉得还是一个非常重要的因素。或许大多数人是听老师或同学,或是已经工作了的人讲述何种语言的优劣,自己并不去搜集一些资料,去了解自己即将或决定学的语言。这样无疑是欺骗了自己,到头来被人一棍子打晕(像我在文章开头那样),被人否定,被人问到无可辩驳,悔恨自己当初的选择。所以,在你决定选择的时候,请拿出你的智慧。例如,我在听了那位同学的想法时,也想到底该选择何种语言。但是我决定不去草草的做这个决定,我决定做一个理智的选择。我开始上网(网上有虚假有真实),这就看你怎么睿智的对待那些信息,应该做到中立不偏激,不因激进之词而放豪情,不因贬低之词而垂头丧气。我查阅了关于c#的发展渊源,很容易就找到,比如百度得百科知识(ttp://baike.baidu.com/view/6590.htm?fr=ala0_1)我觉得权威性还是可以的,不会偏激的去看待它,比较客观的做出了这些分析。从这里,我了解了c#的发展渊源,它从cc++发展而来,是一种基于.NET下的编程语言,甚至有人称它是c++Java的杂交种,不过这也可以看出,c#有它继承来的特点,当然它之所以称为一门新的语言,就绝对有其二者不可达到的优点,也有不可避免的缺陷。当然由于它的诞生时间并不是长,所以技术也不可能马上达到Java的成熟程度,这是可以肯定的。当然我已是有过cc++(都不是精通的)的经历的,所以对它的过去会有一定的认识。所以我觉得我已经对它有一定的认知并且认同度了。当然更深的渊源不如直接说是因为它是由微软的设计师设计而来的,因为它是windows下的oop语言。光是这个就值得为它考虑下一个因素了。

在谈到发展渊源时,可能资料并不会确切的告诉你,它会是做什么的,只是知道,它可以编程用。但是,我们就应该更深的去考虑这个问题,到底它可以发展到去做什么(影响到未来的)。因为当你知道它用来做什么,就知道是否是自己未来所期望的。是否可以支持自己学下去。例如c#,当我知道它更趋向做一种模式架构时,我觉得它可以影响一些什么,更趋向于全能的时候,我知道它可以的。当我知道,它是在.NET框架下的主要编程语言时,我知道它可以的。当我知道它可以作为嵌入到.NET下作强大的网站开发时,我知道它可以的。因为它将给我更多的选择,甚至于它的跨平台性,它的开发效率,我觉得它可以的。当然我更知道它是windows是下的应用宠儿,我知道它是可以的。当然它也不可能像c++那样,到windows底层,不可能超越替代c++,至少现在不能,未来几年不能,因为windows还是c++写的。所以,做出选择必须认清现实。

说到所选择语言的市场份额,当然这是重点,也是不必绝对化得一个因素。语言本身不会有太大的优劣,即使是basic仍旧是目前的开发利器,仍旧占据开发语言的重要江山位置。当然,一定程度上说明某种语言的在全局的优越性,只是全局相比较。例如PHP,它在它的网络编程有着重要的份额。市场份额大,也证明这种语言的需求大,当然竞争也就激励,任何一个选择了这种语言的都得面对这种竞争,因为计算机是向高效发展的。所以不要绝对的认为选择了好的,就代表未来一定是好的。有的语言或许现在不是绝对好的,但是跟随硬件的发展,或许某天它就会成为无可比拟的。所以看好了,不要绝对了。

我觉得所选择语言的发展前景和目前发展状况可以放在一起探究。这两个因素息息相关,都影响你的选择。目前发展状况当然不仅仅指的是市场占有份额,应该是程序员对它的发展的认识。市场反应的企业对它的需求,而程序员对它的使用感觉才是影响它目前发展的状况,如果一种语言,在熟悉的人手里尚不能得到认可和满意谈何更深的发展。所以,目前程序员对它的解释可以作为当前状况的认定。例如c#它已经被认为是可以大大提高开发效率的,任何资深或者非资深的编程人员都肯定了这一点,当然如果你对你所掌握的语言精通程度到了一定境界,那样比较又另当别论,我们只在同一条件下作比较。当然目前它也是微软极力推重的宠儿,可以看出它处于目前期待上升期,状况良好。不可隐晦的说,它的出现的确是为了抗衡日益强大抢占市场份额的Java。可以看出它有强大的实力。它的发展更在乎于,微软帝国,和未来的标准化。当c#成为一种标准化得语言时,或许真正全能的时代就来了。C++是标准化语言,它的强大在目前还无法替代。微软帝国决定了的.NET计划,一直在为它的宠儿铺路,或许很远也或许很近,一旦c#可以编出操作系统,驱动,它就可以替代c++了,或许它只是我选择c#的一个愿望吧,至少十年之内发展不出那种情况,但它也不至于让你没有饭吃。所以做这些选择必须认真考虑它的现状(最近一两年还是要吃饭的不是么),和它的未来(希望自己过的更好)。

考虑一门语言的前景如何当然就不可避免的会遇上其它语言的竞争,或许你会说我多余说不清楚,在市场竞争份额时已经说了这么一个问题。但是,我想说的是,不只是在市场上这个显而易见的竞争而已。我们要考虑的是,在每种语言发展的趋向过程中,所发生的变化,任何一个变化都会措手不及。如果一种语言优越的超越了你所学的语言,都是不可避免的,当然这个时候你就会受到很大的影响,因为另外一种优越语言的诱惑力与冲击力是巨大的,从Java的强大发展来看,这是一种客观的事实。所以,考虑到c始终是依靠在微软这个世界独一无二的帝国下,大可不必担心其他语言所带来的冲击,即使发生意外,也不会出现混乱的后果,因为c的程序设计者占得比例真的不少。所以得所以,考虑未来的冲击波,这个也是必不可少的。

花时间去考虑一些个人因素也是必不可少的,更有人说这个占了非常的大的一部分。关于个人兴趣爱好的问题,我已经说过了,人是一种明白厉害关系的动物,没有动物会明知道有痛苦的结果而继续固执的。兴趣再好,带来痛苦的结果你也是不能接受,也不会接受的不是么。兴趣只在于你对自己说,我会有乐趣的,学这这真的很有兴趣,这样如何如何有兴趣。兴趣是这么回事,不是老师说的做自己喜欢的事情。个人能力也很重要,李开复说不要改变改变不了的事。知道自己不能及的就不去费白力气。如果明知自己不可能做得到一些很深的研究性的问题,那么你就不要去选择那些,否则后果只会得不偿失。还有就是当前你所处的设施条件,如果你的条件不好,你还是会受很大影响的,因为开发语言这种东西,关键还是在于动手的去理解的(个人见解)。所以,可能你也不必选择区自学这回事了,我觉得,这种存在的困难性还是非常之大的。最后我认为的期望条件是指你以后想要过的生活,物质性讲就是你想拿多少月薪。其实这是一个很实际的问题,选择一门好的编程语言就是为了日后过上好日子。如果你了解到信息的发展方向,你就不会去选那些始终处于低份额的语言,所以,选个能让你过上你想过的物质生活的语言很重要。这个是查询各种软件工程师工资的网址(http://www.**.com/salary/%E5%A4%A7%E8%BF%9E%E5%B8%82/C%23.NET%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E5%B8%88/),有各地的软件工程师的平均工资的,可以看看。

我并不觉得自己说的会是绝对的明智,也不强求任何一个人赞成我的观点,因为这是个人见解,不带任何色彩的。基于一个有丁点认识的人所写的话。如果认同证明我的不愚固然好,如果有意见在这里希望可以取得宝贵的看法,希望得到真诚的建议。我只是静静的花了些许时间来写了这篇文章。

 

                           

                                   2010-3-26

                                           胡涛

 

原创粉丝点击