熱愛C語言的我該何去何從?

我從大學開始就十分熱衷於C語言編程,大學四年時間所有課程作業基本上都是用C完成的。現在面臨找工作的問題,看到很多公司根本不找C程序員,而嵌入式方面根本就不考慮我這個計算機專業的學生,前一段時間一家互聯網安全公司招C程序員,我經過筆試一面和二面,二面時候回答錯了關係TCP/IP一些問題,結果折在二面上。現在各個企業招聘接近尾聲,不知道我還能不能找到工作。平心而論我是非常抵觸Java和C# 這種編程語言的。在我看來,用這些語言編寫程序的人缺少一顆匠心,如果真的找不到C程序員工作的話,我就可能退出IT圈,另外找一份工作了。


  1. 不要把語言當成信仰。不喜歡某種語言就拒絕用那種語言工作感覺很幼稚。

  2. 合格的程序員掌握3種以上不同編程範式的語言是基本素養。(其實我想說5種。。。)

  3. 你提到匠心,匠心真的和用什麼語言沒關係。用彙編的可能會覺得C也沒有匠心,小白也不會因為用了C就成為匠人,爛代碼還是爛代碼。C不過是編譯器做的少了程序員做的多了,不要把它神化。用java c++++的也不乏對計算機有深入研究的神人,他們只是在特定應用場景下,不想用c重新造輪子,這是珍惜生命的好事。

  4. 既然你選擇做C開發,自然要在系統結構、網路等底層知識上高人一籌。畢竟C基本上是碼農必備語言,現在也就用在性能敏感的場合,如果你對底層不了解,用C沒有意義。
  5. 如果堅持拒絕java c++++,可以嘗試ruby,python,haskell,scheme等等,希望這些語言能改變你對於編程的認知。當然你有可能覺得這些語言更缺乏匠心,那隻能重新考慮要不要繼續做IT了,程序員這個職業可能不適合。


年輕的時候我也以為某個女生就是我的天使沒了她我不知道咋過,現在年紀大了回想起來只能呵呵了.

這個故事告訴我們,多抬頭接觸一點外面的世界,再看看自己的想法有時候是不是太狹隘天真了.


搞C++

再說了,我不僅C++用的熟練,我也喜歡C#,你怎麼能說我缺少匠心


樓主你可以去看一看Go,說不定你會愛上它


這個問題我也苦惱過,在學校的時候不屑於學習java c# php ,覺得沒有技術含量,自以為學好c 演算法 linux 就可以通吃所有崗位,類似演算法導論 操作系統原理 TCP/IP協議手冊 等計算機理論的書籍我掃了一便,自以為是地認為這些足夠應付所有面試了。

這種語言上的優越感一直伴隨我到畢業,還記得畢業的時候還自以為是非服務端下的c開發崗位不幹。結果招聘都是java c# php ,高不成低不就的熬到了三月份,如果不是某外企和高校合作招了一大票人,我估計也進不了it這個行業了。進入公司之後被分到了測試部門,我還偏執地覺得自己有能力做開發,抵觸測試崗位的工作,非要申請去做c/c++ 開發的工作,當然是內部項目面試被刷掉了。為了做開發崗位我就換RM,寄希望於新RM把我安排到開發崗位去,結果竟然是運維崗位,萬幸的是擁有linux經驗的我應付運維的工作還不算吃力,到了這個時候我才真正明白:在學校學習的理論是不足以應對工作需求的,必須要學會接受新東西。上級更關心的是公司需要什麼崗位的人,而不是我自己喜歡做什麼,要想做自己喜歡的事情必須要努力提升自己的能力,只有能力達到要求了才能選擇自己喜歡做的事情。

實際接觸項目之後,我也逐漸明確了開發崗位除了語言基礎還要資料庫 網路通信 web等技能才可以。不過那時候我還是沒有擺脫語言之爭的泥潭,為了能做開發,我業餘自學python 這門於c比較親和的語言。熬了兩年才離開了這家公司。

離職之後就是面試十連敗,做為一個運維轉開發的人,沒有項目經驗,不會資料庫,不會web,根本沒有機會過簡歷關。

最後還是抱著歸零心態,把自己當應屆生,到一家只有四個人的小公司做php 開發。如今半年過去了,為了工作我學了php javascipt html mysql redis邊啃手冊邊幹活,主程為了開發速度還集成了很多開發插件到項目中,這半年為了能跟上項目進度學習的東西比我過去兩年要多很多,這個時候我才感覺自己真的對開發算是入門了。但我知道,其實我還沒有上路,要學習的還有很多很多。

假如能再回到學校,我想我會拋開語言之爭,認認真真地從小項目做起,多寫代碼少逛社區。而不是糾結於哪個語言好,用什麼軟體更geek。每個語言都有實際的應用場景和配套的框架加速開發速度。實際工作中需要掌握的知識很多,學校裡面積累的僅僅只是基礎,類似操作系統原理 TCP/IP協議這些基本的理論知識如果紮實,在工作中遇到bug或者困難的時候排錯效率會高很多,但這些都只是基本要求,實際工作其實還有很多坑要跳:容災高可用、高並發、數據一致性,每一個坑如果都是靠自己寫的代碼來跳過去,不太現實,這個時候就要接入其它框架和應用來輔助,而不同的框架和應用,開發語言、思想都有所差異,只抱著一門語言去解決所有問題,肯定可以,但是會很累,掌握多門語言和基礎的理論知識能夠有效地減少重複性的工作,絕對不是浪費時間。

希望我踩過的這些坑能對你有所幫助。


題主如果著急的話可以學下Python,人生苦短,快用Python....


你多找幾個嘛。總會找到的。


學了四年c,卻不熟悉tcp的東西,這很是問題。

我覺得題主找不到工作應該先從自身找原因。

很多大公司的面試都是只看你coding的怎麼樣,跟他們掛出來的語言需求關聯不大。


哇靠,第一次聽說搬磚工人挑鬥車的


應聘工作的時候有語言限制簡直都胡扯。


樓主別鬧了,看什麼都好趕緊回家看書碼代碼去。

您會的東西還遠遠不夠開始談發展方向,這年頭的初中生懂的都比您多。


熱愛C非得把它當做職業嗎?


另找一份工作吧。

C 語言什麼都不是。C 的優勢在於它最貼近系統底層,所以,你要麼熟悉 OS(內核),要麼熟悉網路,要麼去做資料庫開發。沒有一個應用領地,就像你有一把很好的刀,但什麼都不會切一樣……可笑,嗯。


我也是只會C語言的同學,過去兩個月我一直再忙著找工作,各種筆試面試中的C++java題目一律不做。但是我也通過了很多公司的筆試,也通過了很多的面試,也找到了工作,不錯的工作。從我過去兩個月找工作的經歷來看,其實有很多很多的職位,不會特別關注你過去擅長什麼語言。。你只要把基礎知識打牢固了,數據結構,演算法,操作系統,網路協議。。其實只要擅長一個方面,很好找工作的。


做了超過5年C的人,還用說C語言何去何從么。別被互聯網錢多的假象毒害。

除了WEB,隨便找一款只要帶硬體的設備,C語言是必備的。


推薦方法是你用C寫個w行級別項目,能顯示你C實力的項目,如果做的好的話面試會有幫助。我會告訴你我發現把自己提交的開源代碼寫在簡歷里讓我有機會面試C嗎?雖然linux C文化確實給人感覺很geek,不過感覺水平還不夠,也沒去


題主啊,感覺你沉浸在自己的世界裡。我和你一樣喜歡c語言。有時候喜歡一個事物,只是因為我們擅長他。也許你在的環境看到的太狹隘,感覺c語言和你這種水平的一大把。你做的那些沒什麼了不起。把數據結構書用刷一遍是大二孩子的基本功。有種學編譯原理後寫個SQL語言的解釋器,再把資料庫實現一下。操作系統最好做過pintos。


你用gtk和做操作系統作業,只是在模擬。pintos模擬更好。

最後我說個殘忍的事實:有很多很多人語言學的比你好,其他方面也比你好。

題主,迎頭趕上吧!


這個我應該有發言權,之前去公司開發就是用c語言,但我也不會嵌入式的,又怎麼呢,數據結構與演算法你懂嗎,可以徒手寫個bfs或是快排么,如果不是,還什麼匠心,搬磚都沒資格


沒想到第一次提問就引來這麼多熱心的人回答,這裡面有我的同齡人,有企業員工,還有比我小的學生。首先我應該對每個回答我問題的人表示感謝,這裡有真誠的鼓勵,也有一些對我的偏見。但每個回答問題的人都是站在自己的立場上回答的,說白了就是盲人摸象,每個人都沒有把握住整個事態。第一,我想說明的是我並不是找不到工作,迄今為止我只參加過寥寥幾次筆試,也有一些公司邀請我過去,我都婉拒了。因為我清楚自己的秉性,不太適合大的環境,更加喜歡小的創業團隊,有激情,有夢想,也沒有那麼多亂七八糟的事情;第二,我從眾位回答中漸漸領悟出一個道理,一個人就算再怎樣全力以赴,再怎樣兢兢業業,但最終還是會遇到種種非議,甚至說一敗塗地。大學四年我可能讀了一百本書,雖然在應聘工作中顯示不出什麼,但是我覺得應該是我一生受用的財富,至於對網路,系統不甚了解上,我自己確實應該反省。在使用C語言的時候,只是想到我需要解決什麼問題,而不是這個語言未來能夠應用到什麼地方。簡單的鏈表,雙向鏈表,堆棧,樹的三種遍歷,圖的兩種遍歷,二叉搜索樹,hash,shell排序,dijkstra是我在沒看別人代碼基礎上獨立完成的,至於日後操作系統中進程調度,內存調度,磁碟調度的編程作業,我使用GTK C寫的。我本身性格原因,不喜歡考試,也不喜歡競賽,大學四年除了讀書就是讀書了,未來什麼樣子,我還不清楚,不過有了自己一個大致的方向。可前途怎樣,又有誰可以未卜先知?


我不得不告訴你,你對計算機的理解還太淺,你對c的理解限於學校教你的東西而已,c可以寫操作系統,你寫過一個可以啟動,運行,包含網路協議棧,提供內核調用,提供shell的操作系統?等你完成了這個目標,再說你熱愛C才不會讓人覺得你SB。


推薦閱讀:

如何有效閱讀Github上開源項目代碼?
學習Rust適合寫什麼練手項目?
C++ 是不是最博大精深的編程語言?
C++里,typeid里的type_info是怎麼構造出來的,或是type_info從來沒有被構造?
程序員在面試時是否會被要求手寫代碼?

TAG:編程 | 計算機 | 信息技術IT | C編程語言 | CC |