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