今时不同往日:VS2010十大绝技让VS6叹服
“从来只有新人笑,有谁听到旧人哭,程序员的心,好难懂~~”
自从微软最新的Visual Studio 2010发布之后,昔日备受程序员们追捧的开发工具Visual Studio 6最近却备受冷落,总是哼唱着这首歌来排解自己的郁闷。它总是抱怨说:“程序员们都是些喜新厌旧的家伙,一看到新的Visual Studio 2010发布了,就把我Visual Studio 6忘在了一旁,它Visual Studio 2010有什么好的?它VS2010能做的事情,我VS6照样都能做!”
在一旁的VS2010听不下去了,反击道:
“不是那些程序员喜新厌旧,而是我VS2010确实比你VS6好很多强大很多。你看看,程序员们最需要最常做的十件事情,哪一样你能够做到啊?这也就怪不得他们舍弃你这个多年的老朋友,投入我VS2010的怀抱了。”
“哼,什么事情我不能做而你VS2010能做?你给我说清楚!想当年我可是集万千程序员宠爱于一身啊!”VS6还想做最后的抗争。
“好汉不提当年勇啊,哪十件事情我VS2010能做而你VS6不能做?把耳朵竖起来,且听我慢慢为你道来。”VS2010据理力争,不作丝毫让步。
第一件:基于WPF的IDE带来畅快的编码体验
我们知道,Visual Studio 2010的IDE是使用微软最新的WPF技术构建的,而Visual Studio 6则是使用传统的Windows窗口所构建,这就使得Visual Studio 2010可以充分利用WPF的界面特性,完成很多Visual Studio 6根本无法完成的事情。
比如,利用WPF的界面特性,我们可以完成开发工具的个性化自定义。在Visual Studio 6的时代,每个程序员所使用的IDE都是千篇一律的,这是一个崇尚个性化的时代,我们当然希望自己的IDE能够有别于其他人使用的IDE,我们希望对IDE进行个性化的自定义,以打造专属于自己的IDE。这个梦想在Visual Studio 6的时代是根本无法实现的,现在,在Visual Studio 2010中,利用WPF技术构建的IDE可以帮助我们完成这个梦想。
在Visual Studio 2010中,IDE的开始页由一个StartPage.xaml文件控制,通过编辑这个文件,我们可以在我们的这“一亩三分地”上任意耕种,我们可以添加内容,添加按钮执行某些功能,甚至可以添加一些自定义的控件完成一些特殊的任务等等。通过自定义开始页,我们将我们的IDE个性化,比如可以在开始页中订阅我们感兴趣的新闻,订阅项目组的活动通知,打开我们常用的项目等等。总之,自定义的开始页很好很强大,极大地满足了我们对个性化IDE的需要。可以说,自定义开始页是Visual Studio 2010带个程序员们的一份见面礼。
通过自定义开始页,在IDE中订阅感兴趣的RSS
除了自定义开始页这一件事情Visual Studio 6不能做而Visual Studio 2010能做之外,基于WPF构建的IDE还带来很多有用的特性,这些都是Visual Studio 6所不具备的。例如,在VS2010中,代码的选择不再是一整片的反色显示,而是非常漂亮的半透明渐变显示,让整个代码选择非常清新自然,同时也更加醒目。另外,代码编辑器中字体的自由缩放,更完美的代码显示等等,这些都给程序员带来前所未有的畅快的编码体验。
第二件:支持多显示器,世界更宽广
在Visual Studio 6的年代,程序员们基本上都是一个人使用一个显示器进行工作,但是随着现代应用程序规模越来越大,开发工具越来越复杂,在进行开发的时候,我们常常希望能够一边编写代码,一边能够直观地看到界面的变化,同时我们还想开着搜索引擎查找资料等等。这种情况下,多显示器已经成为我们开发工作的实际需要了。面对开发工作对多显示器的需要,Visual Studio 6除了在多个界面窗口之间不停切换之外别无他法,显得束手无策。而基于WPF技术构建的Visual Studio 2010则可以天然的支持多个显示器,在多显示器环境下,我们可以把VS2010中的多个窗口布置在不同的屏幕上。比如我们可以将代码编辑器放置在主显示器中,将输出窗口,类图窗口,代码定义窗口等等提供辅助信息的窗口放置在副显示器中,这样我们就可以在主窗口中编辑代码,同时有需要的时候,可以及时地从辅助窗口中得到一些有用的辅助信息。VS2010对多显示器的支持,对于网站开发人员特别有用,他们可以用一个显示器来显示页面的代码,一个显示器来显示页面的预览效果,再也不用在页面视图和代码视图之间不停的切换了。 可以想象,多显示器可以极大的提高我们的开发效率。
使用Visual Studio 6的程序员看着使用VS2010的程序员在多个显示器之间游刃有余,只有羡慕的份了。
支持多显示器的VS2010
第三件:更聪明的智能提示IntelliSense
我们在编码的时候,常常需要知道某个类的成员函数以及这个函数的参数等等。程序员的脑袋是用来思考问题的,不是用来记忆代码的。IDE的代码智能提示可以很好地帮助我们程序员记住一些编码时候需要的辅助信息,从而让我们的脑袋从记忆繁杂的代码中解放出来,提高我们的开发效率。在Visual Studio 6的时代,程序员们很喜欢Visual Studio和Visual Assist的开发工具组合,就是因为Visual Assist为Visual Studio 6提供了他本身不具备的代码智能提示功能,让程序员们再也不用去牢记每个类的成员函数,每个函数的具体参数等等,使得程序员的开发效率大大提高。
Visual Studio看到了程序员们的这种实际需要,在Visual Studio 6之后的版本中加入了IntelliSense智能提示以替代Visual Assist。C++作为最复杂的编程语言,其IntelliSense一直是Visual Studio的一个难点。在以往的Visual Studio中,C++的IntelliSense是基于编译器的,它可以理解复杂的C++代码。但是,对于一些比较高级的C++代码,特别是跟宏相关的一些内容,IntelliSense就显得无能为力了。在新的Visual Studio 2010中,改进的IntelliSense显得更加聪明,也更加快速高效,几乎可以理解任何复杂形式的C++代码。有了新的IntelliSense,估计很多程序员所钟爱的Visual Assist会受到冷遇了。
第四件:及时发现错误,现场解决问题的Live Error
我们程序员做程序开发,大部分时间不是在编码,而是在查找解决代码中的错误。人是容易犯错误的,我们在编码的时候,可能少写了代码中的某个字母,或者是错误调用了类中不存在的函数,又或者是函数调用的参数不匹配等等。很多时候,我们都将宝贵的时间花费在了解决这些低级错误上。在Visual Studio 6中,要解决这些代码中的问题,我们必须要编译整个项目,然后从编译信息中才能知道我们犯了一个多个简单低级的错误。于是我们不得不在编码犯错误——编译项目——发现错误解决问题——编码犯错误的循环怪圈中浪费宝贵的时间。
Visual Studio 2010看到了Visual Studio 6所面临的这个无法解套的怪圈,它提供了一个全新的功能“Live Error”,将我们程序员从这个怪圈中解救出来。借助VS2010强大的后台编译功能,它可以在我们编写代码的同时,就对代码的正确性进行检查,如果发现代码中有明显的错误,比如错误地拼写了变量名,函数参数不匹配,使用了可见域之外的变量或者函数等等,VS2010都可以及时地发现代码中的这类错误,并在相应的代码上使用红色的波浪下划线做以标记提示,当程序员看到这个错误提示后,就可以现场解决代码中的错误。因为程序员正在编写当前代码段,对当前代码段也比较熟悉,所以问题能够得到很快的解决。如果像VS6一样,得到编译之后才发现错误进行解决,那样不进不能及时发现问题,即使发现问题了,也需要对代码段重新理解才能解决问题,问题的解决需要花费更多的时间。
live error帮助及时发现错误,现场解决问题
第五件:可视化的Ribbon界面设计
由于Visual Studio 6诞生于上一个世纪,它所能够创建的应用程序界面,都是普通的Windows窗口和控件等,在现在的人们看来,就像出土文物一样古老。所以,Visual Studio 6的应用程序界面设计一直以来都受到程序员们的诟病。很多时候,我们都不得不采用其他方案来弥补Visual Studio 6在应用程序界面上的不足,例如采用皮肤来美化应用程序的界面,采用Flash作应用程序的界面等等。
随着Office 2007的发布,它改变了以往传统的下拉式菜单和控件组成的用户界面,取而代之的是全新的被称之为“Ribbon”的固定式工具栏界面。微软声称这种新的用户界面能够使用户更容易地使用软件的各项常用功能,例如Word 2007中的保存,设置格式,插入图片等常用功能,都可以从Ribbon界面快速地访问到,从而提高用户的生产效率。随着Windows 7的发布,它更是推波助澜,将Ribbon界面普及到了各个角落,更多的应用程序开始采用这种新型的用户界面,例如我们常见的画图程序,以及专业的AutoCAD,SnagIT软件等等。Ribbon界面已经成为一种界面发展的趋势,但是Visual Studio 6在应用程序界面方面却是捉襟见肘,眼睁睁看着华丽的Ribbon界面大行其道却使不上劲。
虽然Visual Studio 6在应用程序界面设计上无所作为,但是Visual Studio 2010显然不会错过这场好戏,从MFC应用程序向导到MFC类库对Ribbon界面的支持,从可视化的Ribbon界面设计工具到Ribbon界面的XML文件编辑,Visual Studio 2010对应用程序的Ribbon节目提供了原生的全方位的支持,让我们使用Visual Studio 2010可以轻松地创建Ribbon界面,为我们的应用程序穿上华丽的外衣。
可视化的Ribbon界面设计器
第六件:支持Windows 7新特性
微软历史上第二成功的操作系统Windows 7已经发布很久了。新的操作系统,总是带来很多新的特性。而作为Windows平台的开发人员,新操作系统的到来则为我们带来了更多的机会,我们可以借助新的操作系统的各种新特性,让我们的应用程序更加易用,更加强大,更有利于提高用户的生产效率;同时新的操作系统也给我们带来更多的挑战,我们每个开发者都在考虑自己开发的应用程序是不是“Ready for Windows 7”?是否跟新的操作系统兼容?是否能够利用新的操作系统的各种新特性?为Windows 7开发应用程序,成为我们面前的一个新的课题。
Visual Studio 6作为Windows 7之前发布的开发工具,面对Windows 7所带来的各种诱人的系统特性,例如Jump List,任务栏缩略图,UAC等等,只有眼巴巴望着的份儿,而只有伴随着Windows 7共同成长的Visual Studio 2010才有资格享受这份大餐。
在Visual Studio 2010中,MFC被进行了大量的更新和扩展以支持Windows 7的各种新特性。例如,通过MFC应用程序的可视化Riboon界面设计器,我们可以轻松地为应用程序添加上流行而现代的Ribbon界面;利用MFC的扩展,我们可以轻松地使用Windows 7的各种新特性,例如触摸支持(Multi-Touch),重启管理器(restart manager),任务栏缩略图等等。并且,在我们的应用程序中使用这些Windows 7的新特性都非常简单,通过在“MFC应用程序向导”中进行简单的设置,我们就可以轻松拥有这些新特性。为了能够跟上Windows 7这位大哥,利用Windows 7的新特性来为自己的应用程序增光添彩,聪明的程序员当然会选择VS2010啦!
给应用程序添加Jump List特性
第七件:对并行计算的支持
随着Intel和AMD不断推出多核心的CPU,一芯多核,成为越来越普遍的事情。从单核到双核,从双核到四核,再到八核等等,毫无疑问,我们开始进入一个一芯多核的时代。软件是运行在硬件之上的。当硬件发展了,软件也要做相应的变化,才能跟上时代的步伐。面对多核时代的到来,软件世界的并行计算开始兴盛起来。如何更加充分地利用 CPU的多个核心?如何发挥多核的威力,带来软件性能上的提升?如何简便地实现并行计算,使自己开发的应用程序充分地利用硬件升级所带来的性能提升?这些问题,无不困扰着我们这些多核时代的程序员们。
面对并行计算的挑战,Visual Studio 6的应对方式还是老一套——多线程开发。但是,传统的多线程开发不是一件简单的事情,线程的创建,调度,挂起,销毁等等,都在挑战着程序员们的脑力,耐心和细致。稍不留意,就可能犯错,导致线程死锁,线程冲突等等问题,多线程开发成了龙潭虎穴,很多程序员望而却步。
面对并行计算这个站在广大程序员面前的拦路虎,VS2010当然是迎难而上了。VS2010提供了新的库和工具,让程序员们可以轻松简便地开发并行计算应用程序,从而充分利用多核CPU的计算能力。新的并行模式库(Parallel Patterns Library)在一个比操作系统线程更高的高度对并行计算进行了抽象,让程序员们不再直接跟比较危险的线程打交道,而是在另外一个更高的抽象层次,用新的Task来表达我们对可以同时执行的多个任务的封装,使得并行计算的程序更加容易理解和开发。除了PPL之外,VS2010还添加了多个线程安全的容器,这些容器可以应用在并行计算的应用程序中。多线程程序的开发是一件麻烦事,多线程程序的调试更是一件麻烦事。为了解决这个问题,VS2010改进了它的调试器,同时提供了多个专用视图,例如线程视图,通过这些视图,我们可以清楚地看到各个线程的执行情况,从而轻松地完成多线程应用程序的调试。
VS2010中的线程视图
第八件:对C++标准的支持
Visual Studio 6对C++标准的支持不够完善,这是天下众程序员皆知的事情。可以说,这是Visual Studio 6的一大顽疾,大家都在抱怨它对C++标准支持不够完善,同时添加了很多自己的扩展,这使得我们所使用VS6开发的应用程序根本没有什么可移植性可言,原本在Windows平台上运行得好好的应用程序,一旦移植到其他平台上,连编译都没法通过。又得另起炉灶,重来一遍,真是劳民又伤财。
VS2010作为VS6的后辈,当然会吸取这个教训了。从一开始,VS2010就对C++标准提供了完善的支持。从编译器和程序库两个方面,VS2010都全面支持C++的最新标准C++0x,让程序员们可以利用VS2010轻松编写更好的更加现代的C++程序。例如,对auto和decltype关键字的支持,让C++具有了某些动态语言的特性,程序员不再费脑子去推断某个变量的类型,这些都交给编译器去完成了;对右值应用的支持,极大地提高了标准模板库(STL)的性能;对Lambda表达式的支持,让我们的代码更加简洁流畅。特别是Lambda表达式配合PPL使用的时候,我们可以使用Lambda来表示一个Task,让并行计算的开发更加简单,得心应手。
第九件:我们都说UML
VS6的时代,在一个项目中,各种角色所说的话是不一样的:使用Rose或者Viso的架构师用各种各样的图表来描述系统的架构,而使用VS6的程序员更容易理解的是实际的代码。当架构师用画好的UML图向程序员描述整个系统架构的时候,程序员往往会因为不熟悉架构师的语言或者表述方式,而对系统的架构有所误解。这就像两个说着不同语言的人,产生误解是难免的事情。这一切都源于VS6不懂UML。
这一切在VS2010中成为了历史,现在VS2010也懂得了UML。在Visual Studio 2010中新增加了一个项目模板,叫做“建模项目”,通过这个模板,我们可以快速创建一系列UML图,目前可以创建UML 2.x 13个图中的5个,另外还可以创建层图和有向图(.dgml)。
Visual Studio 2010中的UML图
在架构管理方面,VSTS 2010通过新的架构浏览器(Architecture Explorer)和架构层图(Architecture Layer Diagram),以图形化的方式描述系统架构,从而使得项目中的技术人员或非技术人员都能以模型透过图形化的方式进行协作,以及定义企业与系统功能。
现在,架构师可以使用VS2010中的UML来描述系统的各种行为,而程序员也能够很直接地在VS2010中浏览架构师所使用UML描述的系统结构,并用编程语言将它们实现。这样,当架构师和程序员都在说同一种语言的时候,团队中的沟通就更加顺畅了。不像VS6仅仅是程序员的工具,现在,VS2010不仅受到程序员的欢迎,同时也成为架构师的最爱了。
第十件:VSTS——你不是一个人在战斗
在VS6的时代,基本上是一个单兵作战的时代。从本质上讲VS6只是一个代码编辑器和编译器,一个项目组中只有程序员在使用VS6进行编码。而项目中的其他角色,各自使用自己的工具软件进行工作,长枪短炮齐上阵好不壮观。项目经理使用Project,Excel等制定项目计划,进行任务划分和分配,架构师使用Rose进行架构设计,到了测试人员那里,他们又使用开源的CPPUnit等工具进行测试。这些工具软件被简单松散地集合在一起,几乎可以称得上八国联军了。各个软件之间无法进行信息流的沟通,软件开发流程和项目管理流程两者是完全分裂开的,导致信息在项目内部的阻塞,造成项目成员之间的沟通不畅。
微软看到了这种软件开发趋于团队作战的趋势,同时也看到了VS6这种近乎单兵作战各自为政的现状,所以在Visual Studio Team System中提供了协同一致的应用程序生命周期管理工具,让参与软件开发的各种人员,从架构师到开发人员,从项目经理到测试人员,都能够更加容易地在整个应用程序生命周期管理(ALM)过程中进行协作。是的,你不再是一个人在战斗!
VS2010的应用程序生命周期管理
Visual Studio Team System为项目团队中的各种角色提供了合适的工具,并且将这些工具以Team Foundation Server为核心整合在一起,增强了软件开发团队中的沟通与协作,使得整个团队不再是单兵作战,而是成为一个有机的整体。
“这十件事情,你VS6是不能做啊,不能做啊还是不能做啊?”VS2010不怀好意的问道。
“罢了罢了,不用再说了!”还没等VS2010说完,VS6就打断了它的话。
“江山代有才人出,各领风骚数百年。真是长江后浪推前浪啊,你VS2010这一身的本事,我VS6是无论如何也赶不上啊!看来我是该进历史博物馆了。喜欢我VS6的程序员们,换用VS2010吧,它会是下一个经典的VS6。”