非計算機專業學生學完二級水平的C語言,不想放棄這塊,有什麼可以建議?
第一次在知乎提問。。我不是計算機專業的,有興趣又不知道從何處入手就先考了二級C,權當是學個入門,想繼續學下去又找不到方向,所以才在這裡想問問。
姑且小結(揣測)一下前面的回答想要表達的意思:
通過計算機二級C語言考試並不代表你學會了C語言,甚至不能代表你C語言已經入門了。更進一步說,即便你計算機二級考了滿分,你的C語言也許依然是完全不能看的水平。
對於一個沒有真正編程經驗的初學者來說,如果只是沖著二級考試而學習C語言,很容易被各種「計算機二級考試輔導書」所誤導,你學到的「C語言」可能完全是C語言中的旁門左道,甚至你學習的「C語言」完全是錯誤的,姑且稱之為"計算機二級C語言"。
這也是前面的回答所要表達的:忘掉「計算機二級C語言」,重新學習C語言。
當然,也許你選擇了一本比較好的C語言書,學到了真正的C語言,碰巧又通過了計算機二級考試。如 @狼大人所說,你最好列出你的學習參考書和編程工具之類的,這樣大家才能判斷你究竟學的是C語言還是「計算機二級C語言」。
話糙理不糙,前面的回答是有道理的。
PS:本人非計算機專業,沒有考計算機二級,平常需求也會寫一些C語言程序。
===========================================碼完答案,發現前面的回答又補充了不少。同意匿名用戶和評論里的說法,要麼放棄,要麼重新學。
二級C,只能算是一個C語言愛好者,甚至可以說都沒入門。
當然,你也可以用這個經歷給別人做二級C語言考試培訓,我覺得這個主意挺不錯看到這個問題就忍不住來答一下,因為剛剛和老婆爭論了一番,焦點是「為什麼要學習編程」
老婆認為編程只是一種謀生的是手段,而在我看來其中有莫大的樂趣,她表示不能理解。回到題主的問題。我印象中計算機二級是個跟英語四六級差不多的東西。考過四六級既不能說明英語好也不能說明英語不好。你將來做的工作,可能會用到其中的知識也可能完全不會。一切皆未可知。
題主說不想放棄,那麼自然是有不想放棄的理由。這個理由是什麼就決定了這個問題的答案。
如果對於編程無愛,僅僅是希望藉此謀生,那麼我的建議是不要。目前來說中國的高校中已經培養了太多的程序設計人才,半路出家想要摻上一腿不是件非常容易的事。至於說題主說通過了計算機二級考試,難道通過四六級考試就必須去做翻譯不成?
如果題主希望將編程當做一個興趣,偶爾自娛自樂一下,那麼我建議考慮以下幾個方向。
ios/android/wpf/cocoa 開發,可以在喜歡的平台上面做點小程序。linux,有各種智能家電,如路由器電視盒樹莓派可供把玩。python/ruby/perl,偶爾寫個腳本搶個火車票或者秒殺啥的。如果考完計算機二級也沒有阻擋題主對於編程的熱愛,並且立志以此為生的話。我推薦題主先讀一下數據結構,然後系統的學習這三種編程語言c/c++/java,再讀一下編譯原理和操作系統。然後選擇一個自己感興趣的方向試著去開發一個比較嚴肅的系統。(我知道一個本科生,畢業之前試著用 java 寫了一個搜索引擎)。然後可以試著找相應的工作,通過實際的項目過程去學習和提高。
寫這麼長就是想說,祝願所有從事程序開發的人,和喜歡編程的人,都能通過編程獲得財富也收穫快樂。你知道,當一個項目已經爛到無法挽救的時候。我們通常只有兩個辦法。
一是放棄這塊
二是砍掉重練
===========================================
題主,我把你「呵呵」的評論刪掉了,如果你介意的話,請再次評論「呵呵」,我好把你拉黑。我不明白你是從何處看出我有「優越感」的。我舉了個工程中常見的例子,告訴你不要抱著現有的知識不放,妨礙以後的發展。
二級C我雖然沒考過,但本科就做兼職,為一個輔導班代課。這不過是個考試而已,以此基礎上,課本教授的知識點是為了通過考試而提供給你的。就算不考慮二級所用的VC6.0和譚浩強,它在知識點的組織上,也更偏重糾結於各種語法細節。當然作為一門語言來說,他也只能考這個。
但C語言相對比較簡單,相比C#和Java,C允許你直接操作內存,於是你在實際應用中,或多或少要接觸更多操作系統和組成原理的知識。不然難以處理好程序的內存控制。
因此,單單通過二級,並不能算「入門」。而且,為了通過二級所學到的知識,包括代碼風格和編程習慣,被很多人認為對以後的編程工作會產生不好的影響。
所以說,你要不就別去學編程,這世界上美好的東西多的是。要不就忘掉你現有的知識和經驗,從頭開始。
別的不想多說了,你評論的語氣讓人很不愉快。雖說我花時間回答了你的問題,但我不欠你什麼。我也沒義務必須給你提供一個你滿意的答案。看了排名第一的答案的評論,還真是喜聞樂見啊。很多人,通過了計算機二級c語言,就覺得掌握了編程。但是其實,計算機專業的學生是不被要求考計算機2級的,那個要求考計算機2級的文件里寫明了「電氣信息類專業除外」,因為那個難度還真的不如c++課的一次課堂測驗。本人計算機專業,偶爾閑的蛋疼,參加了計算機2級的考試。那題目真的是慘不忍睹,只能說是一個局外人對於編程的一個最膚淺的理解。最令我不開心的是,20分鐘做完上機題並又檢查了好幾遍,那個破系統竟然不能當場告訴我AC,更不開心的是,最後發現竟然扣了2分(學校教務系統可以看到百分製成績98分,證書上只有「優秀」)簡而言之,計算機二級可以成為你學習編程技術的開始,但是不能成為你掌握編程技術的理由。本來答案是想回「呵呵」的,看了排名第一的答案和評論,我只能。。。了。。。
我一直覺得,二級考的那些東西可能就office有點用,其他東西對編程從業人員來說完全是廢品。對於非編程從業人員來說,可能一輩子也用不上也是廢品。我覺得還不如學點實用的,比如:1、Linux的命令和Shell腳本2、Python
3、Latex
……lz啊
你如果是說深入java,python也沒什麼但是你說你想搞c,就不要怪大家嘲諷了雖然你可能只是不了解c說簡單也簡單,說難真是難簡單是因為c只是面向過程的語言,沒有cpp那樣的複雜的設計模式要考慮,所以樓主看個thq,考個二級c也很容易但是樓主不妨去看看linux kernel的源碼 再掂量掂量自己的問題 如果你沒有讀過幾千頁的底層基礎 沒有幾十w行的c開發經驗 是很難勝任這方面工作的
如果樓主不想做計算機,嵌入式 又對軟體感興趣的話,就多玩玩matlab吧個人認為當你學習一門語言並與人對話時,起碼要做到以下三點:
1. 聽懂對方說話2. 做出判斷該以怎樣的內容回答對方3. 以基本合理的語法組織語言並說出來對於計算機語言,以上分別對應:
1. 需求分析2. 代碼/演算法設計3. 將腦中合理的設計實現為代碼對於國內的二級考試,應該更多的只是初步考量了上述中的第三點而已,且不說正規公司/項目裡面的編碼要求更高,光是需求分析和設計這兩點都不是光靠考試就能學會的。按照其他人的建議多做項目,多看別人寫的代碼會快一些。看了某位園子里挺出名的人的回答,覺得部分有理但對題主沒有建設性幫助,不能算好回答。我沒怎麼答過題,嘗試一下,希望能幫到題主。
==============================================
對題主所說的「不想放棄這塊」,有兩種理解。
其一是想在計算機領域進行更專業化的學習,以後從事Coding相關的工作或者成為職業程序員。這有很多帖子可以參考,其他幾位也有不錯的回答。但是想要堅持下來非常難,尤其是題主現在的切入點只有二級C而已。其二,是覺得掌握了一點編程,忘了可惜。
那最好的辦法,是將現有知識轉化成能偶爾使用的能力。 的確,二級C對於C語言來說,實在算不上什麼。對於技術細節、編程思想等,都蜻蜓點水。但是,經過二級C之後,有兩點好處:1、學會了最基本的程序控制流程,也就是if,for,while這些。多少人想自學編程,就跪在理解這些時摸不著頭腦。2、體驗了代碼如何轉化成程序,消除了對編程的原始恐懼。起碼不會再覺得編程是完全無法進入的事。所以,按我看來,建議樓主去學一些比C更友好的,適合平時把玩的編程語言。
現在大部分高級語言的學習曲線都已經沒那麼抖了,所以不會出現其他某些回答中特別打擊信心的情況。有如下建議:1、學習html/css/javascript學習做網頁,從靜態到簡單動畫。很快地開發出有色彩的看得到的作品,對業餘學習者的激勵作用是非常大的。如果要學的話,建議網上找些視頻教程來看。吐槽一下,雖然很多教程是用來培訓「三個月後月入5000」(槽點滿滿)之類的,但是作為業餘學習者看也很合適,智商沒問題的話很快能上手而且掌握得會挺好。2、學習php如果學會了1,再學2,就可以自己建立一整個網站了。這裡也可以看看視頻什麼的,推薦後盾網。有很多免費的視頻教程。如果題主時間比較多的話,每天看視頻加寫程序,3個月後,水平就可以做出一個簡易版的知乎來了。
3、學習C# .NET上邊兩個主要是網頁、網站編程。C#是Windows編程。學習C#可以很快做出窗口程序,也是很有激勵作用的。4、學習VB(請盡情吐槽)由於我是初二開始自學VB,開始接觸編程的。已經8年了。雖然VB總是被吐槽,但還是滿滿都是愛啊!上手特別快!========================================
如前邊所說,我初二開始學VB,之後的兩年里寫了大大小小十幾個程序,散發給我的同學們用。
而且,直到大一,我還沒有要做一個程序員的打算,編程只是愛好。(現在是完全不考慮程序員之外的職業了。。。)所以深深感覺得到,對於一個自學者來說,激勵作用有多重要。第一次寫程序,寫了一個很沒用的時鐘軟體,就以一個窗口上面顯示時間。自己看了很開心。
然後,初二花一個月時間,寫了一個國際象棋,用來電腦課上跟同學對戰。那個時候開始,周圍同學受我影響,四五個人都開始跟著我學VB。很有成就感。初三還寫了一個漫畫下載器,用來下載網站上的《通靈王》、《鋼煉》這些漫畫。然後再寫了一個漫畫閱讀器,用來快速看上邊下載的漫畫。然後把下載到的漫畫和閱讀器刻成光碟,散發給班上家裡沒有網的同學。初三畢業寫了一個電子同學錄,包括幾百張照片的分類展示和同學留言,刻成光碟發給全班。還有好多好多。滿滿的回憶。
========================================
雖然去年進入計算機系以後,越來越知道過去的這些東西,在專業人眼中有多麼小兒科。
但是沒有這些積澱,也就沒有現在的我。每個人的編程之路都不一樣。起碼我覺得,不斷寫一些小程序、小玩意兒,跟周圍的人分享,是無比快樂的事情。所以,在這裡建議題主,二級C的確很難成為進入專業編程領域的要是。但以此為契機學習門檻低效果明顯的編程語言,對你而言是可以挖掘的一座處寶藏。客氣點說,二級C相當於沒學實事求是地說,二級C可能還不如沒學因為二級C裡面基本都是垃圾代碼要多爛有多爛問題要多無聊有多無聊搞不清二級C和老譚C哪個更爛些所以他們前面幾位說得是對的重學!不要談不想放棄根本就沒得到過什麼沒什麼可放棄的
我也不是cs出身的,我記得我讀書時候似乎也曾有過你這樣的問題,其實答案非常簡單,你去搜一下cs系的課程表,然後再搜一下每門課用的教材,然後一本本去看,一個個項目去寫,就行了。哦對了順便說下,建議搜mit的教材,雖然難點,但對比之下國內的教材實在太玩具了。。。。
我不知道二級c是啥,我覺得只要你有興趣,願意堅持,也有基本資質,都是沒問題的。從業十年,我碰上的優秀碼農很多都不是cs的,數學,ee出身的比較多,當然如果不是學理工的,那確實累點,建議從高數學起,多訓練邏輯思維。
好像回答的學生比較多,所有一些cs的同學有些優越感也可以理解,不用太生氣,他們也幫助你認識到你同已經受過專業訓練的學生的差距。
哦最後再廢話一下,這行業很苦,如果沒有強烈的興趣和天賦,其實也很難到達一個了不起的高度,所以入行請謹慎。。。如果你認為過二級水平的C語言是困難到已經讓你不願意放棄的話,題主可能根本不適合這個領域。
本人複習了三天過的二級c,出來工作以後連前端那麼簡單的東西都得砍掉重練,你覺得咧...學習程序有一點請題主務必記住,每時每刻都要做好砍掉重練的準備,編程的功力大都不在語言上。
計算機專業的來給樓主一個建議吧,不敢說是答案。
首先說一下計算機二級這個考試,我也看了一些二級考試的題目,因為很多非計算機專業同學在弄這個。根據我所看到的題目來看,這個考試主要是側重於考查C語言的語法問題,甚至糾結於很多無意義的、undefined、實際使用中不會用到甚至極力避免的用法,所以對於編程風格或者代碼能力沒有太大作用(比如某increment運算符)。另一方面,對於沒有編程基礎的人,這個考試的確可以讓你們認識到什麼是編程,也就是對計算思維有了一些了解。不過我看到等級考裡邊的很多題目就是給一個計算公式,用代碼實現而已,談不上什麼演算法,但是也說不上是軟體工程,甚至沒有什麼架構或模塊的問題要考慮。
然後看您說到考了二級,然後不想放棄這一塊。
如果你只是因為學了不想丟掉,那還是放棄編程吧。
如果您真的是對編程有興趣,那麼首先您需要確定一個用於入門的語言,根據你的需求確定,不一定是C。事實上C語言是語法最簡單,但是使用起來相當複雜的語言,我這樣認為。
然後如何提高,主要是靠多寫程序了。
另外,提醒樓主把重點放在程序邏輯和演算法及模塊架構上,而不是糾結於語法。
還一幫程序員 不會審題就開噴
不知道為什麼排名前幾的回答裡面戾氣很重,讓人難以理解。
不知道題主現在是大幾?我假設題主是大二左右,那麼想要繼續學習計算機領域的知識的話建議(1)選修計算機雙學位(2)選修計算機專業的一些核心課程(程序設計實習,演算法與數據結構,操作系統,編譯原理,體系結構等)(3)旁聽計算機專業的課程。排名有先後。
最後coursera上有一門北大的程序設計實習,基於c++的,題主可以去聽一下並將上面的作業寫了,有助於確認自己是否對編程感興趣。
希望能夠幫助到你~我也是非計算機專業的。我的建議是:- 保持興趣- 看書,各種書(最好是「好」書),系統的、網路的、語言的...初次看不懂也沒有關係,看得多了就能把各個概念聯繫起來- 實踐。寫代碼,編譯,運行,使用/部署軟體、庫...- 可以看看計算機系的本科、研究生培養計劃和課程計劃。國內國外的都可以。- 有興趣可以使用linux環境。linux對於程序員而已暴露了更多細節。
個人觀點,可以結合你的專業自己編一些小軟體。比如你學經濟,可以編一個買入賣出股票的小軟體,如果興趣夠好,帶上界面,更好,帶起昂購買策略,更好,長期運行在電腦上,隨時跟蹤股票價格,更好,監測分析相關網路關鍵詞分析決定買入賣出。
個人觀點。。。舉一反三。。。
我咋覺得程序員那麼多人喜歡裝逼的呀。你們回答的時候根本沒搞清楚樓主的需求吧。都是些說了白說的話,還讓人學彙編,人家根本不是搞計算機領域的。我估計人家的想法就是希望在別的學科領域需要使用一些軟體工具的時候,不那麼費勁。還整天顯擺說要多少多少萬行代碼,我敢打賭,樓主以後不幹這行,這輩子估計1萬行都寫不出來。
――其實我是吐槽沒有大神來點實際點的幫到其他學科學生的意見,我和樓主情況有點相似啊我覺得提問的同學想法很好啊,非專業能有這個興趣是最重要的。我建議找本演算法類入門書,同步自學c,嘗試自己一點點用c實現各演算法。
推薦閱讀:
※軟體的版本號是如何確定的?
※電腦資料備份到移動硬碟上,能否有一種工具可以不用完全刪除,再複製,而是只備份那些新增的,變更的,就是保持自己電腦上的數據和移動硬碟里的數據同步?
※如何快速入門git和github?
※乾貨丨玩轉 AWS 的必備工具
※如何卡片創作之西蒙篇