回答者卡特·佩基(Carter Page),谷歌(Google)工程經理
我的答案很短,但是由于這是一個需要站隊的討論,所以我先要介紹一些背景。
我聘用過許多軟件工程師,他們身上最有價值的技能就是學習并迅速掌握一門編程語言的能力。
幾年前,有一家境外公司為我們提供Java程序,他們的質量一直不太穩定。我可以通過翻閱簡歷來打造一個遠程團隊,但是我沒法和他們進行面試,因為他們不會說英語。不過這種限制倒是帶來了一個有趣的實驗。
這些程序員的簡歷看起來很不錯,都有著幾年的工作經歷。但是,他們寫的代碼依然有bug,不順暢,結構組織也不好。作為一種實驗,我開始聘用會 C++語言的程序員。他們之中有的人不會Java,但是我愿意給他們一周的帶薪學習時間。在同事的幫助下,他們學習了這種新的語言和習慣用法,并變得和我 們一流的Java程序員一樣優秀。
所以我的簡短的回答就是:學習C語言或C++
你可能永遠不會在工作中用到它,但是卻可以因此受益終身。那些需要頂級程序員來解決的大難題或多或少都會涉及到一些基礎的C語言。
用C語言開發的有:
用ANSI C開發的Java虛擬機
用C語言開發的Linux(有些還包括其他語言,但是C語言最主要)
用C語言開發的Python
用C語言開發的Mac OS X kernel
用C語言和C++開發的Windows
用C語言和C++開發的甲骨文(Oracle)數據庫
用于連接互聯網的思科路由器(Cisco Router)也是用C語言開發的
隨便說出一個基礎的、復雜的和性能關鍵的程序,那都是在C語言的基礎上加上少數其他編程語言開發出來的。
掌握C語言會讓你成為一個更優秀的Java程序員。你會知道JVM什么時候用堆棧、什么時候用堆,以及那都意味著什么。你會對無用單元收集更敏感。你會對對象與原語的相對性能成本有著更好的認識。
掌握C++會讓你成為一個更優秀的Python程序員。Python的class機制主要是通過C++建立的。想要維護好它,你必須學會寫出干凈整齊的代碼。你會學會對全局變量多加小心。
掌握C語言會讓你成為一個更優秀的Objective-C程序員。你會知道如何管理refcount以及哪些代碼應該“擁有”對象。你會能夠避免存儲滲漏。
那么,C語言和C++哪個更好?我稍微傾向于C++一點,因為雖然兩者非常相似,但是通過C++你還可以獲得面向對象編程(object- oriented programming)這個額外收獲。即使你決定只用函數式語言編程,學習如何從面對對象的角度思考,仍然可以讓你掌握對制作和維護大型項目至關重要的 組織模式。
所以,或許在供求不太正常的較短時期里,你的時薪會相對較低,但是一旦你掌握了C語言,你就能夠學會其他各種編程語言。因為如果說這個行業有什么長久不變的東西的話,那就是今天的熱門技能在幾年后就會變成罕見的獨特存在。學習技能背后的技能,你會走得更遠更好。
必須說明的是:
我從來沒說過你應該靠C語言編程來生存,或者你應該只學習C語言,或者用C語言編程要比用Foobar更賺錢。總的來說,除非有非常充足的原因,你甚至不應該用C語言開發自己的應用。
但是你仍然應該學習C語言。因為其他的編程語言都是用它來理解物理計算機的。你可以在其他程序員還在撓頭的時候瀟灑地邁著勝者的步伐。這會讓你從長期而言更“有水平”,賺更多的錢。
如果你想成為最優秀、賺的最多的F1方程式車手,那么就去學習一下引擎知識。不是因為這是你的工作,而是因為這會讓你把工作做得更好。而且,隨著車子不斷變化演進,你也就能識別出其中的不同之處。
轉自:福布斯中文網
很多學員問我不知道該學什么編程好,現在出了一份程序員調查,新手可以參考下





小風推薦大學生學Java編程語言,
java是目前最流行的編程語言,
而且最熱門的安卓技術、ios都是建立在java編程語言基礎上的,
java容易學,就業廣,是大學生理想的選擇。
最有前途:C++
最好賺錢:PHP 開發建站,基本上后臺使用的都是這個,需求量大。
需求量高:Java 容易就業