剛學計算機專業(yè)的我沒有c語言基礎?
剛學計算機專業(yè)的我沒有c語言基礎,怎么辦?
首先,請收下我的定心丸:沒關系,不用怕,C語言很簡單的[計算機專業(yè)這是基礎中的基礎]。
在我開始胡扯之前,首先聲明一下,我不是計算機專業(yè)科班出身,但是從事嵌入式開發(fā)有多年了,也算計算機相關專業(yè)了。本著上來不嚇到人的原則,我決定對一個剛上計算機專業(yè)的同學,從簡單的c語言講起。
國內理工科專業(yè),c語言基本上是各個專業(yè)的必修課。c語言從誕生開始就是一門高級語言[相對于匯編語言來說],如果拿今天的很多現(xiàn)代編程語言的視角來看,它又是一門低級語言,因為它沒有現(xiàn)代編程語言的什么面向對象、垃圾回收、閉包、lamda函數(shù)、延遲綁定等高級功能等。可能也正是c語言貼近硬件,使用指針,需要自己管理內存,相信程序員的特性,使它成為了一門系統(tǒng)編程語言,c語言伴隨著偉大的unix系統(tǒng)同時誕生,而著名的Linux也是用c語言編寫的。在系統(tǒng)編程領域、嵌入式領域,c語言是當然的無冕之王,同時學習c語言對于理解計算機系統(tǒng)是很有幫助的,因為c語言與硬件貼近的特性使你不得不思考系統(tǒng)運行的底層邏輯。這一點是更現(xiàn)代的編程語言所無法提供的,在這些語言中,你用的都是語言提供的特性,很多被稱為語法糖。
接下來的問題是,c語言怎么學。這點我要吐槽這個回答中其他答主的所謂譚浩強的c語言書了,拜托不要再從百度上搜答案了。最權威的c語言書籍肯定是作者寫的,就是所謂《k&r c編程語言》,但是這本書真的很老了,是c語言誕生之初就寫的,不建議初學者上來就看,跟現(xiàn)在的c89、c99規(guī)范已經(jīng)差異很大,但是里面的思路是很好的,在初學一段時間后可以拿過來再學習學習。
對于計算機專業(yè)初學者的初學階段,我建議分兩個初學階段。
初學階段一:用學校指定教材聽老師上課。不吹不黑的說,這比你啥也不懂去看書,要有效的多,至少會建立c語言的基本概念。數(shù)據(jù)類型、數(shù)組、指針、結構體、枚舉、聯(lián)合體、位域。這個階段的學習是構建基本概念,很多時候你會感覺糊里糊涂的,但是從無到有必須經(jīng)歷這樣一個類似肌肉記憶的過程。
初學階段二:挑選經(jīng)典c語言書籍,精讀,啥也不說了,上圖片。
這三本經(jīng)典書籍啃下來了,加上平時的一些練習,c語言基礎其實已經(jīng)差不多了,這個時候你會發(fā)現(xiàn)看書根本沒用了,因為你看了也用不上,看了就忘,你得寫程序驗證練習。這期間你會了解到c語言之外的東西:編譯、鏈接、庫、調試方法、makefile、Elf結構、linux接口、數(shù)據(jù)結構等等等等。
在此基礎上,建議再看看這本書:
說完c語言相關的,再說說我對計算機專業(yè)的淺薄了解吧,你們還要學習:離散數(shù)學、計算與可計算理論、計算機體系、微機原理、編譯原理、計算機操作系統(tǒng)、數(shù)據(jù)庫、網(wǎng)絡理論。
呵呵,每一樣都是一個巨大的體系,你們涉及到很多專業(yè)的計算機課程設計,例如組團寫一個編譯器[簡易的]、組團寫一個操作系統(tǒng)內核[簡易的]等。
總結來說,c語言對于計算機專業(yè)的學生來說真的是最簡單的部分。但是要說一句,計算機專業(yè)的不同方向可能決定了某些學生根本不會寫c代碼[但人家真要寫起來,比一般野生程序員要好,畢竟受過專業(yè)的訓練],因為計算機領域實在太龐大了。
計算機領域博大精深,我們普通人終其一生也只能管中窺豹,淺薄認識,不喜勿噴!