回覆列表
  • 1 # 山海皆可平z

    我先回答問題,這個精通的定義是什麼,恐怕每個人心中都有個版本,但是我還是想來談談這個問題。

    首先精通的基本就是紮實掌握c++基礎,瞭解它的特性和優勢以及劣勢,這樣你對這個c++有一個客觀的認識。

    這點也可以歸結為“技巧”,技巧就是外在的東西,透過短時間的針對訓練可以掌握,就是形於外的東西,具體比如c++的語法,基本的使用方法,基礎的類庫等等,這些東西形於外的東西。

    還有就是內化的東西,這個就是程式設計思想了,是利用外在的工具和技巧,怎麼最最佳化實現需求的思想,這個程式設計思想是相對於外在的技巧來說的,只有程式設計設計思想OK,那麼才能符合設計要求,才能做到最最佳化實現。

    只有“技巧”和“思想”結合起來,兩個都要硬,這樣才能實際程式設計中游刃有餘,真正做到融會貫通,這樣才是精通的境界。

    高手過招

  • 2 # 豬頭思維

    獨立寫出一個 C++ 編譯器工具鏈(預處理-前端-後端-標準庫)。

    這是少數有效的充分條件。

    ps. 有鬼佬推出了它的認證:C++ Grandmaster Certification [CPPGM

  • 3 # 渴望遠方的小小鳥

    學、無止境、學習的時候之後能理解意思會用是一種精通、工作的時候能完成任務是一種精通、能完善、最佳化專案是一種精通、能有自己擅長的領域是一種精通……

    只要有提高都是在不同程度精通自己的技術、所以、定目標吧!祝你在入坑的路上越陷越深!

  • 4 # 苦苦tt

    我覺得問法可能有點問題,c++只是一個語言,一個工具。類似於木工的刨子。

    重點關注不是怎麼熟悉工具,而是利用工具做出什麼樣子的成品。

    當一個木工會用刨子後,鋸子,錘子,都可以輕鬆搞定。

    學習語音本身不是學習語法,而是去做東西,嘗試去做東西。

  • 5 # 急速馬力快de原始碼控

    一個非常好的問題。C++是主流開發語言,應用非常普遍,不同的業務場景會用到不同的知識點。

    一,怎樣才算精通?

    其實這個問題應該這麼說,學無止境,你準備學到什麼程度?

    1,初級開發工程師

    開發完成分配的任務,只要按照要求做就行了。專案框架都是已經搭好的,不需要考慮使用什麼樣的框架,甚至怎麼用、怎麼寫都有明確的要求。

    2,中級開發工程師

    相比初級來說,發揮餘地稍微大一點,比如開發實現一個功能,就要多考慮一下,使用什麼樣的資料結構更高效,是否使用Set、List或者HashMap?

    3,高階開發工程師

    有些技術公司和團隊對高階工程師的定義標準是非常高的,比如為什麼要選擇這個架構或者設計模式?優缺點、效能和擴充套件性好不好?部署維護是否方便?資料備份方案是否完善等等。

    二,有比較才有定位

    推薦一個線上程式設計網站,HackerRank,看名字就知道很牛,Hacker排行榜,不僅提供了很多針對初學者的程式設計練習題,還有成績排名、程式設計競賽、勳章標記等。

    1,註冊賬號,登入,選擇要學習的程式語言

    2,選擇題目,可以設定難度和功能分類

    3,編寫程式碼

    4,執行測試

    5,提交程式碼,透過單元測試用例後,得到評分

    6,積累到一定分數後,獲得C++勳章

  • 6 # 火山口

    初級:你只能做做抄寫題。

    根據例程,或者相似案例的拆分組合,來解決自己的問題。對各種函式、資料結構的應用,知其然而不知其所以然。

    中級:你開始嘗試做思考題。

    在各種學習和工具的應用中,逐步開始揣摩和思考。為什麼要用這個函式?為什麼是這種結構?這個功能函式的底層演算法到底是怎樣的?還有沒有更靠譜的玩法?如果讓我用基礎函式或者彙編來重構這個第三方庫的功能,我能不能實現,我該如何實現?

    高階:你已經有資格做選擇題了。

    面對各種問題,你都不止一種解決方案。你會根據開發要求的效能或者可靠性或者安全或者開發週期等,來架構你的程式,選擇解決問題的辦法。你有無數的辦法來解決問題,對每一種解決問題的手段你都瞭如指掌。

    頂級:返璞歸真。

    你已經無法忍受現有語言工具的各種侷限。哪怕是自己用C++的基礎函式寫的功能庫也讓你嫌棄的不行。於是你降級到C。

    你又慢慢發現C的效能表現也無法達到你心中的完美。於是再次降級到彙編。

    慢慢的你發現CPU機器碼的序列執行方式依然是垃圾!於是開始琢磨FPGA,甚至開始琢磨分立電路,琢磨半導體PN接面,開始思考自己設計CPU。。。

    當你把所有這些都搞通搞透,你差不多已經一百多歲了,你一個人就是一整條電子技術產業鏈。因為沒有人能夠活那麼久,所以你只能想辦法把你的知識進行切割分層,有做積體電路的,有做CPU的,有彙編的,也有高階語言的,,,當然,因為你是一箇中國人,所以你重新設計了一套語言,效率比C還高,功能與拓展效能比C++還要強大。

    努力吧,騷年!你的未來是星辰大海!

  • 7 # abcdefghi98765432101

    c++是個複雜的融合體,面向物件和c語言。

    面向物件基本語法特性之上就要談到設計,設計是個沒啥標準答案的東西,目前業界還是認可設計模式,這個也確實是個起步的水平,也就是最起碼要熟練掌握靈活運用基本的設計模式。更高等級就是自創了,做一些更適應自己團隊的創新。

    如果專案選擇c++,基本是有特殊需求,比如實現影象處理,音影片處理,底層第三方包要求語言和效能要求。

    以前網路程式設計也基本是用c++,現在java最佳化的很不錯,比如netty。

    如果談到效能,問題就複雜了,作業系統知識是必須的,知道如何最佳化程式。還有一些更為專業的高效能加速計算最好也掌握。加速就不是傳統c++的範圍。

    不過我前段時間翻閱opencv程式碼發現最佳化實現有中國的影子,作者寫的是中國科學院軟體研究所,是演算法實現的對應opencl版本,大概10多個演算法的實現。

  • 8 # 黑馬程式設計師

    C++語言學透是不可能學透的,這輩子不可能學透的,C又不會用,就只有學學C++,維持上班不忘記這樣子。

    每天晚上我都要學習C++,就只有網上找找女朋友,我才會不去看看C++這樣子,可我找不到,學C++時候感覺各個知識點都好難,比找女朋友難多了,學C++時候又只有我一個人學,他們都組團一起去學java了,一個人孤單學習也找不到女朋友一起玩。

    去學java之後感覺各個都很有趣,寫的又簡單,還很容易實現,超喜歡java的。

    剛畢業一兩年時候,還能天真無知說著自己,熟悉C++,甚至說精通C++,而工作為五六年,卻發現自己都還不配說自己精通。這輩子都感覺不會精通C++了,畢竟C++在你學習時候也在悄然迭代,就跟社會一樣,你猛地追趕,最後才發現你永遠慢人一步,學會了放下。

    越難得到的東西越忘不了,好比越渣的人越令人牽腸掛肚,所以放棄吧,你永遠不可能精通C++,能做的就是熟練跟上這個磨人小妖精的步伐。

    C/C++詳細圖解

    資源

    輕鬆掌握C語言影片教程(會打字就能學會) 對應1、2、3、4知識點。

    C++基礎完整影片 對應1、2、3、7知識點

    C語言資料結構 培養架構師思維 對應4、5、6知識點

    C++核心程式設計_打造你的核心程式設計技能 對應1-9知識點

    QT介面開發 對應1、2知識點

    MFC 對應3知識點

    linux系統程式設計 對應上面所有。

    伺服器開發之linux網路程式設計 對應所有。

    最後的實戰專案網上一搜一大把

  • 9 # 黃河邊

    怎麼天天有這問這些問題呢?只要你經常類定義類之間的關係繼承模板,能夠把能夠做專案就可以說精通了。不在於你多精通語言,而在於你的程式構架能力,C++只是一個工具。拿到一個專案,你可以經過分析,知道里面要定義多少個類,這些類之間有什麼關係,有什麼層次關係,這些類怎麼去組織,如何持久化,和資料庫怎麼關聯。這些才是最根本的東西,具體是哪種語言差別不大。

  • 10 # 灰棕熊

    C/C++ 體系最大的痛點就是崩潰和洩漏。

    據此我們可以把C/C++水平分為三個級別。

    新手:自己搞出了崩潰洩漏卻不承認或者無力解決,只能請別人來排查甚至扔掉重寫。這和他寫過幾年,寫過多少PPT會啥啥思想啥啥架構都沒關係,他還在崩潰洩漏,那就是新手。

    老手:所謂各掃門前雪,已經能夠避免自己的程式碼出現崩潰洩漏。然而通常系統不是一個人能寫的,隊伍裡其他成員的惹出的禍端,則是他搞不定的。

    專家:自己的程式碼不會有事,別人的程式碼/模組/元件出了事也會請他來調查,而且多半能查清。

    通常中小公司如果有C/C++開發維護的業務,總會有一到兩個專家存在。

    題目中的“精通”,我的理解就是這裡的專家級。

  • 11 # Alpha天啟

    c++是一個強大的語言,但是它不是一個完美的語言。cpp有很多缺點,如果你非要說精通c++那你精通匯編就可以了。語言只是工具,取他好的一面就行,看需要實際做出東西就行。要說精通拿自己的專案和作品說話,使用者才不管你用什麼語言呢。

  • 12 # 編碼之道

    很有意思的問題,作為一個主要使用C++做開發超過十年的老碼農,來聊聊我個人的一點看法。

    這麼說吧,C++是一門極度複雜的語言,而且隨著新標準的提出,這種複雜性還在不斷的增加中,所以說什麼程度算是精通C++語言,其實是一個無法給出明確答案的問題。比如就我來說,使用了十多年的C++,可以輕鬆的使用C++設計一個方案並實現,比如用它實現過影象處理SDK,也用它做過IDE開發,即使如此,我也不敢說自己已經精通C++。原因很簡單,你對這門語言的理解越深,也就越能發現諸多的不足,既包括自己的不足,也包括語言本身的缺陷與不足。舉個簡單的例子,我最開始學習的標準是C++98,可是後來又出現了C++03、C++11、C++14,甚至還有C++17,對於這些新標準出提出的內容,說實話,有些聽過,有些甚至都沒有聽說過,更別說在實際應用中使用了,以此來說很難算是精通C++了。

    不過話又說回來,有很多使用了多年C++的程式設計師,有著和我類似的情況,他們可以輕鬆的使用C++開發一個應用程式,但是C++中依然有他們未曾觸碰的領域。所以我認為C++語言變得越來越複雜,想要完全掌握除了編譯器和C++語言專家,其他人是可望而不可及了,要不然就連Linux之父——Linus Torvalds也會炮轟C++,說它是一門糟糕(horrible)的語言。

    綜上,我認為想要給出一個明確的精通C++語言的標準,是一件費力不討好的事情,學習任何語言都是為了解決實際問題,所以只要你能夠使用C++語言開發出好的應用,你就是一個合格的C++程式設計師。下面是幾條熟練使用C++的需要掌握的技能:

    1、最基本的要求自然是熟練掌握C++的基本語言,包括常用的和不常用的;

    2、因為C++是一種面向物件的語言,所以要掌握面向物件程式(OOP)設計思想;

    3、能夠使用C++描述常用的資料結構,並實現在這些資料結構上的各種操作;

    4、理解C++物件模型,比如物件指標、虛擬函式表等內容,以及類的構造過程,以及在此過程中編譯器會在背後做那些事情等等;

    5、能夠使用C++做程式設計,這裡除了基本的OOP思想外,最重要的是熟練應用設計模式;

    最後,再對C++發一點牢騷,雖然我還在使用C++做開發(部分任務已經使用其它語言),但是我認為C++是一門尷尬的語言。談效率吧,它不如C語言簡單直接;談面向物件設計吧,它又不如C#、Java等純粹;談開發效率吧,它又不如Python高效……太多的功能如模板、智慧指標、多重繼承等讓這門語言變的越來越複雜,所以我是越來越不喜歡C++,並且建議程式設計師不要將C++作為首選開發語言。

  • 13 # 阿耨多羅

    C++之父都說自己不精通C++ 誰敢說自己精通了? 上千頁的C++特性和標準, 沒人全部用過,更不用說用得很熟練了。 而且這些特性還在不斷增加。 而且其中一些特性之間還存在著矛盾, 有人敢說自己精通C++, 不是騙子就是段子手。

  • 14 # RaymondIT

    你可以說精通C,精通Java,精通PHP,但是敢說精通C++,要麼是沒入門,要麼是腦子發熱了。

    C++,太複雜,還不停地變。你閉關苦練C++,自以為功德圓滿,可以稱為武林盟主了,一出關發現已經看不懂最新C++的程式碼了……

  • 15 # 噴子來啦好熱鬧

    我覺得應該具有以下幾點才配叫精通

    1. 熟悉C++標準庫常用資料結構並知道內部實現機制;

    2. 熟悉C++常用設計模式並能靈活運用到專案中;

    3. 經歷過三個以上成功專案且多人團隊合作開發經驗;

    4.能看懂開源專案並進行修改;

    5. 熟悉C++每個版本新增特性;

    6.熟練掌握VC,GCC,llvm+clang等編譯器的使用。

  • 16 # 心動不凍

    c++我認為是完美的程式語言,面向物件,範型,函式式,特別是完美的模板技術,內建純函式式語言的模板超程式設計,完美。程式碼的抽象度很高,越來越多的宣告式語言元素,同樣功能程式碼量需求少,可維護性強。

  • 17 # qinzhang1

    不要問這種問題,也沒有意義。以《c++template the complete guide》為例3個作者一個做編譯,一個做stl,一個做應用。每個人都有不懂的東西。不要想著學。動手寫有用的程式。有用比什麼都重要。

  • 18 # 打麻將不

    程式語言就想一個物質豐富的廚房,而你就是那個櫥子。燒的菜合不合客戶胃口,光認識油鹽醬醋是不行的,你得懂得如何精心構造食材,絕對不要發生橘子炒雞蛋這種情況。

  • 中秋節和大豐收的關聯?
  • 學書法怎麼進步快?