選擇學習 C 語言、Go 語言、C++11 各有哪些優缺點?


如果非要三選一的話,我覺得還是選C吧。

go可以接著觀望,暫時派不上用場。

C++,我覺得這輩子都不會再愛了。


過去屬於 C,現在屬於 C++,未來是Go的(僅限於高性能網路應用服務端開發,別扯別的)


凡是產生影響的語言,都有一個主流的、成功的平台在背後推動。要麼就是用其實現的,要麼是用其作為應用開發的主力語言

  1. C: 基本上所有成功的OS內核都是C寫的。*NIX / Windows / OSX BSD Subsystem的API也是C

  2. C++: 歷史上最大的推力其實是來自微軟,*NIX社區並不怎麼待見。嚴格的說C++並不是Windows API的語言,只是應用層普遍選擇的語言。這個語言縱然有很多問題,微軟平台上的native應用很少有不用的。不過由於微軟系統的巔峰時代已經過去,這個語言的前途並不明朗;視頻遊戲領域倒是還無可替代
  3. Objective-C: OSX的GUI應用和iOS的API語言,別的地方基本沒人在用。這個語言的問題不比C++小,但是由於Apple的推力很大,目前看相當成功,長遠看難說(走C++的老路)
  4. Go: 尚未有成功的系統為之背書,仍需證明自己。如果Google出一個殺手應用,指定Go做API語言,情況就會大不一樣


一、c好好學習沒壞處的。

二、go是我夢中的語言。看到之後,很多以前困惑的問題都解決了。

三、c++你用的越久,越發現自己越不會這門語言,同時會的部分都已經走坑裡了。我用c++十年以上。所以,不要在c++上花太多時間,有時候也沒辦法很多api是c++的。有了c作基礎,把c++當c來用吧。

總的來說,不建意用c或c++寫太大的業務類程序。他們是用來寫零件的。

================================================================

以下為回復網友關於C++的部分內容:

c++過於複雜了,加入很多炫技的內容。這些內容脫離了事情的本質。用久了之後就會發現很多後遺症。

最明顯的就是所謂的面向對象。基於面向對象的工程如果足夠大的情況下,會帶來很大的耦合度,如果再加上內存管理,多線程等等。項目後期基本上沒辦法維護和增加功能。亞馬遜的一些很牛工程師稱他們內部的大的c++項目叫」屎山,巨大的屎山「。用來形容維護之艱難。

關於c++的語言複雜性,你可以問知乎上的任何一位高手。沒一個敢說自己精通c++.你也可以去看一下所有的c++編繹器,沒有任何一個敢說自己完全實現了c++的標準。不同的編繹器之間實現細節又不同。所以功能再強大沒有實用性,就失去了意義,只會製造更多的問題

學習語言是為了解決問題,如果你花了幾年的時候還是覺得自己在入門狀態的時候,不是你有問題,是這個工具有問題。


Go並沒有接觸過,不敢妄下評論,

但是個人感覺其應用範圍根本與C/C++比

所以,我個人建議,為了未來的飯碗著想,還是選擇C/C++吧

Go可以在以後溫飽後再考慮

至於C++11,你可以參考C++11 FAQ的中文版,有一些介紹

http://chenlq.net/cpp11-faq-chs


無論你打算「精通」哪門語言,我還是建議你學習一下C,這個語言中涉及了很多基礎概念,可以幫助你理解其它各種語言是如何工作的。

C++過於複雜,在相對底層的環境中應用廣泛(和C基本相當),但是在很多新興領域,尤其是互聯網相關的領域,C++很可能會成為項目的痛點,尤其是在項目組成員水平不太高的情況下。

至於Go,我覺得看看即可,Google推出這麼個東西目前看起來好像只是玩票而已,遠不如Apple在Objective-C上的投入大。

話說如果Go不能寫Android程序誰還會去用呢?


C++我覺得主要用來給C提供介面層,做一些簡單的邏輯,或者你來C++來進行模板元編程~那就是另外一條路了。不然的話 C為主 C++為輔 結合腳本語言(bash,python等) 就足夠了


你先確定自己要做什麼吧,去招聘網站看看


不能因為你學不會C++而去詆毀C++,學會C++確實需要3-5年的努力,但是,學會了C++,什麼Java啊,go啊,rust啊,都是分分鐘手到擒來的事兒。

C++不僅僅有OOP,還有范型呢,現在也有了閉包啥的。

非著名相聲演員郭德綱說過,任何功夫,打得不好,都是軟手軟腳的。


c,c++ 你才能直接操作內存,才有機會品嘗內存溢出的澀酒,釀出更多的美酒.獲得仔細謹慎優美的天賦點.

對有經驗的c,c++程序猿來說, 就算是不慎內存溢出生產的損失也比其他語言終生不知道的流失的損失好得多.

說gc什麼的都是為菜鳥考慮的.

我還想說很討厭語言api,基礎類庫設計風格不是小寫c風格的語言.

所以語言第1個請一定要選c,c++. 2者內先c後+

一些人就沒有,所以他們沒有一種真正技術人員所要具備的那種榨乾性能的特點.


從學習的角度來說,這三門語言都有其應用範圍和學習價值。所以我認為都應該學習,即使不常用,有基本的了解也是很好的。何況技多不壓身,從學習的角度當然沒有什麼「優點與缺點」可言。

但是我覺得題主的潛台詞應該是:學哪門語言比較好找工作。這個問題常見於即將畢業的大學生或剛入行的程序員。如果從功利的角度出發,學c++比較容易找工作。其實如果為了入行計,對於想儘快上手的新人還不如java/.net來得快。


C寫出了當今命令式機器里的大部分核心軟體,C++要解決C不能解決的複雜性問題,但C++引入了更多的問題。其中一個最致命的問題,我給它起的名字叫語言友好性。C寫出的庫,很多語言可以使用,這也是為什麼用C寫操作系統。C++寫出來的庫,只能C++自己用,試想有人敢用C++寫操作系統嗎?無論如何,如果你想了解當今軟體里的基本原理,我建議,必須會C,會明白C++里的大部分特性,以及C++的問題。了解Go,思考軟體語言的未來。


你可以去看看七牛雲存儲的項目:

https://github.com/qiniu


為啥我搜911搜出了這個?!


推薦閱讀:

golang中怎麼處理socket長連接?

TAG:編程語言 | C編程語言 | Go語言 | C11 |