經驗分享!資深程式設計師大佬告訴你,如何成為一個C++高級程式設計師

2021-01-15 韓語學習資訊

C++這門語言從誕生到今天已經經歷了將近30個年頭。不可否認,它的學習難度都比其它語言較高。而它的學習難度,主要來自於它的複雜性。現在 C++ 的使用範圍比以前已經少了很多,java、C#、python 等語言在很多方面已經可以代替C++。但是也有很多地方是其他語言完全無法替代的,主要集中在需要運行效率比較高的行業,比如遊戲、高效的伺服器。

現在學習 java、C#等語言的人數遠遠高於C++,主要是 C++ 的入門門檻太高,可能學習了一段時間後還做不了什麼東西,導致信心大受打擊,進而放棄。

我想把我自己的經驗分享給大家,希望幫助新人少走些彎路。

在此我們不討論具體的技術細節,只說我們應該學習什麼東西。

一、技術能力

1. 語言

我們要成為一個程式設計師,學的東西會很多很雜,但是最開始一定要從語言開始學習,而學習語言最關鍵的莫過於選好一本書,學校的教材就算了,根本沒 有寫得好的。在此隆重推薦《C++ Primer》,這本書很厚,內容也很豐富,對知識的講解不僅僅停留在表面。如果這本書能有耐心看完,語言方面基本就沒有什麼大問題了,對以後的學習也打 下了一個很好的基礎。

2. GUI

想要學習交流C/C++,可以私信小編 發C++ 獲取資源和一個程式設計師交流圈。

3. 數據結構和算法

很多人都忽視了數據結構和算法方面的知識,尤其是一些程式語言的庫做得非常好,幾乎不需要自己去實現一些數據結構和算法,導致現在很多程式設計師不 重視甚至忽略這方面的知識。但是,當我們想讓我們的程序跑的更快、內存佔用更少的時候,這些知識就非常非常重要了。很多程式設計師都是剛開始的時候不重視這 些,但是工作幾年後又來補習這些知識。

最開始可能不需要學習的太深入,但是基本的數據結構和算法一定要知道。

推薦《數據結構(C語言版)》,在數據結構和算法的學習中,最好不要去關心面向對象方面的技巧,就用C語言來實現,這樣能更關注於算法本身的內容。

4. 資料庫

學習資料庫的基礎知識,並且掌握一種資料庫使用,推薦使用 mysql,而且最好不要用一些封裝好的接口,而應該直接用 mysql 提供的資料庫 api,可能對資料庫了解的會更深入。

5. 並行

cpu 主頻已經不能遵循摩爾定律了,現在 cpu 發展的趨勢是多核心。無論是多線程,還是多進程,都是為了更好的利用 cpu 的性能,提供更好的用戶體驗。這就要求我們如果要寫出高效的應用程式,必然要涉及到並行計算。多花些精力在並行計算上吧,一定會有豐富的回報。

6. 網絡編程

這裡所指的網絡編程是指 socket 編程。現在 C++ 的應用很多都是在做伺服器開發,如何開發一個高並發、大吞吐量、高穩定性的伺服器就是我們要考慮的了。

7. 設計模式

設計模式不是具體的技術,更多的是如何讓代碼更容易閱讀、更好擴展、更容易使用。

8. 庫的使用

C++標準庫僅僅提供了一些很基本的功能,所以我們經常會引入一些第三方庫。最著名的恐怕就是被稱為準標準庫的 boost 庫,它提供了我們編程中用到的各方面的技術,文本處理、算法、網絡、多線程、圖像處理等等,幾乎無所不包。其它也有一些專著於某一方面的庫,比如 ACE 是網絡通信方面的,TinyXML 是解析 xml 的,OGRE 是圖形渲染方面的。

9. 作業系統的知識

程式設計師需要了解的作業系統知識和普通用戶是不一樣的,一個高手是需要深入了解作業系統的方方面面,而不是停留在使用層面。至於應該了解哪些知 識,windows 上的去看《Windows 核心編程》,linux 的去看《深入理解 linux 內核》,應該可以知道自己應該學什麼了。

二、項目經驗

以上的內容如果都精通了,也算是個比較厲害的程式設計師了。但是對程式設計師來說,項目經驗更加重要。一個好的項目可以讓你把各種技術進行綜合運用,並且能學到一些新的知識。比如說做遊戲的就需要學習圖形方面的知識,做播放器的要學習編解碼器方面的知識。

很多程式設計師會忽略項目的經驗,而單純的談技術能力,這是錯誤的。其實這就是理論和實踐的關係,技術就是理論知識,做項目就是實踐,理論對實踐有知道作用,實踐能加深我們對理論的深入理解。

三、溝通能力

溝通能力是一個高級程式設計師要具備的軟實力。

我這裡想說的溝通能力並不是一般說的能說會道,誇誇其談,說話天花亂墜。而是建立在技術基礎之上的溝通能力。

關注小編,主頁發私信「程式語言」可以獲得你想要的各類程式語言方面的資源和交流圈子喲

在這裡,我們分享程式設計師相關技術,職場生活,行業熱點資訊。不定期還會分享IT趣文和趣圖。這裡屬於我們程式設計師自己的生活,工作和娛樂空間。

相關焦點

  • 高級程式設計師是如何從初級程式設計師演變的?工作經驗不再是唯一途徑!
    如果按照工作經驗對軟體開發人員進行分類,可能是這樣的: ● 初級:2-3 年工作經驗 ● 高級:10 年以上工作經驗 ● 中級:介於初級和高級之間 這種按工作年限的分類存在一個問題。
  • 是什麼成就了一名「高級」程式設計師?
    除多年編程經驗之外,還有什麼能區分一個程式設計師是「老手」還是「新手」?編程技巧當然是一部分,但它絕非是全部。聰明的程式設計師可能比他們的同行擁有更出眾的編程技巧,但那不足以說明他們就是「老手」。同樣,僅僅因為擁有10年編程經驗也並不意味著他們就是高手。在工作崗位上,擁有多年編程經驗也不能說明問題。即便沒被炒魷魚,那也不能提升你的價值。
  • 普通程式設計師與高級程式設計師有什麼差別?你知道嗎?
    要成為一個工程師,首先要有一顆渴望成為工程師的心,因為我們根本不能奢望一個從沒想過成為工程師的人成為一個有實際工程能力的人!程式設計師的基本能力是:Tasking和學習能力。當好程式設計師的能力是:用更好的方法來實現功能。0.文檔能力「文檔是第一生產力」,這一點在程式設計師的世界是毫無異議的。
  • 資深程式設計師認為的成功十大黃金定律
    人才對成功來說至關重要,而且人才和天才還是不一樣的,天才大部分是要有天賦的,而人才即使你沒有天賦,遵照規律發展,通過後天努力也可以達到。  如何才能成為一個頂尖的程式設計師呢?Java頂尖程式設計師Lukas Eder和我們分享了偉大程式設計師應該具備的十大特質,他表示這十大特質並不是偉大程式設計師所特有的,任何領域的領導者可以說都有這些特質。
  • C++程式設計師的職業生涯規劃
    原標題:C++程式設計師的職業生涯規劃 筆者就近幾年的網際網路發展發展,通過在各大就業招聘網站上檢索到C++職位的相關要求,歸納總結出幾大發展方向。給正在成長的C++程式設計師一條指引,當然也只是個人整理,僅供參考 一、C++伺服器程式設計師(流媒體後臺,遊戲後臺,高性能伺服器後臺) 1. 精通C++,STL,Linux等,熟悉設計模式; 2. 熟練掌握一門腳本語言(Lua, Python, Perl等); 3.
  • 國外程式設計師推薦:每個程式設計師都應讀的書
    源於2008年8月4日,StackOverflow 網友 Bert F 發帖提問:哪本最具影響力的書,是每個程式設計師都應該讀的?「如果能時光倒流,回到過去,作為一個開發人員,你可以告訴自己在職業生涯初期應該讀一本, 你會選擇哪本書呢?我希望這個書單列表內容豐富,可以涵蓋很多東西。」
  • 【開講啦】產品經理和程式設計師的那些「恩怨情仇」(附PPT下載)
    網際網路行業近10年的從業經驗,資深CTO、攻城獅,2010~2012年作為合伙人創立國內第一家APP在線生成平臺《完美e端》,2013~2014年在TagAlong(同遊網)擔任CTO職位。曾獲得盛大《2008Widget設計大賽》、淘寶《2011移動電商應用開發大賽》、創業邦《2011微創業計劃大賽》等眾多獎項 。
  • 程式設計師「不惑」的 30 歲到了,就該給年輕人讓位嗎?
    別擔心,小探今天就請了一位前谷歌資深工程師 Yan 來跟大家討論討論,工作了1年、5年、10年的程式設計師們,該如何規劃職場和提升自己。Yan 曾在谷歌連續三年獲得「Top performer」的稱號,也曾擔任技術面試官。最好的提升在工作中IBM 想靜靜裁掉 40 歲以上的員工,顯然沒法靜靜。。
  • 初、中、高級程式設計師的進化之路(前端)
    本文轉載自【微信公眾號:前端人,ID:FrontendPeople】經微信公眾號授權轉載,如需轉載與原文作者聯繫初級程式設計師僅能完成簡單模塊和項目的開發工作,難以勝任複雜模塊的開發。通常是入行不久, 1 年及以下工作經驗的同學。能力要求熟悉前端基礎知識如 HTML、JS、CSS 。能夠使用一門 MVVM 框架進行簡單的業務開發。
  • 程式設計師:高級與低級程式語言,您應該學習哪些內容?
    當你試圖找出要學習的程式語言時,你可能會遇到高級和低級的術語。人們一直在談論高級和低級程式語言。高級和低級程式語言在整篇文章中,我將討論「高級」和「低級」語言。但兩者都沒有具體的資格標準。這就是為什麼我還要談論「更高」和「更低」的水平。
  • 程式設計師是做什麼的?未來計算機變得智能,就不需要程式設計師了嗎?
    很多人認為計算機變得如此智能,所以在不久的未來將不再需要程式設計師。計算機將我們的文明推入一個新的水平,使我們的生活更有意義並充滿樂趣,還彌補了我們大腦的缺陷。很可能計算機比人類更聰明。(不過,我有點關心如果這成為現實後,計算機還需要人類程式設計師嗎?) 現代計算機具有完全邏輯性、直接性和順從性。如果你知道它應該做什麼並且知道如何命令它,那麼和計算機一起工作是快樂的。唯一的問題是,計算機只會做你告訴它去做的。
  • 全棧開發永遠成不了高級程式設計師?!
    【CSDN編者按】對於程式設計師來說,選擇深耕單一技術還是各領域涉獵一番是二選一的必考題。如果你是後者,那恭喜你成為很多開發者豔羨的全棧工程師了!你會很受歡迎,很多技術問題上都需要你的參與。但是,一個殘酷的事實是,儘管你付出了巨大的努力,但是一旦遇上大神你仍然不配稱作高級開發。本文的作者曾經幻想自己會成為無所不能的技術大拿,但是「囫圇吞棗」的學習卻讓他和同事的實力越拉越大。
  • 世界頂級黑客一定是很牛的程式設計師嗎?
    要成為真正的黑客,本身必然是出色的程式設計師,黑客技術是變成中的某一類別。沒有真正的黑客技術,只是利用了一些BUG,下面來看看頂級黑客是否是一名出色的程式設計師凱文.米特尼克第一個被美國聯邦調查局通緝的黑客。被標上太多很牛的標籤了,第一個,美國聯邦調查局,黑客。感覺牛到不行米特尼克很小就迷上了無線電技術,並學到了高超的計算機專業知識和操作技能,所以不可否認他是個很出色的程式設計師。
  • 被嫌棄的35歲程式設計師
    但對程式設計師這個群體來說,35 歲的危機感似乎格外重一些。「因為程式設計師的工資普遍高於其他行業,一旦這個行業不要你了,(薪資)可能會面臨斷崖式下跌,所以才會有危機」,資深程式設計師趙可(化名)說。35 歲是一道界限分明的職場分水嶺,最尷尬莫過於「高不成、低不就」。
  • 程式設計師的這108個笑話 你都看得懂嗎?-程式設計師,笑話,編程, ——快...
    15、殺一個程式設計師不需要用槍,改三次需求就可以了。16、C++程式設計師看不起C程式設計師,C程式設計師看不起java程式設計師,java程式設計師看不起C#程式設計師,C#程式設計師看不起美工。周末了,美工帶著妹子出去約會了,一群SX程式設計師還在加班。17、問:如何生成一個隨機的字符串?答:讓新手退出VIM。18、「我給你出個腦筋急轉彎,你說達文西密碼的上面是什麼?」
  • 50%是招聘,50%是培訓,100%是程式設計師
    以下是虎嗅Pro對虎跑團前沿技術團員——張雲浩專訪實錄分享:  Q:國內企業經常招不到合適的或者能力足夠好的程式設計師。問題可能出在哪裡? 張雲浩:這裡有很多流程上流失的問題,一個是流失,一個是選錯,會有一些機會成本的問題。
  • 好與壞的程式設計師:如何客觀評價程式設計師的水平?
    這發生在幾千年前的對話是不是靠譜我們不知道,但是拿這話來套程式設計師的生態圈,真就是一套一個準。2微軟某個大牛軟體下面兩個不同的組裡各有一個大牛程式設計師,為了不失一般性,我們叫張三和李四吧。張三的特點頗有點大哥的風範,偶爾也充當一下二哥。寫的程序嚴謹,測試也很嚴謹,幾乎不犯錯。組裡其他同事有錯的,也在出大事之前默默的修掉了。
  • 初中學歷可以轉行做程式設計師?
    初中學歷可以轉行做程式設計師,但是能否有更好的發展很難說。我本人普通本科畢業,做了六年程式設計師,而且我本科期間所學專業也不是計算機,後來成為程式設計師也是自學轉行的,自認為轉行做程式設計師並不難。雖然題主你目前只有初中學歷,但是想成為程式設計師其實也不難,以我的經驗,只要26個英文字母認得全,有一點英語基礎,去培訓機構培訓三個月,基本就能寫程序,成為一名初級程式設計師。
  • 中國程式設計師 VS 美國程式設計師,差距就在這五點
    什麼技術火就學什麼,然後進入一個大公司,做幾個成功的項目,積累工作經驗,幾年以後自己當個小管理,拿著十幾萬,或幾十萬的工資,再無追求的過著小日子就好。甚至到了30歲,如果沒能進入管理層,大多數人都會考慮轉行,或僅靠自身的知識累積開始創業。美國程式設計師大多數都是因為熱愛編程行業而從事這份工作的,他們會專注某一個領域幾十年。
  • 看看國外程式設計師怎麼說
    30歲以上的程式設計師有哪些方式可以保持活躍在在技術崗位上,而不必轉向人道主義(管理性)的方向?像 @bubba 和 @ash 說的——一定要從你的經驗中學習。你已經擁有並且將繼續獲取行業中的一些模式和學習經驗,這些模式對於如何以更有效,低風險的方式進行此工作是很好的參考。 正如兩位大佬所說——聘請經驗更豐富的工程師,因為他們從(痛苦的)經驗中學到了經驗。