標籤:

感覺被C#慣壞了,想實戰運用C++該怎麼入手?

我是個在校大學生,C#是我第一門真正開始努力學習的語言。我在大學以前用VB6做點渣比軟體像玩玩具一樣,用其他語言總覺得彆扭,而現在C#早已代替了它的地位……我在業餘時間愛寫一些小類庫,做UWP應用,甚至在動態網頁上也很依賴於http://ASP.NET。在校期間的幾個自己搞的幾個較大的項目加起來有近兩萬行C#。

可是,我一直沒有斷絕過C++的學習,也看了很多本書,用C++造個好輪子一直是我的夢想。但現在的狀態卻是大概會寫但沒有什麼幹勁去寫,看再多書也覺得C++距離我很遙遠,火候還不到,還不如繼續精進我感興趣的C#項目。我想可能因為C#比C++方便很多。

所以,想問問我該怎樣提高C++的實戰水平,步向漸入佳境的軌道,像輪子哥和其他大神那樣把C++當做自己的本命呢?


我可沒說過C++是我的本命啊,我是不信仰編程工具的,我也不信仰選不同的工具能改變我的學習效率和知識的。我小的時候是從VB做圖形學開始的,有信仰的人肯定不會這麼干(逃

我選擇C++作為開發 Vczh Libraries · GitHub 的語言自然是有我的理由的,但是其中肯定不包括什麼「C++天生就比C#如何如何」的這種東西。

C#自然有很多困難的項目做,譬如說C#編譯器自己——dotnet/roslyn · GitHub 如果你一定要學我的話,就去讀編譯原理,看roslyn,嘗試自己給C#添加一個feature,然後你對語言的迷信就破除了(——王垠)。在這之後,你看別的語言,就沒有那種神秘感了,從而你再也不會被語言束縛。選擇使用什麼具體的語言,也只有爽不爽的區別,而沒有什麼崇高的目的。

當然了,學C++是好事,只是你的態度要擺正。


其實和你要做的東西有關。

我們行業做的東西比較特殊,一開始我是C++入行(當然之前寫過幾年,只是新進入這個行業),耍的那叫一個風生水起。後來做多了就疲了煩了,因為有時候語言細節太多用起來太麻煩啊。

後來開始用Java搞,雖然代碼和命名風格像裹腳布,但是寫起來還算方便,編譯能過就不會出啥內存泄露非法訪問之類的。不會寫了還可以反編譯看看庫的實現,八九不離十。

但是寫多了就發現,這個語言實在是太羅嗦了,寫多了手疼...

一年前,我發現JS也能幹活....

所以硬要把一個工具用在其它地方還是比較困難的,尤其是工作以後。

關鍵還是看需求。


學好c++,基本上先要學好語法和一些基本演算法再說。因為真的可能用得上。

java和c#開發框架比較統一,基本演算法(排序,鏈表之類)都是現成的,但是用c++的時候,有時真的需要自己寫,基本功太差寫起來會比較痛苦。

還要養成比較好的編程習慣。(熟讀《[more]effective c++》《design patterns》)之類的書。

java和c#沒有太複雜的語法如指針,delete,多繼承之類的東西,還可以大量使用try...catch,通常有比較成熟的框架可用。但是c++語法比較複雜,常常沒有框架可用。如果沒有養成良好的習慣,可能會寫出bug非常多,結構非常差代碼,挖坑還要自己填。


拿一個c++的lib,給c#寫介面。


樓主c#學習到什麼程度了呢,我覺得學習了c++是更好的學習面向對象的基礎


推薦閱讀:

就Unity 3D的C# 而言,有什麼是你code review時一看到就是問題的地方?
unity的UnityEngine.dll中extern非static函數是什麼原理??
C#的這個語法是在哪一個版本出現的?
為什麼 C# 應用這麼少?
如何進一步提升自己的能力?

TAG:C | C# |