今時不同往日: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。”
留言列表