該如何有效的提高C C 語言程式設計能力

2022-06-10 06:15:06 字數 1099 閱讀 4293

很多答案都談到演算法的重要性,我的答案主要集中在c++上,只是一些個人經驗。

其實我以前也有這樣的困惑,感覺完了不知道怎麼用。而且我也不是學計算機的,也沒有從事相關工作,所以大概有十年的時間都沒寫什麼程式。最近因為想做點東西,所以又重新開始寫。

剛開始用的是python,比較好學。但是因為神經網路計算量太大了,用python效率不太夠。後來用matlab寫,matlab也比較方便,矩陣運算優化得很好,但是太耗記憶體了,我的破機器沒法處理那麼多資料。於是後來就開始用c++。

c++是相對而言比較容易出錯,我一般碰到問題就去stackoverflow查查,基本上都能找到答案,如果沒有現成的,就問一下,一般半小時以內就會有人回答,所以總體還是比較方便的。

c++在記憶體管理上有比較大的靈活性,很多時候程式的效率可以從這裡發掘出來。同樣的演算法,因為可以方便的管理記憶體,所以效率會有很大提高。比如使用指標可以減少不必要的變數複製,但是指標也容易出問題,所以有些時候能有替代的,就用替代的,比如傳遞引數時可以是引用,遍歷陣列的時候可以用迭代器等等。這些都可以提高記憶體使用效率,同時安全性也更高。這樣的問題在python等語言中都是不需要考慮的,因此在大量資料和計算的時候,python也很難達到c++的靈活性和效率。

c++的另外乙個特點是語法特徵很豐富。因為很豐富所以也很容易搞錯。我自己給自己設定的原則是,如果有簡單的特徵就不用複雜的特徵。比如我很少會用到物件導向的繼承,因為繼承往往會讓類的層級變得很複雜,這時候如果用模板或者友元可以簡化問題,那就不用複雜的。不僅是功能要解耦,還要資料型別和演算法盡可能分離開,設計好介面,無論使用c++中哪種正規化的語言特徵都應該以這個為目標。

光自己寫也不行,還是得看看高手的作品。一般開源專案都比較複雜,水平也參差不齊,文件也不一定完善。我自己學習的過程中看的是sgi stl的**,感覺還是很厲害的。侯捷有本書可以作指引。stl作為乙個基礎庫,既要功能強大,又要提高效率,這是多麼難的事情。以我這樣的菜鳥水平,只能用大開眼界來形容了吧。

另外,演算法雖然很重要,但是很多實際專案中,演算法基本是固定的。再比如大規模計算時,要使用到gpu,很多精妙的演算法完全用不上,反而越簡單的演算法越容易並行化。

所以我感覺,學習的重點除了演算法,還要注重程式設計簡潔清晰,記憶體使用合理,如果有必要還可以針對具體硬體進行優化。

大概就這麼多了。。

DDOS和CC攻擊該如何有效防禦

一 常見的 攻擊有兩種 1.cc攻擊 也是流量攻擊的一種,cc就是模擬多個使用者 多少執行緒就是多少使用者 不停地進行訪問那些 需要大量資料操作 就是需要大量cpu時間 的頁面,造成伺服器資源的浪費,cpu長時間處於100 永遠 都有處理不完的連線直至就網路擁塞,正常的訪問被中止。2.流量攻擊 就是...

如何提高C語言的程式設計能力

1 學好c語言,你可以很好地應付任何一種程式設計工具。2 一定要多上機練習,通過程式了解相關知識。幾經反覆方得正果。3 不要把學習c語言當成一種任務,更不要把它看成很難完成的任務。要充滿自信,只要是乙個智力正常的人都能學好c語言。始終保持遊戲的心態,多發現其中的樂趣。當感到程式設計趣味無窮,那你在電...

新站該如何進行有效的推廣

可能好多人都開始感覺到現在的新站不好做了,但是不管哪個行業都是適者生存,劣者被淘汰。所以,做任何事都要對自己有信心,有信心後做任何事成功的機率就越高。第一 前期通過投稿的方式,提公升 的知名度 大家都知道如今對新站的考核期越來越高,那麼宣傳前期也一定要進行高質量的宣傳。對於新站前期進行廣撒外鏈的做法...