當代普通大學學生C語言掛科幾率竟然高達65%


C語言本身並不難學,或者甚至可以說C語言的語法是最簡單的。那些初學計算機編程的學生,學C語言就覺得難到不行,還淪落到掛科的,我只能表示這種學習能力就不要學計算機了。

我前幾天剛回答過一個問學不會C語言指針是什麼處境的問題,可以看看下面的回答,可能會讓你豁然開朗重新審視前方的路:

如何看待學不會C語言(指針)的處境??

www.zhihu.com圖標

和很多人一樣我當年也是大一下學期學的C語言這門課程,在那之前沒有學過計算機編程。那時候也沒有現在的孩子這麼好的條件,上大學家裡就給買電腦的基本沒有幾個,家裡當時都沒有電腦。當時學習C語言時優先只能在紙上寫,在紙上編程,用腦子「運行」。但是紙上編程畢竟不是學習計算機的有效途徑,上機還是必要的。好在當時學校有公共機房,一塊錢一小時,五毛錢半小時,在當時5~10塊錢可以夠一個男生吃飽一天三頓飯的時候,每天上機一兩個小時還算可以接受。我就經常在有問題需要上機調試時或定量每天去機房敲一段時間代碼。

學習計算機除了實際的大量有效的讀、寫、調試以外,我想不出有什麼「捷徑」可言。那時候也沒有現在網路這麼發達,開源這個詞在中國還沒多少人聽說過,想學習就是靠自己。所以我實在是不明白現在在網路如此發達,開源的好東西如此唾手可得,人手一到多台智能設備的條件下,那些一有一丁點問題就天天在網上「求大神」「拜大神」的人是怎麼想的?說他們不好學吧,他們又表現的很著急,說他們好學吧,他們又伸手伸的如此隨便。這是什麼?我覺得這就是急功近利、投機取巧和「懶」。

單就C語言這門課來說,它能有多難? 在不涉及日後數據結構和演算法、操作系統、編譯原理等等諸多專業課的前提下,單就C語言這門課本身來說,不就是學會C語言的所有語法嗎? 單論C語言的語法,那可謂是所有編程語言里最簡單的了,因為它根本沒有其它高級語言的複雜特性,就是高級語言里的低級語言。真正難的是使用C語言進行實際項目的開發,因為C語言本身並沒有其它高級語言的諸多原生特性(如支持正則表達式、面向對象等),所以C語言的語法非常簡單,而實際應用時則要利用這簡單的語法實現負責的邏輯,經常要從輪子開始造。就像圍棋的規則很簡單,一個子四口氣,氣都圍上就可以吃掉,最後誰占的點多誰就贏。但是圍棋可以展開的戰術甚至哲學思想是很多棋種不能比的,這才是它難的地方。而我們在初學C語言時,還沒有要求深入學習計算機科學的內在東西,單就C語言本身就覺得難到不行,這該怎麼說呢……

當然,很多人覺得難也可能是因為這是很多人接觸的第一門編程語言課程,起手確實會有一個需要適應的過程,這個可以理解。不過所有學習計算機的人,都會有一個第一次接觸編程語言的經歷,這不是什麼大不了的事兒。而且我上面已經說了,單就課程難度來說,C語言的語法是基本上是最簡單的。

這樣一個簡單的東西,能難到什麼程度?當年大一下學期學C語言,臨近期末時有一個同班同學找到我,說想請我幫忙讓她考過這學期的C語言課程。我問她你現在什麼水平,寫個程序我看看。然後我就驚呆了,還有十來天就考試了,她連if else都不會寫,變數定義都能寫錯了。我想了想,說作弊我是反對的,如果你只是想考過考試也不是沒有辦法,每天我給你講半個小時到一小時,然後給你留個「作業」,回去獨立完成下次帶來你給我講你的作業我給你判,然後再講半小時到一小時再留作業,如此往複7天左右你差不多就能應付考試了。然後我就按照判斷結構、循環結構、函數、數組、指針、結構體的順序給她依次講了一遍,每將下一個都穿插前面的內容和一些其它內容。她也還算努力,交給她的作業確實認真獨立完成。而且當時因為大家都習慣在圖書館的自習室學習準備考試,所以也帶動的一些別的同學也加入進來,形成了一次很短暫的閉館前小組學習日常。就這樣大概過了八九天,我覺得她學的差不多,足夠考試了,這個「日常」就算到此結束了。後來期末考試她確實考了79分,和我預計的差不多。而且連帶著把後來比期末考容易的C語言二級考試也過了。

所以說C語言考試那點事能是多難的事? 學會了都不是什麼值得驕傲的事。還掛科?只能說明懶到家了。


知乎的提問中數據是瞎編的概率竟高達百分之82


我懷疑這問題是知乎自動生成的,調動用戶活躍度呢吧。 C語言掛科65% ? 怎麼的,瞧不起c++唄?哈哈哈哈哈


C語言本身是很簡單的,覺得難學主要體現在:

  1. 很多學校,C語言是學生接觸的第一門編程語言課程。循環、判斷等概念都還在起步階段,理念沒形成,開發工具還沒熟悉。有些同學可能甚至鍵盤指法都不熟悉,當然會覺得難了。
  2. C是一門需要了解點計算機底層才能學好的語言,如果不了解內存地址、CPU定址方式、結構,學到指針的時候,絕對懵逼。
  3. 使用了譚浩強之類的教材。不是說譚浩強的教材不好,而是這本書過多的關注了一些語法的細節,而不是從計算機軟體工程的角度來教學生編程,大家沉溺於 如:++(i++)這樣的「未定義操作」,a = b a || c b 這樣的運算符優先順序的記憶……其實在現實的編程中,誰要這樣寫了,保證被噴死。運算優先順序除了先乘除後加減這種小學數學就懂的,其他一律靠括弧。


我也覺得 c語言 挺難學的,主要是由於 c語言 比較偏底層,它對於程序員的自覺性要求比較高。它給了你內存空間自主分配的權利,你就有權利背後的義務,也就要承擔對應的責任。但是承擔責任需要能力,所以就會覺得難。

但是話又說回來,你覺得這麼多困難的階梯是學校開一門課就能全部客服的嗎?所以學校的 c語言 能考試的東西真的不對,估計很難涉及到堆棧的問題,一般也就關鍵詞 反人類的代碼改錯 泡泡排序。所以要過學校的考試真的太容易,我班上都沒有見到什麼人掛科,也不知道這個題主的這個掛科率怎麼得出來的…


推薦閱讀:
相关文章