程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 學語言不是寫程序!

學語言不是寫程序!

編輯:關於C語言

這是發到我郵箱裡面的一封信,嗯,類似的信有好幾封,春節期間呢,我主要陪笑笑,呵呵,不辦公,就一直壓著沒有回答,有點delay了,現在給這幾位同學抱個歉哈,對不住了。 這幾封信呢,普遍問到一個問題,就是C++以後的就業方向,C++以後有什麼用?以及怎樣學習才能做好明天的知識儲備? 這個問題我先說句話哈,見仁見智,很難有一定之規,我也只能就我看到的方面,做一點說明,不一定准確,大家參考一下好了。 還是那句話:一家之言哈,歡迎拍磚。 原文如下: 肖老師,您好:      收到您的回信,特別高興。我是xxxx大學的一名大三學生,專業是信息與計算科學。      我想給您多說一點。我高考時,知道這是學數學的,那時很喜歡數學,就報了這個專業。大一的時候,我們的老師,都很好。數學分析老師是我們公認的教授。但之後就慢慢不行了。我和大學就慢慢發生沖突了,我們的考試,就是畫下重點,這很沒意思。老師的水平也下了不少,這不是我一個人的觀點,這是我們公認的。     老師有念課本的,有翻幻燈片的,有在講台上只自已講的。當然,這是大多數。還有幾個老師是很好的,我們的近代史老師,讓我們知道什麼是學者。軟件工程老師,特讓人佩服,講課很有激情。我們的微觀經濟學老師,是理論聯系實際的高手我也不明白我們怎麼還要學宏觀經濟學和微觀經濟學),可能是為了考研吧。這兩個課占了很多學時,宏觀就是看了幻燈片。我們學校的課,有些有點莫名其妙。       我大二的時候想學信息安全,就自已去圖書館看書,看些科普性的書,後來接解並自學了匯編語言。現在都忘記了,呵呵)從這裡開始學計算機了。我們也開了數據結構,可是沒有實驗課。就是聽老師講一講。我大二下學期買了電腦。想學編程,可課開的太多了,想兼顧一下。所以總是斷。我們的課太多,一大部分是這樣的,剛有了感覺,就結課了。老師說是擴大知識面。我覺的這對,可也認為這對我們不負責任。我們什麼都沒有學精。學的很少,就為擴大知識面了。      我大三的時候,通過CSDN,在如鵬網上看了楊中科老師的C語言也能做大事。自已跟著做了一些,賀卡,計算器等。覺的很有趣。想學WINDOWS編程。無意中看到了,孫鑫老師的《VC++深入詳解》,還有視頻前10講是界面,後面還有一些網絡,多線程,文件等,比較全面,入門的),學著容易點。我就看完了。動手實驗了一部分。對C++的語法,又加深了一點了解。我的數據結構還沒有打過一次。我在招聘網站上看到STL,BOOST這些知識,現在在家就看這方面的書。想回校後,好好再鞏固打扎實數據結構的基本功。我覺得不能說我們學院不對,可是這的確對我們不負責任。學院往年很多成績特別好的學生,畢業後要麼考研,要麼找工作,有做英語的,營銷的,基本都轉行,很少與數學有關的。      同學們,有的沒事就打游戲,等考研。我們學校的采礦等就業很好吧,現在。考這的比較多,難度小一點。還有一些同學是努力學習的。不過同學們在一起交流都表現的很無奈。很多都是這樣的心態,不努力學的話,感到空虛。可靜下來想一想。覺得努力這些都沒有用。都有一點矛盾。我覺得不能再按學校的安排去擴大知識面了。當我們畢業,找不到工作,學院也不會管。我們要對自已負責。走上社會很有壓力,而我們沒有一技之長,難以在社會上立足。    肖老師,我現在大三了,還有一年多的時間。我對計算機方向了解不多,想從事C++開發一些應用軟件這些方面的。現在面臨考研與就業。我沒有體會到考研的必要性,所以不想考研,可怕找不到工作,同許多同學一樣難免被動考研。肖老師,您能否介紹一些,C++方向的職位,和相關的那些比較重要的知識,技能,除了要打扎實數據結構的基本功外,還要注意那些方面的知識積累,才能夠找到一個相應的合適的工作。    謝謝!    提前祝老師新年快樂!虎年大吉! 我的回答: 這位同學你好,你的問題其實有點泛,我也想了很久,只能試著答一下,你自己參考吧。 其實,從我在大本營做老師以來,很多時候,都遇到類似的問題,就是我們學習一門語言,要學到什麼程度,才好找工作,即,未來的工作究竟需要我們做什麼樣的知識儲備? 呵呵,我也說句話,很難講。原因很簡單,不同的地區,不同性質的企業,不同的工作崗位,其實對於我們的知識儲備都有不同的需求,一個人很難說,通過大學短短幾年,就能掌握一輩子需要的所有知識。 注意哦,是一輩子哦,我們的壽命通常比很多公司都長,這意味著,我們大多數人,一生中至少要跳一次槽,很多人還遠遠不止一次。我一直認為,這個世界上不可能有兩份一模一樣的工作,就好比不可能有兩個一模一樣的人一樣,雙胞胎還有差異性呢。 比如華為和邁普,兩個都是做通信設備的,我敢說,就算是他們同樣做網管軟件的部門,用的語言,平台,設計的理念,使用的算法技術,其實都不一樣,一個工程師,在華為可能做不太好,但到了邁普就是精英,反過來也一樣,大家想可不可能? 這說明什麼問題呢?我 我這裡提一個提法,我們在大學中,究竟是學盡可能多的知識?還是學,注意啊,有點繞,學習“學習知識”和“使用知識”的能力? 我想後者更重要,無數的成功書籍,都說明了一個問題,這個世界,歸根到底還是會“學習”的人,更容易成功一點。大家說對不對? 而學習,我的理解,首先要有意識,同學們在玩的時候,自己能不能想著該去看書了,坐車大家都無聊,能不能找本書出來看?大家拿著電腦打游戲,你能不能寫個小游戲出來自己打?別人上網看視頻是看電影,你能不能看講座?其實這些都是學習。 學習一定要有意識,因為到大學中,大家會發現,自己被“管”得少了,更多時間和精力,可以自由支配,但是,很多人就亂支配,瞎玩,這樣好不好?大家自己想。其實肖老師本人大學就是瞎玩一族,呵呵,說來慚愧,我大學學建築的,但是,建築我要說,自己學得真的很爛,我都跑去看C語言編程去了,呵呵,典型的不務正業。應該說,肖老師我的本職學業,是沒有完成得太好的。建議大家不要學我哈。 但光有意識夠不夠?我覺得不夠,還要有“習慣”,一件事情,今天興趣來了,做一下,明天沒興趣了,就放下了,這肯定不行,這叫“三天打魚兩天曬網”,所謂習慣,就是一定要有循環不斷做一件事情的興趣和動力,不斷去做,因此我一直強調,關鍵是養成習慣。 嗯,這位同學,我看到你的信中的描述,應該說你還是比較認真學習的,並且也有學習的習慣,我覺得很好,其實,你只要能堅持這一點,我覺得,你已經是一個成功的准程序員了,明天的工作,誰說得清楚,也許你學了一大堆C++,明天有個老板找你做匯編,你還不是得做?記住,走出社會第一步,先賺錢養活自己,養不活自己,什麼理想,愛好,抱負,都是假的。你說對吧? 你說你學了楊中科老師的《C語言也能做大事》講座,還有孫鑫老師的VC++講座,其實這都是很好的教材,我自問這兩位老師水平比我高的,我都講不了他們那麼好,建議堅持學習。尤其是楊老師,我很佩服的,自己不但做博客,還自己投資做公益性質如鵬網,人品和技術都令我佩服,建議你和楊老師好好討教討教。 ok,講完學習,我們談談你的重點問題,C++以後的工作方向,這個問題啊,說實話,我也有點看不清楚。 我一直理解,我們以後到企業中進行商用開發,很難說哪個系統是用同一門語言,很“純潔”地完成的。一個商用程序員,很可能需要精通一門到兩門語言,理解多門語言,才做得好。這在我的《0bug-C/C++商用工程之道》一書中專門有講,一個項目需求下來,大家最開始很可能是先挑選運行平台,再根據平台挑選合用的語言,一個系統,通常是多個語言的結合體,不太可能單一語言研發,不信的話,大家想想,QQ整個系統的開發,裡面可能會用到多少種語言?C?C++?Java?PHP?Html?。。。 單一語言的開發需求我想有,但不多,比如說嵌入式系統,小規模的工業控制應用,如51C,arm linux下的驅動開發,這類場景由於系統資源有限,且缺乏大型腳本環境,很多應用也不適合用腳本開發,因此,用純C比較多,嗯,就這樣都可能內嵌匯編語言,以應對某些高速場合。 因此,我這麼多年,發現一個很奇怪的結論,其實C++語言應用面並不廣。說應對底層需求,講究高效性,比如說做驅動,通常這類項目要求代碼短小精悍,都不太大,不存在大型工程組織需求,C語言足以,最多加點匯編提升效率,而大型工程組織,目前更多的開發模型是底層用C實現高速功能模塊,上層則使用Java等腳本語言來開發,因此腳本語言開發直觀,對程序員要求低,公司更能節約成本。 這就冒出一個問題,C++能做什麼?我論證了一下,非得是大型的,而且貫穿整個工程,從頭至尾都既需要講效率,又需要講大型工程組織能力,且不太適合腳本語言的工程項目,可能C++比較合適。那就簡單了,我們看看,除了大型視頻游戲,大型網游,以及一些大型專有軟件,比如說神舟飛船上的某個子系統,可能會全程需要C++,而大多數工業場合,實現的需求不是那麼高的設計場合,公司出於降低開發成本起見,一般都是混合編程,這時候,C++反而沒有太多用武之地。 你現在明白你這個問題我為什麼說難以回答了吧? 不過呢,我也要說,C++要學,我在前不久的演講《明日世界--雲端計算模型下的程序員設計需求》中,特別強調,一個現代程序員,要學一門到兩門語言,OO和OP各一門,大多數程序員,還是要學習一下C的,那OP就有了,順便再學習一點C++,都不用太深入,關鍵是掌握OO的思想,則基本可以應對明天大多數程序設計需求。哪怕那天碰到一個新的嵌入式設備,學一門新匯編,或者工作需求,要臨時用點Java,PHP,有了上述的知識儲備,臨時學起來也快。 為什麼這麼說? 我這裡說句話,OP代表動作優先,通常指控制程序恰當地發出動作,實現具體的動作,這可以說是我們程序設計的目的和核心,而OO代表組織能力,表示我們能組織龐大的工程,可以使多個動作模塊協調地工作,這個實做能力和組織能力,我認為是未來程序員必不可少的兩個能力,都要有。這叫做“做程序員也做得,做項目經理也做得,既懂實戰操作,也懂組織管理”,你說這種人才以後的職業道路會不會很寬廣? 因此,這裡我總結一下本文最重要的一個話題:“學語言不是寫程序!” 我們其實都是從學習一門語言走進程序員這個職業的,但是,經過了這麼多年的職業生涯,我也反思過一點,寫程序和學語言到底是什麼關系? 我通常喜歡拿小學生寫作文來舉例子,學語言,好比我們認識了很多中國字,很多詞匯,同時呢,也有了一點簡短造句的能力,但是,即使我們把一門語言的各種規約,特性背的滾瓜爛熟,是不是就說明我們是一個好程序員呢? 我認為不是。 為什麼,我們長大了會發現,大家學習語言,更多的目的是為了以後在工作和生活中,與人交往時,可以自如表達自己的意思,也能聽懂別人的意思,這個組織詞句,描述意思的能力,其實並不是學語言學來的,而是通過大量的練習和實踐,訓練出來的,不信,大家想想自己或朋友有沒有口頭禅,還有一些俗語,短語,成語,很多都不是教科書上有的,但大家約定俗成,用起來方便,對不對? 所以我一直說,學軟件開發,學的是這種“描述自己意思”的能力,而不是一個純粹的語言。 不過很不幸,目前我看到有很多朋友,確確實實在沉迷於語言,忽視了對這種“描述能力”的培養,這在大學中還很多。 我們經常聽說,“熟讀唐詩三百首,不會作詩也會吟”,有吧,可是,我問個問題,這輩子都背別人的東東了,自己一點創新都沒有,能做好一個程序員嗎?我覺得那不叫程序員,叫“Copy機”。 這裡我說第二句話,請你關注,學程序設計,更多的是要在對基礎知識熟練的基礎上,培養自己的創新能力,計算機軟件開發,哪怕是硬件開發,你看哪家公司靠“炒剩飯”能活的很好的?好的公司,大的公司,一定是創新力很強的公司。 因此,如果你以後需要找到一個理想的工作,我建議,首先關注學習,學習注意學習能力,而不是背誦,同時,你去想一個問題,如果今天我做一段代碼,我有沒有創新? 什麼叫創新,我也提一個概念,你自己去想,就是我今天有沒有解決一個“有無”問題,就是說,是不是有個東西,以前世界上沒有,現在,因為我今天的工作,有了,這就是創新。 我建議你按照上述思路去思考和學習,那麼,我相信,以後你不太可能會遇到職業危機,也不太可能找不到工作。你說呢? 呵呵,好,先到這裡,有問題歡迎繼續問。 =======================================================
在線底價購買《0bug-C/C++商用工程之道》
直接點擊下面鏈接或拷貝到浏覽器地址欄)
http://s.click.taobao.com/t_3?&p=mm_13866629_0_0&n=23&l=http%3A%2F%2Fsearch8.taobao.com%2Fbrowse%2F0%2Fn-g%2Corvv64tborsvwmjvgawdkmbqgboq---g%2Cgaqge5lhebbs6qzlfmqmttgtyo42jm6m22xllqa-------------1%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C10%2C11%2C12%2C13%2C14%2C15%2C16%2C17%2C18%2C19%2C20---40--coefp-0-all-0.htm%3Fpid%3Dmm_13866629_0_0
肖舸

本文出自 “肖舸的blog” 博客,請務必保留此出處http://tonyxiaohome.blog.51cto.com/925273/277556

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved