寫給從老平台升級或是剛剛進來的菜菜中有選擇恐懼症的童鞋。
個人覺得ms.net的整合思路是一種大膽的創新,整合後的同一平台可以實現跨語言編譯,sdk的內容也很豐富,可以用來彌補windows api和類庫中的一些問題。但是從1.1開始就是個半成品導致後面3.5以後的版本內部實現有很大的變化,但也只是修補以前的不足,為保持連續性也難有作為。枚舉幾個設計問題吧:
1. VB.net 和vb就沒什麼關係,不要想VB6的工程可以順利升級,準確的說這個vb應該叫.net framework for basic 就是用basic語言描述的.net 架構,目前看老的VB工程師升級到JAVA的比較多,但不是很明顯
2. C#.net 就是翻版Java ,IDE中視窗控制項的設計分明就是delphi的思路,其中緣由不難想象,當初微軟 搞C#的時候就是從這兩個陣營中挖的人,VJ因為專利問題沒有搞成,把公事包併到了C#中,所以將很多VJ沒有完成的使命也帶了進來,但是就是弄的C#定位很模糊,對於Java 開發人員C#略複雜,支援的特性比Java多,但是SDK和程式碼程式庫卻不如JAVA的豐富,delphi的開發人員當然不能容忍.net
冗長的類庫和環境,以及不給力的執行效率
3. C++ 從VS6.0 。經過2003,2005,VS2008 到VS2010 個人感覺C++的編譯器沒什麼進步,和VC6時代編譯的差不多,升級主要為了更新OS的一些標頭檔,大概crt對多線程的支援更好吧,那個mfc一向不喜歡,而且越來不好用,不久gdi編程將死,這個mfc也不長了,推薦使用std的庫和開源的第三方的庫,個人推薦boost,使用mfc內建的一些類庫,你會明白,效能那是一個差~~
總結了吧,.net framework 的主要問題在於大而全,就是工藝糙了點,剛開始的1.1版本那效能,那bug多的,能急死你,根本不靠譜,運行起來比vb6解釋執行還慢,基本vb5水平,可能那時候JIT還不成熟吧;
VJ被抹殺後ms路子有點亂C#和VB的特性太多不是好事情,進階語言的任務是把問題簡化,快速實現功能,這把C#和VB弄得再花哨也替代不了C++何苦呢,支援多線程、繼承、重載、代理。。。把一切需要指標做的事情都封裝起來,即使這樣C++的程式員也不會改用C#,反倒是C#和VB的程式員很困惑,太多的特性支援也使得JIT最佳化的難度加大,有些費力不討好
- .net framework 1.1 和 2.0 都是半成品 3.5開始才靠譜起來,只是覺得太晚了,如果當初的1.1是3.5這樣的,現在的.net 應該已經很不錯 ,或許是受vista的拖累吧。。。身不逢時啊;
- .net framework 應該分為核心庫和擴充包,這樣更好一些,反倒ms在命名空間和版本協同上下了很大的功夫,讓人費解;
- .net framework 上整合太多過時的特性和技術,相信隨著技術應用的轉型,這些都需要做調整以適應發展的要求。
順便提一句JAVA如果繼續整合特性今天加個泛型明天支援個閉包,不在jre、gc、SDK上下功夫早晚要步C#的後塵
---------------------------------------------
我心中理想的.net framework 包括
C++ (這個不可替代),希望多一些可以跨平台的考慮(windows、linux、mobile os)CPU x86 x64 arm
C# (整合VB VJ VF)致力於中等規模應用開發:布局簡潔、代碼高效,結構清晰 。易於同其他語言進行整合,不是現在的Unmanaged 程式碼模式
?? 敏捷模式,用於小型應用、WEB開發和移動開發,需要一種通俗、簡單、敏捷的程式設計語言,更接近於自然語言和自然邏輯,很顯然目前go 和RoR 都是這個方向的