C++到底還能作什麼?

嗯,這是一位朋友發到我郵箱裏面的,很奇怪,發到了gmail郵箱,而不是我經常使用的hotmail郵箱哈。
我呢,試着回答一下,若是回答得很差,叫作肖某人學藝不精,回去從新學習再來過哈。呵呵。
一家之言哈,歡迎拍裝。
原文以下:
肖老師您好:
  我如今是一名在校大學生,在學校期間自學C++有兩年的時間了,看過C++Primer,stl,inside C++ model(侯捷翻譯的那本),com本質論等...
  在學習C++的過程當中感受C++語言自己的確很強大,並且隨着學習的深刻,我逐漸感到要想在短期瞭解這門語言的本質幾乎是不可能的.由於我也學習過javaSE的一些東西,感受就java和C#來講,語言自己不難,不過在底層調用方面有時候就會顯得有點費力了.
  不過對於C++我一直有不少疑問,因此想請教您,向您學習一下:
  1)關於C++的應用:
  曾經我覺得C++的應用比較多的就是用MFC來編寫各類應用軟件,可是,我如今感受編寫軟件這方面,用一些其餘語言和開發平臺,要比C++方便和快捷的多,並且也聽人說,如今幾乎不用MFC或是C++作軟件了.至於網絡應用和跨平臺方面,如今應該是C#和java在這方面的應用比較有優點吧.至於一些其餘有關硬件方面好比嵌入式,單片機控制系統等方面,用C語言就能夠知足大可能是的應用了.因此,如今哪方面的工做是用C++來作的?
  2)關於找工做的事:
  如今學C++到底能作什麼樣的工做?就像我前面說的,由於不大瞭解C++主要的應用在哪,因此,也不清楚到,能用C++來作哪方面的工做.
  3)關於com:
  我以前聽人說,C++作到最後就是作com組件開發.狀況是這樣的嗎?若是是的話,是否是用com來作有關遠程調用對象和接口或是分佈式系統等方面的應用.若是想作com開發的話,如今有哪些工做是須要用com組件編程的?
  4)最後:
  雖然我學習c++兩年了,不過感受,沒作過什麼像樣的應用,由於我在咱們學校的一個網站的技術部裏作過網站前臺開發的工做,就是html,css這些,感受這些語言雖然在學習的時候感到有不少東西不理解,可是經過作一些簡單的網頁,逐漸的基本掌握瞭如何編寫網頁代碼.因此,也作過一些專題網站什麼的.不過,就是c++這門我學的時間比較長的語言,我沒有作過什像樣的應用,想練習但是又找不到合適的方向.
  因此,想讓您給我提點建議,我如今應該學習或者是作哪方面的東西來提升本身的C++水平,還有就是在學習這門語言時,如何可以經過實踐來更好的掌握C++.
P.S:
  個人表達能力有限,可能有些問題我描述的不清楚,不過,仍是但願老師能辛苦一下,儘可能幫我解答這些問題.
  謝謝了.
個人回答:
嗯,這位同窗你好,我看了你的問題,也有點頭大,說實話,你這個問題我不是沒想過,我想得比較「野」,說白了,雖然我也用C++,可是,想這個問題的時候,我確實儘可能站在一個客觀的立場上在想,想出來的結論,說實話對C++不是頗有利,我也怕說出來被人拍磚,因此一直沒說,呵呵。
不過,你既然問得這麼細,我想我仍是說說吧,說得很差聽,你們就擔待一下吧。
嗯,惡意拍磚,我拍回去!
這第一個問題,其實裏面就很很差回答了。
你說的「 我覺得C++的應用比較多的就是用MFC來編寫各類應用軟件」其實話沒說完整,在Windows下,這個大前提不能少,你們開發Windows的應用程序,若是使用VC++的話,建議使用MFC來開發,由於它是微軟提供的一套C++擴充類庫,專門針對WindowsAPI封裝,開發Windows程序最方便。
這個話,倒退10年,是絕對正確的,由於那會兒,Linux沒怎麼起來,100個程序員,估計有99個都在爲Windows開發程序,應用軟件想固然跑在Windows下,這是對的,不過如今,使用Linux開發的人愈來愈多,Windows即便在桌面平臺上,也通常只佔據Client市場而已,Server中早就是Linux一家獨大了,沒辦法,老外版權意識強,但老外也想省錢,Linux不花錢,WindowsServer花錢,就這一點,就夠了。國外大量部署的商用服務器,實際上是Linux平臺。
嗯,國內貌似也差很少。
因此,我在年初的演講《明日世界--雲端計算下的程序員需求分析》中強調,MFC可能會衰落。起碼,沒有上世紀90年代那樣,一家獨大的感受了。
這其實也正是我爲何一直強調大學生儘可能打好基礎,不要太早涉足商業應用開發的緣由,由於商用類庫,有生命期,今天最火,你學了,明天等你畢業出來,人家被淘汰了,你不是作了無用功?甚至,工做都很差找。不信,有誰是專門研究TurboC的graphics開發的,就是BGI,如今出來找獲得工做不?
其實,MFC最大的問題,不是它本身的問題,是業界發展的一個廣泛結果。
如今的社會,請問你們一句話,純正單機版程序的應用還有多少?你們打開本身的Windows系統看看,有哪些應用是純粹單機版,一點不帶網絡訪問的?
恐怕很少了吧?
如今隨着互聯網的發展,網絡化應用愈來愈多,在Server端很差說,由於要求高吞吐量,高性能和高安全性,C/C++開發還佔有一席之地,可是,客戶端,恐怕未必了。
客戶端應用,通常都很貼合應用客戶的需求,更多的以數據庫服務爲主,目前,我這裏再提個見解,純粹功能性應用愈來愈少,像暴風影音,像光陰魔術手,這類純功能應用實際上是愈來愈少,目前應用開發的主流,是利用強大的中心服務器的處理能力,爲用戶帶來愈來愈多的數據密集型應用體驗。
QQ,它的用戶羣有多少?MSD和gtalk什麼的不說了吧?大用戶量,就是大數據量,帶來了全新的溝通體驗。
SNS社區,包括咱們這個網站,你們是否是在享受大數據量的應用體驗?
即使是強調終端用戶體驗效果的遊戲,目前你們能夠比較一下,網遊和單機遊戲的比例,就知道了,人們到底喜歡什麼樣的應用了。
這就帶來了一個問題,之後的社會發展,對於程序員來講,愈來愈偏重強中心,弱客戶端的這麼一種開發模式,這其實就是雲計算的由來啦。
你們是否是發現,本身用IE的時候愈來愈多了?
可是,這就帶來一個問題,開發弱客戶端,還用得着C++這種大型的語言嗎?
我不說,你們本身想,學C#和Java容易,仍是學C++容易?
你們別耍酷啊,呵呵,其實我當初就是爲了耍酷,非要學C++的,不過,要是站在商用立場,站在老闆的立場,早出人才,快出人才,出便宜人才,嗯,Java和C#,PHP也算,就是不能算C和C++,爲啥,學起來費勁,程序員學習成本高,天然價格也高,一樣的功能,用Java實現,程序員滿地跑,用C++實現,老闆抱着程序員大腿哭,恐怕程序員都未必肯應聘,太少啦,也太貴啦。
這不是肖某人危言聳聽啊,我也聲明一句,我一點歧視Java和C#這些程序員的意思都沒有,僅僅是請你們比較一下,Java、C#程序員多,仍是C++程序員多。
不過,這並不說明C++程序員的優點啊,這反過來證實另一個問題,大多數中小型企業,在研發上投入不會很大的企業,急於作出成績,快速得到市場表現的企業,在同等條件下,即Java和C++都能知足需求的時候,會選擇Java、C#、PHP等語言做爲公司的主流開發語言,而不會選C++。
這對Java等語言來講,實際上是最利好的消息,當愈來愈多的公司須要這方面程序員時,程序員的市場愈來愈大,價格愈來愈高,而C++呢,雖然擺出一副曲高而和寡的樣子,端着架子,可是,因爲沒有太多公司選擇C++做爲開發語言,所以,反而市場愈來愈小,找不到工做,即便找到,也得降價銷售,這就是市場規律。
這裏我要說一句,其實C++程序員,我我的認爲,前景並很差,從我我的經歷,和不少朋友的感受,發現有問題。主要就是很差找工做,工做機會太少,沒有太多的選擇空間,而Java的朋友們,因爲選擇空間大,其實很好談價,我好幾個Java朋友,薪水比我高的。呵呵。
所以,個人建議,若是之後定位在應用程序員,主要作Client業務,建議不要選擇C++,更多選擇Java和C#什麼的吧,工做更好找,還有,個人經驗,薪水與語言無關,你們千萬不要覺得C和C++程序員薪水就必定高。高的有,確定有,可是,不是全部人,也不必定就是你。
嗯,說到這裏,順便說說第二個問題,C++找什麼工做,個人經驗,遊戲,不管是客戶端仍是服務器,須要C++程序員的,不過,因爲目前引擎公司愈來愈強勁,不少遊戲公司本身不開發引擎,而是用買的,所以,客戶端這邊,恐怕需求會愈來愈少,主要恐怕之後仍是作服務器須要。
可是也很難講,C++比Java主要就是速度,可是,硬件愈來愈快,多核開發愈來愈多,不少網頁遊戲其實用PHP已經夠了,這個,C++程序員的工做空間也受到擠壓。
C不同,C呢,在不少時候,作驅動,作嵌入式小規模應用,滿夠用的,而老闆爲了節約硬件成本,每每會挑選比較弱的平臺,Java等腳本語言目前跑不下來,只能用C,嗯,稍微大點,用點C++也能夠的。
在嵌入式平臺上,C++貌似還有一點市場。
不過很難講,目前的arm9已經接近當年P2的計算能力,隨着嵌入式CPU的發展,嵌入式系統最終走向腳本化,也不是什麼難事。
其實,Java等腳本語言,針對C++最主要的優點就是沒有指針,沒有不少費解的東東,學習曲線低,程序員容易學出來,還有就是底層已經處理了不少細節,上層更多地專心與用戶的業務,這樣,用戶業務貼合度好,更容易受到用戶的青睞,還有就是,不處理複雜數據結構,你們都調用基本庫,程序成功率高,bug率低,開發成本低,公司容易賺到錢。
說白了,Java相對C++,不是技術在推進,而是錢在推進,因此,C++必敗。
com就不說了吧,com本質上是跨進程遠端調用,dcom甚至容許跨機器。可是,你們想一想,其實正是由於com的存在,進一步擠佔了C++的生存空間,愈來愈多的基本C++功能,被以com形式提供出來,最終被Java、C#等其餘語言所調用,擴充了其餘語言的功能和性能,使原來僅有C和C++能作的事情,如今Java、C#等作起來也很好,很快。
其實,我私人認爲,com更像是C++程序員本身爲本身挖的墓坑。
當把基本功能支持完善,Java、C#等語言得到了更好的性能和功能支持,能夠經過com調用不少C和C++的基本庫,得到更好的開發能力的時候,純UI,純數據應用,其實已經被Java和C#緊緊佔據了,C++沒什麼事了。
嗯,針對你最後一個問題,學習方向問題,個人建議是,基礎的要學,可是,出於好找工做的目的呢,我建議你應該學點html相關,css相關。
若是不是立志,這輩子就要作一個C++程序員,(我總以爲純正的C++程序員有點曲高而和寡,很差找工做),而是很務實的,但願畢業後在程序界迅速找到一份工做,我建議多學點Java和C#這類腳本語言,對於各類數據庫的訪問作到倒背如流,嗯,基本的數據結構和算法這不說了,要熟悉的。
這樣起碼幫助你在畢業後,能找到飯碗。
不過,這並非說你這輩子不能作C++,當找到飯碗,工做穩定了,在有空的時候,是能夠繼續學習C和C++的,學好了,有合適的工做機會,跳一下也不是不行,說不定,收入更高。
嗯,仍是那句話,程序員就是程序員,寫得出程序就是程序員。程序員不要在本身腦門上加太多修飾,什麼C++程序員,什麼Java程序員,什麼Windows程序員,什麼Linux程序員,這些加了修飾的程序員,其實不容易存活的。
要能掌握程序設計的通理,什麼語言,什麼平臺,掌握了基本的程序設計道理的時候,其實都同樣。
大學生,打好基礎,畢業先抓飯碗,總很差意思工做了還要父母養活。
在飯碗穩定的時候,隨時注意學習,特別是注意利用本身的基礎功底,跟蹤主流語言技術,不斷與時俱進,方能立於不敗之地。
C++不是永恆的,C不是,Java也不是,C#更不是,沒有永恆的語言,沒有永恆的平臺,只有永恆的程序設計技術。
這就是個人見解。
肖舸
相關文章
相關標籤/搜索