今天,软件开发是变易还是变难

今天,软件开发是变易还是变难

 

                                     ( 附:金旭亮WCF最新教学资源包下载)

        软件技术恐怕是人类社会各行业中更新最快的一个领域了,往往老的技术还没有弄明白,新的技术又横空出世。与老的技术相比,新技术往往功能更为强大,开发效率更高。

         我还记得我当年学程序设计时,用C语言写程序,要想得到一个好的用户界面,实在是要付出太多的努力,弄一个中文下拉菜单,都需要上千行的代码。以致于当时流行一句话:一个软件,80%的代码是界面代码。

         VB的出现使用户界面的设计工作不再那么劳累了,用控件“拖拖拽拽”就可以“画”出一个规范的用户界面,很快,更先进强大的设计工具出现了,从Delphi到当今的Visual Studio 2008,从MFCWindows Form再到WPF,当年开发用户界面的痛苦日益成为历史,今天的程序员已很难有老程序员的那种感触了。

         有了这样的感叹:由于开发工具越来越强大,编程将变得越来越简单,门槛越来越低,以后,一个笨人也可以编程了,现在的程序员看来前景不妙,人多了,就不值钱了。

         从过去到现在再到未来,这个问题变得很有趣:软件开发是变得越来越容易呢还是变得越来越难?

         的确,随着技术的发展,一些原来很困难的东西现在实现起来轻而易举。一些原先需要高素质的人才可以从事的工作,现在,普通人也可以从事了。例如:VB的普及使全世界的程序员数目大大增加,这个现象让原先那些拿着高薪的C/C++高手们拥有了一种复杂的心态,既看不起VB菜鸟而又无可奈何。

         为何老的“高手”们会感到无可奈何?因为任何人都无法对抗技术发展的客观规律。过去的辉煌业绩,只能供自己在闲暇里回味,软件技术日益走向普及是必然的发展方向。技术,不再也不会始终高居于神坛之上。

         然而,还是没有正面回答这个问题:技术的发展,使软件开发是变易还是变难?

         我个人认为:软件开发没有变得更简单,也没有变得更复杂。

         现代软件技术的发展,使一些过去很困难的问题现在解决得很简单,但与此同时,要求软件技术解决的问题也变得更为复杂多样了。

         举例说明。

过去的DOS时代,你编写的程序可以独占整个操作系统和计算机,在PC时代,你可以编写操控个人电脑上各种资源的程序,而到了网络时代,你必须开发高度分布的异构的软件系统。

         早期的单机版程序,一个人编写几千行最多几万行搞定,而现代一些复杂的应用系统,拥有几十万行甚至数百万行代码,而象Windows这样“吨位”的大胖子,拥有千万行代码的规模,同时有上千名工程师在工作。

         你说软件开发是变难还是变易了?这还真难说。早期的软件虽然规模小,但那时也没有这么强大的工具,这么丰富的资源,更重要的,技术也不成熟,各方面都无法与现在相比,因此,那时开发软件是不能说容易的。

         现在开发的环境与条件是过去不能比的,强大的开发工具可以大大地提升编码效率,好用的搜索引擎可以提供丰富的技术资源,无所不在的互联网可以使你向世界上任何一名技术高手请求帮助……,但你要对付的软件开发任务也变得不同的,因此,现在开发软件也不能说是容易的。

         事情还有另一方面:虽然现代软件的开发技术与开发方式与几十年前相比有了较大的变化,然而,有些东西却始终起着关键性的作用。这就是人自身所具有的基本能力:学习能力、思考能力、探索能力、解决问题的能力、知识迁移的能力、组合应用能力……。

         从人的基本能力出发,其实一名软件牛人与一名玩游戏导致大学没毕业的失败者没有太大的差别。牛人们“牛”在技术,而这些失败的学生们“牛”在玩游戏上。绝大多数人都拥有足够的天赋和能力,可以在某个他所擅长的领域内成为牛人(前提是他能找到它并且具备相应的成功素质)。

         软件开发没有变容易,也并不去过去更难。形式变了,但本质没变,因为软件开发本就是一个人基本能力的不断应用过程。

         我还记得小时候抱着强烈的好奇心和我的哥哥一起拆过家里的一个闹钟,为了把各式各样的大大小小的齿轮原样再装回去,我们兄弟俩足足耗了好几个小时,不断地动脑筋琢磨这个小齿轮应该放在什么地方的,因为“拆”容易,“装”就难了,“装”好并且还让它“走”就更难了。虽然最后难免被老爸责骂几句,但那种兴致勃勃的探索劲头,现在还记忆犹新。

         然而长大以后,有这种体验的机会好象越来越少了。所幸的事,软件技术好象也是一个闹钟,如果你感兴趣的话,也可以拆拆装装,体验一下儿时的那种单纯的快乐。

         我最近在拆微软的“WCF牌”闹钟,附件是我的“拆卸”记录。期望对WCF技术感兴趣的朋友,也能从中体会到和我一样的动手试验进行探索的乐趣

        

 

         下载“WCF并发与实例管理”学习资源包

(http://download.csdn.net/source/1322774)

 

资源说明:

         本资源包集中介绍了WCF中有关“并发与实例管理”这一领域的技术知识,其主要内容有:

         1)理解WCF中的“行为(Behavior)”

         2)异步调用设计模式

         3)在Windows FormWPF应用程序中驻留WCF服务

         4)使用InstanceContextModeConcurrencyMode管理服务对象

         5WCF如何对并发请求进行控制。

要求学习者具备.NET多线程开发基本技能,以及了解WCF基础知识(可以先看我的《WCF概述》技术资源)。

本资源提供一个PDF文件,和11个示例项目,要求大家亲自动手进行实验。

记得有网友在我发布《WCF概述》教学资源时问过WCF用在何处,我的回答是:

如果你想基于Windows平台开发分布式的软件系统,那么,WCF是一个不错的选择。

而我本次发布的这个学习资源包,可以看成是进入WCF开发分布式系统这一领域的第一步。其中涉及到了许多分布式系统开发中重要的技术点:比如如何处理线程同步、访问共享资源、超时回收对象、保证服务器吞吐率等问题,我相信这个资源能帮助大家进一步理解和掌握更多的WCF技术内幕打下基础。

我个人认为:随着网络技术的发展,计算将高度分布化,某一信息处理任务可能由PC、高性能服务器以及手机等智能设备等共同协同完成,我们已开始进入“计算无所不在”的时代。

开发分布式软件系统是当前和未来主要的一个软件开发领域,它给软件工程师所带来的挑战也是巨大的,其难度大于单机软件系统的开发。

是对分布式软件技术予以足够重视的时候了,因为相关的技术与工具已趋于成熟。

勇敢地迎接新时代的挑战吧!

  • 0
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 43
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值