應該把C語言學習到什麼程度?
題主大一cs專業,第一學期剛結束,簡單入門了C語言語法篇,感覺並沒有什麼收穫,下學期學數據結構,請問我應該趁這個寒假更全面得學C語言還是去看數據結構?更或者學一門其他語言還是看一些經典書?學校安排這樣對C語言的學習有什麼大意義嗎?應該把C語言掌握到一個怎樣的程度?
取決於你的見識和視野。
1、你如何看待這個程序開發語言工具?
2、這個工具用得熟不熟?
3、這個工具可用於哪些場合?不同的場合下,如何使用這個工具?你見過幾個場合?你仔細調查過了沒有?你做過幾個?例如,嵌入式系統、操作系統、資料庫引擎、C/S,數值計算(intel庫),並行計算,圖形處理等等。
4、c89和c99是如何規定c的語法(用法),為什麼?
5、如何設計一門計算機語言(計算機體系結構、編譯原理)
過了好幾個月啦,還是直接給答案吧,這是一個多維度的問題,學習c語言至少有三個維度:
第一個維度,c語言本身的掌握,通過一些小例子、典型的題目,掌握c語言的語法。
第二個維度,通過c語言從應用層體驗操作系統。c語言的發明,與操作系統開發有莫大的關係。所以,學習一下unix環境高級編程,能夠對整個計算機系統有相當的直觀的了解。
第三個維度,演算法設計。無論什麼事情,大概總是要追求多、快、好、省的。就計算機程序來說,佔用內存少、運行速度快,這是基本要求。事實上,應該先學基本的演算法設計,並且只用數組和鏈表完成編程。有了一定的編程動手能力後,再學習數據結構。不要一開始就學數據結構,否則的話,老是編不出程序來,可能會失去學習的興趣。
第四個維度,如果有進一步追求的話。那麼具體數學非常有必要
第五個維度,計算機系統結構、並行計算、分散式計算、資料庫概念與原理。
取決於你的發展方向。
如果是軟體方向(底層軟體除外),學C重在計算機硬體原理(CPU和內存優化調度)和體系結構。對象化思想、指針等高級功能可以粗略看看即可。因為最終你的主要語言是JAVA或者DOTNET下的語言。
如果是硬體驅動方向(包括底層軟體),或者硬體開發(包括單片機),則需要學好C。因為C和C++在基礎上有很強的通用性。謝邀。
Q:題主大一cs專業,第一學期剛結束,簡單入門了C語言語法篇,感覺並沒有什麼收穫
A:
一個學期的時間,大概有四個月。四個月學 C 語言,說沒收穫?我怎麼感覺是你沒有用心去學呢。我當年學 C 語言,花了一年的時間,做各種大作業跟項目,依然感覺時間太少了,自己學的還不夠多,不夠深。Q:
下學期學數據結構,請問我應該趁這個寒假更全面得學C語言還是去看數據結構?
A:
沒有衝突,學數據結構,是在強化 C。Q:或者學一門其他語言還是看一些經典書?
A:
如果天賦秉人,能夠在短時間內掌握一門語言,剩下的時間請選擇一門感興趣的技能專研。推薦技術有:- 前端:Html、Css、JavaScript、框架(Vue、React、Angular 等)
- 伺服器端:Java(SSH)、PHP(Laravel)
- 手機客戶端:Android、iOS
相關書籍,完全可以在知乎找到答案。
Q:
學校安排這樣對C語言的學習有什麼大意義嗎?
A:
方便為後續課程打好理解基礎:- 數據結構學習,需要 C 語言代碼撰寫基礎
- 編譯原理學習,需要有代碼運行的基礎
- ……
應該把C語言掌握到一個怎樣的程度?
A:
看你指的什麼。如果指語法:- 能夠不用翻書,便看懂代碼即可
如果指演算法:
- 那就多用 C 語言解題吧,最好報名參加下 ACM
- 按照語法,能看懂代碼就好了。
- 然後,參照第三個問題的答案學習其他語言。
KR習題全做完吧。
C遠不止語言而已,關鍵是編譯、鏈接、運行這一大坨概念。你把這些弄懂了,包你鼠兵,啊不,C語言不戰自退,拱手而翔。。。
我就直接回答一下題主提出的問題,放點乾貨一、應該趁這個寒假更全面地學C語言還是去看數據結構?如果C語言語法已經比較清楚(如指針),建議學習數據結構。題主感覺沒有收穫主要可能是因為掌握的知識較少,不知道能使用在何處。C語言的學習是伴隨著應用和對自己的挑戰進行的(有些人學完了指針都不知道能做些什麼)
學習數據結構可以讓你
①提前了解如- 棧和隊列
- 鏈表
- 散列表
- 二叉搜索樹(Binary Search Tree)
- 紅黑樹
等常見的數據結構。
②更方便地實現一些演算法大致了解之後還可以上Hackerrank上的Solve Data Structures Code Challenges刷一些題,來考察自己的掌握程度。二、或者學一門其他語言還是看一些經典書?可以考慮學C++、Java(新手上路可以並推薦使用《C++ Primer》)亦或是學一門腳本語言(如Python3)建議自己也要對一些常見的演算法有所了解(如搜索、動態規劃),題目什麼的推薦Hackerrank上的Solve Algorithms Code Challenges(嗯,比較基礎~)。
三、學校安排這樣對C語言的學習有什麼大意義嗎?作為一名學習CS的學生,學習C、C++、Java大多是作為基礎課(編程入門課開設的),不僅在以後的工作上能用到,也是一種對思維的鍛煉。四、應該把C語言掌握到一個怎樣的程度?依我之見,學會指針、字元串、結構體啥的就差不多算入門完畢啦,可以學別的語言啦~老師教編程,就是教一下基本語法和基本演算法,想要進一步學習一門語言,必須跟實際的開發結合起來,深入學習要靠自己,比如找些開源的小項目學習一下人家寫的代碼。多看代碼是一個很好的學習方法,看了自己再嘗試修改。
不過按照現在的市場行情,c語言就學好語法和基本演算法好了,似乎沒有必要花太多時間在上面。有空的話不如開始自學c++。
c++的坑比較大,語法就要複雜的多,還要學習設計模式,重構這些開發技巧,時間真是不夠用啊! 除了c++,還有諸如java,python等,都很有市場價值。C語言相對來說還真是個很簡單的語言。我知道肯定會有一大幫人反對我。不過我覺得大部分人舉的例子估計都不是這個語言本身的問題,而是C語言太靠近硬體特性帶來的一大堆複雜問題。不管什麼語言的學習都可以用一句話概括——無他,唯手熟爾。
你只要以後經常用C語言,熟練不是問題,但是你會發現很多問題不是一個語言能解決的問題。
C語言至少要掌握到能做大作業的水平,最好到能給別人做大作業的水平。
BTW. 開房什麼的還是不要去,潔身自好很重要.我也是16屆新生,正在努力多閱覽一些c語言實現的經典小程序,如貪吃蛇等一些小遊戲,還有通過位運算的加密文件程序,還有一些基本的演算法可以開始學了。另外,在學c++。覺得語法什麼的速度學,把大量時間用於實踐,這才是生才之道。若發言有誤,請前輩們輕噴。
這門大一課我這專業不叫c語言,而叫:
程序設計基礎
所以根本不是為了學c的各種語法和特性,而只是利用c來讓同學明白什麼是寫代碼。
回到題主問題,你只要認為你大概懂得了程序設計到底在設計什麼,就沒有必要去死摳c本身,除非你認為你將來會非常頻繁地使用到c的深層的特性。
ps:這門課我校對轉專業的學生用的是python,我覺得也無傷大雅,無非想要教的是輸入輸出,數組,循環,函數等這些所有語言都會用到的基礎內容。一知半解就夠了
可以學一學 Linux C,順帶學一下操作系統層面的知識。
感覺沒收穫是因為你沒經驗。多寫點代碼就好了。比如搜索c語言有哪些可以練手的小項目之類
推薦閱讀:
※學習 C 語言需要數學基礎嗎?
※怎樣提高自己代碼可讀性?
※大學裡教的C語言,與知乎上說的入門編程要學的C語言是同一個東西嗎?
※sizeof(list) 如何區分list是變數還是類型?
※學c語言應該買什麼樣的電腦?