在我看來,各種語言核心邏輯部分的代碼量都差不多。區別在於基礎庫的完善程度和語言本身帶來的開發調試效率差別。
即使對c++很熟悉,開發效率依然比不上c#,因為將來做策略開發,會頻繁的修改程序,然後運行,而c++的編譯速度太慢。另外,c++語言和開發環境決定了其調試的代價過高,綜合下來,c++開發ctp的效率要遠低於c#。
我自己的感覺,用C#開發,絕大部分時間是用於業務邏輯,而C++很大壹部分時間是用於解決語言和環境直接、間接帶來的問題。
從效率方面來看,經過我的簡單測試,相差不大(不超過20%),因為stl和boost範式鼓勵在棧上創建對象,對象復制的開銷很顯著,而C#中傳引用的方式則沒有這個代價。此外C#中創建對象的代價要小於c++堆中創建對象的代價。
當然,相對與C++,c#的限制要多壹些,比如跨平臺(mono相對不成熟),c#模板、運算符重載的約束比較嚴格等。總的來說,我傾向於C#。
對於Python,我在寫復雜系統的時候感覺比較吃力,尤其是在做面向對象的架構時(面向對象機制不完善,也沒有函數重載)。沒有靜態類型檢查,時間長了,代碼反復修改之後,不知道會有什麽陷阱。而且因為動態類型,編輯器的自動完成和提示也很弱,以前的函數要什麽參數要看著代碼想壹會才能想起來,很影響開發效率。
所以,我現在又回到C#了。
我的建議是,除非對C++及開發環境用的很順手,並且積累了完善的基礎工具庫,否則用C++的代價很高。