不把C作為第一門語言是個好主意么?

摘要:不少人認為,第一門語言最好不要學C,而V眾投發起人李智勇卻不這么看。他認為如果真想做好開發,想更好地實現人生價值(包括現金價值),那么打基礎很必要,而從C語言,這種厚積薄發的語言開始學習學起,則很必要。


近來連續看到這樣兩個信息,一個是知乎上有個問題叫:如何學習C語言?,這個問題的答案中得票數第二高的是不要最先學習C語言;一個是看到了2012年金旭亮老師寫的第一門編程語言選誰?這文章,金老師也是支持不用C做第一門語言的,從投票來看大部分人也比較支持這個觀點。

這是比較讓我意外的事情,因為我正好持相反的觀點。

語言學習的兩種道路

我們有兩條路來學習編程,一條是厚積薄發,一條則是速成的道路。厚積薄發要一點點打根基,比如學習C語言、學習計算機系統的構造,去看《計算機程序的構造與解釋》這類書,去學習算法等,這么走有點吃力不討好,吭哧半天也還不一定能看到什么結果;速成的就可以先學習IDE,先學習腳本,先學習CSS,JavaScript,這樣沒多久就可以獨立干不少活了,比如創建個漂亮網站什么的。

這種不同道路的選擇最終決定了C是不是更適合做第一門語言。走前一條路的顯然就適合用C做第一門語言,因為不掌握這種系統級的語言就不太好理解什么是指針,什么Stack,什么是Stack Overflow,什么是寫超界,對打基礎形成不良影響,也理解不了《深入理解計算機系統》這樣的書。走后一條道路的就沒關系了,哪個實用學哪個。

想知道適合走哪條道路,請先拷問自己!

初學者到底適合選擇哪個方向?首先我們必須承認沒有哪種方法是適合所有人的,舉個例子來形象地說明這一點:松鼠桂魚是蘇州這邊的名菜,但對于不喜歡甜食的人來說,這道菜很糟糕。

因此我不想在技術上展開太多,這更主要是個人成長的現實問題,從怎么做更有利于實現自己的價值(包括現金價值)來探討可能更有現實意義一點。所以要想回答要不要從C開始,最好先回答下面這樣的問題:

  1. 你是不是想專職做程序員,把它作為自己未來的職業?
  2. 你是不是想成為比較杰出的程序員獲得更好的成長和收入?

上面這類問題的關鍵在于,如果你一直做程序員而不是做做就干別的去(比如管理、銷售等等),那么就要有專業,專業才能更好的創造價值,而專業需要一種高度,高度則需要基礎和積累。我們很難講不學C語言就成不了很專業的高手,但你可以看看身邊,很多高手就是打了基礎一點點磨練出來。

這么說也許有點抽象,我們來看看具體的故事:

2012年的時候Facebook花10億美元買下了照片共享應用公司Instagram。這事在當時引起了非常大的轟動。這事之所以引起極大關注,其關鍵點在于后者只有十幾個員工。十幾個員工支撐起10億美元的價值,這絕對是讓人震驚的事情。

做個簡單的比較就可以知道這個差距有多大。

假設一個公司是做外包的,非常厲害,人月單價有4萬RMB。同時這個公司包括支持人員在內有500人,公司里每個人都可以換成收入,那么這個公司一年的收入大概是4000萬美元,而Instagram用十幾個人達成10億美元價值只用了差不多2年。兩家公司中,單人一年創造價值的比率是差不多500萬倍。

這是怎么樣的一種杠桿率差異!大家可以想象都是寫程序,這兩種杠桿率回報上的差異。

這種杠桿率背后隱含了這樣一種基本現實:基于很多現有的框架,小而精的團隊已經可以通過產品撬動極大的生意,這并不僅局限于Instagram。而為了打造這種小而精的團隊,大家在聽一些分享時就會發現:很多人都有意愿找ACM上成績比較好的人,他們認為這類人更有以一當十的可能性等。

從這類現象中我們可以挖掘出來什么東西?

  • 第一點,如果把程序員進行分級,一個極端是能做很高端的活,比如以小而精的團隊打造很牛的產品;一個極端是只能做CRUD的活,那收入與這種技能等級正相關是無疑問的,杠桿率在那里。
  • 第二,做很高端的工作可以并不只局限于打造產品,也可以去弄系統底層等等,但總的來看,越往高端走對基礎要求越高,這里的基礎范圍可以廣點:可以是算法,可以是對體系結構的理解等。沒有這類基礎工作時,就很容易被卡在一些地方干瞪眼,不知道如何下手解決有點難度的問題,而事實上當你試圖創建一個新產品的時候,必然會碰到獨屬于你自己的問題

要想成為名好程序員 學習C語言是非常必要的

在《程序員生存定律》里,我寫過一篇文章叫:程序人生的出口。其中列舉了程序員最可能的結局,比如:

1 成就超一流高手?
簡單來講就是繼續以程序員的身份進行奮斗成為牛人。
2 積累、爆發、開始創業
簡單來講就是自己做產品,努力當CxO去。
3 轉向管理之路
大多情形下是拋棄程序,內部轉行去喊口號。
4 維持原狀的老碼農
就是在CRUD這個層面打轉那種。
5 提前退場、向代碼說再見
眼看前途渺茫,轉行了。

這其中1對基礎要求很高,2與3對打基礎比較無所謂,這時候技術很像一種敲門磚,而4與5很可能正是忽視了基礎的結果。

這樣一來事情就非常清楚,如果你真想長時間做程序員,并且想比較好的實現自己的人生價值(包括現金價值),那么打基礎是很必要的,再進一步就是說從C語言開始學習編程其實是很必要的。

從C語言開始學習編程對大學生的另外重意義

從C語言開始學習編程對大學生而言還有另一重含義:除了大學的時間,你可能再也沒有大段的時間打基礎。容易的東西是可以用碎片時間學的,比如各種腳本語言,但難的東西是需要大片時間學的,所以一旦大學里不把硬骨頭啃掉,未來很可能就沒時間啃了,說回來還是要先打基礎再談其它。

歷史上趙匡胤曾經猶豫過是先搞定比較羸弱的南唐還是先搞定幽云十六州,最終他選擇了先易后難去搞南唐,從結果來看這是錯了,你不趁自己最巔峰的時刻搞定最難搞的,未來可能就再沒機會了,而羸弱其實一直會弱在那里,早搞晚搞差別不大。

當然我們也必須承認即使努力的去打基礎,也不是每個人向上走,都能成為高手、成為特別牛的程序員,還是有人會卡在某條線下面,要去維護垃圾代碼、寫垃圾代碼,但關鍵是我們談的是在學習階段應該怎么做,不爭一爭就放棄某種可能性,還是太可惜了。

此外,對于大學生或者那些有充足時間學習的人,我不太認可一種方式可以培養興趣,另一種就不能培養興趣的說法。這更多的可能是種借口,因為在有如此多好玩開源項目的年代,對于想學的人,C語言一樣可以有很多興趣,對于不想學的人再簡單的語言一樣也很無聊。

有沒有趣,是學習或者是教學方法的問題,而不是編程語言的問題。

最后我想再補充兩點

首先,我寫上面內容時,沒太考慮職業技術學校的情形,一旦考慮速成,考慮大規模生產,結果必然會掉過來,這并不令人意外。

其次,并不是只有我有這類觀點,大名鼎鼎的Joel在《軟件隨想錄》里專門有一章叫“學校只教Java的危險性”,其中所表達的觀點與這里的觀點類似。

作者介紹:李智勇,V眾投發起人,《完美軟件開發:方法與邏輯》作者。目前正在免費發布《程序員生存定律》,微博:李智勇SZ,微信:vfacebook。


《暢言》第三期:【[暢言]Android、Chrome OS長達四年的“戀情”,為什么會在今天確立關系?】Android和Chrome OS融合的傳聞早在2010年就有了,這個傳聞到2013年即被谷歌執行董事長Eric Emerson Schmidt和Android主管Sundar Pichai否定,時隔僅不到一年,谷歌為什么又允許Chrome OS上運行Android應用呢?

《暢言》第四期:【[暢言]流量變現——社交問答網站的生與死】互聯網流量真的就一定能變現嗎?如果是,那為何知乎、果殼的產品成功了、流量也可觀了,但為何它們至今仍沒有走出絕地?如果不是,那流量的繁盛為什么沒有給他們帶來盈利?社交問答網站路在何方?

《暢言》第五期:【[暢言]管理者:我不需要你喜歡我】愛奇藝上海PPS研發總監陸其明稱,有人若對你說,喜歡在你底下干活,別自喜!這不一定是在肯定你能力。如果他能力不強,那么他的言外之意卻是“在你底下混得比較舒服”。這是個危險信號!因此管理者,不要無原則地討好員工、不需要讓他喜歡你,而是需要:贏得他們的尊敬!

《暢言》是CSDN新欄目,供大家各抒己見。只要你看完CSDN文章或評論后有話說,都可以通過電子郵件(zhangyong@csdn.net)投稿,從而獲得上CSDN首頁表達自己觀點、想法的機會。《暢言》不怕觀點“雷人”,只要你邏輯表達清楚、數據引用可靠,你敢投稿,我們就敢首頁!歡迎大家暢所欲言。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447520.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447520.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447520.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

系統集成項目管理工程師(軟考中級)重點知識、背誦版

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 為了入戶廣州報考了軟考中級,一次通過。 以下為背誦筆記:

如何成為一位杰出的程序員

如何成為一名杰出的程序員,這是一個比較復雜的問題,什么叫杰出?下面我給你大家總結一下,文中說的一些觀點,你可能不認同,沒關系!評論反饋一下! 一、解決問題的能力和創新能力 個人…

JVM的新生代、老年代、MinorGC、MajorGC

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 參考: http://blog.csdn.net/flamezyg/article/details/44673951 http://www.blogjava.net/ldwblog/archive/2013/07/24/4…

Bash腳本:怎樣一行行地讀文件(最好和最壞的方法)

用bash腳本讀文件的方法有很多。請看第一部分,我使用了while循環及其后的管道命令(|)(cat $FILE | while read line; do … ),并在循環當中遞增 i 的值,最后,我得到了非我所想的 i 。主要的原因是&#xff…

解決:無法獲取實體類com.xxx.xx.xx.xx.dto.XxxDTO對應的表名

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1.報錯如題: 無法獲取實體類com.xxx.xx.xx.xx.dto.XxxDTO對應的表名 2. 報錯原因,如下圖紅框中部分&#xff0c…

IDEA 查看最近修改、已提交文件

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 如圖:點擊 Version Control --> Repository --> 最左邊藍色圓圈 --> 選擇一條提交日志:右邊就…

程序員賺錢致富的6種方法

我認識一個朋友,也是程序員出身,他在一家還不錯的外企上班,每個月工資收入也就差不多15K,五年的工作經驗了,在他面前,我算是小弟。那天我們幾個朋友一起打完球就去附近的飯館吃飯,環境還不錯&am…

解決:Changes not staged for commit:

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1. git push 報錯: 2. 提交時加上參數:-a ,表示新增。 git commit -am "提交說明" 提交成…

內存不足:殺死進程還是犧牲子進程

早上6點,我不得不開始處理“叫醒”我的一些問題。因為當這些問題發生的時候,我的手機鈴聲響了。昏睡中的我非常不情愿地拿起了手機,檢查我是否瘋狂到將叫醒鬧鐘設在了早上5點。原來是監控系統發現一個Plumbr服務死掉了。 作為一名該領域經驗…

java8 注解: @FunctionalInterface (函數式接口)

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 Java8提倡函數式編程,因而新增了一個函數式接口。函數式接口保證了函數式編程,同時也保證了能夠兼容以前的java版…

寫給年輕程序員的一封信

很多年輕的程序員發emails給我,說希望能夠得到一些如何盡快躋身優秀程序員行列的建議和方法。關于這個問題,我已經有提到過很多次,現在已經沒什么可以補充的了。不過 為了滿足大家的要求,在這里我再詳細地歸納總結一下&#xff1a…

Docker中RocketMQ的安裝與使用

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 搜索RocketMQ的鏡像,可以通過docker的hub.docker.com上進行搜索,也可以在Linux下通過docker的search命令進行搜索…

大浪淘沙:不是所有的IT公司都以成功收場

本文列舉了50家創業公司沒有什么先后順序,最后顯示,其中21家是獨立公司,19家被收購了,4家正在走下坡路,6家已倒閉。但是我希望有更多的公司徹底倒閉,留下實力最強大的公司。公司倒閉也許是重新開始的標志。…

解決:阿里云ECS服務器 遠程連接不上、極慢 (主機監控的實現)

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 個人低配版的阿里云ECS服務器,突然發現用 Xshell 或者 git-bash 都連接不上... 第一反應發工單去問下為什么,然…

TIOBE 2014年7月編程語言排行榜:僅發布1月,Swift進Top 20!

摘要:TIOBE7月編程語言排行榜發布,本月最值得關注的是,蘋果公司在WWDC 2014上推出新的編程語言Swift,發布至今僅一月有余,Swift竟擠進TIOBE排行榜的Top 20,排名第16位。Swift能取得如此驕人的成績&#xff…

Math對象方法總結(向上取整、向下取整、四舍五入、取隨機數,取最大值、取最小值)

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

Docker 方式安裝 gitlab ( 阿里云ECS )

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1.查找鏡像: docker search gitlab 2. 拉取鏡像: docker pull 鏡像名 我選擇的是搜索出來的第一個鏡像&…

商用的碼流分析工具/YUV viewer

目前市場上有一些商用的碼流分析工具是比較好的,能夠輔助我們進行各個標準的碼流分析: 1. Elecard StreamEye系列 可以分析H264/MPEG4/MPEG2的碼流,暫時不支持其它標準。 2. H264VISA 比較好的H264碼流分析工具 3. Vegas vegas是interra s…

生成多個 SSH-Key 、生成多個公鑰和私鑰

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 當有多個倉庫要同時使用時,需要配置多個公鑰、私鑰。于是就要先生成多個。 PS:初次生成參見文章:查…

使用Lucid Virtu在有獨立顯卡的情況下使用Intel硬件加速H.264編碼

在硬編碼領域,大家都知道CUDA技術對于H.264視頻編碼速度的提升。然而實際上常見的高清H.264視頻壓縮都不是用CUDA技術進行硬編碼,而是用傳統的x264進行軟編碼,因為通過CUDA硬編碼的視頻效果遠遠差于x264軟編碼壓縮出的視頻效果。隨著Intel Sa…