為什么要學c語言 孫志剛 學c語言為什么感覺很困難
為什么要學習C語言?第一講 C語言簡介及為什么要學習C語言?為什么要學C語言呢 你有認真想過嗎?為什么要學習c語言?它具有哪些特性?為什么要學習C語言?
本文導航
現(xiàn)在還有必要學c語言嗎
1.簡約
雖說用好c語言很難,但是對于c語言的入門是很容易的,用一句話來形容c語言,我覺得是易于上手,難于精通,C語言在語法上的使用很簡單,因為它不是很高級,也不是很龐大,在第二版(K&R)中,它的參考手冊僅僅用了49頁就描述了整個C語言,沒有迭代器,沒有裝箱....C語言的這種“低級”讓我們在學習時會把重點放在自己控制上,所以什么都會選擇自己動手,而在用java或python時,我的第一感覺,往往是,“嗯,我有哪些工具可以使用?”太多的工具選擇,有時候是件壞事,因為沒了許多鍛煉的機會,而且很難抓住重點,有的時候什么都沒有反而是件好事。<!--more--
2,原理
操作系統(tǒng)是一個程序員應該學好的一門課,但是我們在學習的那些操作系統(tǒng)概念很難深入理解,或者比較抽象,比如餓死哲學家之類的,僅僅知道概念,是不能解決實際問題的,比如,你可能學過一些進程的概念,或者內(nèi)存分段之類的,那我問你,windows進程問什么沒有僵死?在windows中如何修改一個進程中的數(shù)據(jù)?Linux的fork和Windows的createProcess有什么不同?linux有線程嗎?你寫一個我看!你的理論不管用了,因為你沒有實踐過.所以,我覺得學習操作系統(tǒng)最好的方式就是用c語言進行系統(tǒng)調(diào)用,這種方式在unix和linux下能獲得更好的學習方式,因為win32-sdk不適合學習,更適合開發(fā),在unix下,你能用你的操作系統(tǒng)知識與fork(),exe(),wait()等系統(tǒng)調(diào)用很好的結合.
而且不僅僅是操作系統(tǒng)你,在學習c語言的時候,你不得不接觸一些系統(tǒng)結構的知識,比如字節(jié)對齊,比如c語言的地址空間,你就會知道堆棧這種東西,如果不是遞歸,是可以沒有的.你就會知道虛擬地址到實際地址的轉換.這些在java和c#中變得透明,但是透明是為了方便開發(fā),透明對一個學習者是有害的,想象今后的云計算,將會是怎樣的開發(fā)?它將培養(yǎng)更多的碼農(nóng)。
3,數(shù)據(jù)結構與算法
用C語言來學習數(shù)據(jù)結構和算法在合適不過了,用指針去寫吧,用Java和c#下的學習更像是會用。你可能會說C++更好,但是你的類(變量+函數(shù))本質跟c語言中的結構體+函數(shù),沒有區(qū)別,除非你用模板,多態(tài),重載,我才承認你在用c++,但是你的重點篇了,我們不是在討論學習數(shù)據(jù)結構與算法嗎?你現(xiàn)在是在學習語言特性了。
4,更好的過渡
本文所寫的是為什么學習C語言,作為一個學生,我覺得說什么C語言開發(fā)更高效,就是個笑話,因為,談到開發(fā),又開始談金錢,時間,一大堆的東西,你會問,為什么不是java或python?開發(fā)是開發(fā)的事,你學的扎實還不會開發(fā)?我只是說c語言的路線更適合學習,你又會問錢都掙不上學什么?我記得有一次一個來做java培訓的人說,“我們培訓java,你們把自己做成一個商品,推銷出去。”。我覺得很可笑,我們要做的不是商品,最起碼是一支股票。所以害怕學的東西找不到工作的人,用一切時間來猶豫徘徊。
c語言學習從哪里來
C語言是一種廣泛應用的計算機語言,相信觀看我們教程的各位,沒有不知道什么是C語言的;對于C語言的歷史這里就不做介紹了,我們說一下C語言的標準。
·k&RC標準:這是1978年由美國電話電報公司(AT&T)貝爾實驗室正式發(fā)表的C語言標準,是zui早期的C語言標準。
·ANSI C/ C89標準:我們所看到的大部分的教科書中,用到的也是這個標準,而且,我們的教程中也是按照這個標準講的。1990年,國際標準化組織(ISO)和國際電工委員會(IEC)把C89標準定為C語言的國際標準,命名為ISO/IEC 9899:1990 - Programming languages -- C。因為此標準是在1990年發(fā)布的,所以有些人把簡稱作C90標準。不過大多數(shù)人依然稱之為C89標準,因為此標準與ANSI C89標準完全等同。
·C99標準:1999年1月,國際標準化組織(ISO)和國際電工委員會(IEC)發(fā)布了C語言的新標準,名叫ISO/IEC 9899:1999 - Programming languages -- C ,簡稱C99標準。這是C語言的第二個官方標準。C99標準較C89標準增加了一些新的特效,如Bool類型、long long、long double等等。如果大家想了解標準新增的詳細內(nèi)容,可以在網(wǎng)上查找相關的文章。
·C11標準:2011年12月8日,國際標準化組織(ISO)和國際電工委員會(IEC)再次發(fā)布了C語言的新標準,名叫ISO/IEC 9899:2011 - Information technology -- Programming languages -- C ,簡稱C11標準,原名C1X。這是C語言的第三個官方標準,也是C語言的zui新標準。
這些只是一些C語言的標準,不理解也沒關系,也不會影響我們程序的編寫。
2.我們?yōu)槭裁匆獙W習C語言
C語言作為一種高級語言,現(xiàn)在好多公司編程都使用C語言,尤其是嵌入式這個領域。大家可以從網(wǎng)上看看世界編程語言排行榜,C語言基本一直都沒下過前三名。
從學習的角度來說,學習C語言是很必要的,C語言有如下優(yōu)勢:
① C語言比較靈活,可以直接使用指針。
② C語言是跨平臺的語言,幾乎同樣的代碼可以運行在不同的平臺,如Windows、Linux、Unix等等。
③ C語言的執(zhí)行較其他的高級語言速度快,而且開銷小。
⑤ 學好C語言,有助于我們鍛煉編程的思維,加強我們的邏輯能力。
小編是做嵌入式開發(fā)的,在嵌入式開發(fā)中差不多有90%的軟件代碼使用C語言編寫的,當然也有一部分代碼使用C++和匯編編寫的。匯編也一般是使用芯片廠家寫好的Boot程序,頂多是對寫好的Boot做部分的修改。
c 語言有必要學么
1、首先是雞湯,也就是為什么要學C語言。你可以先問自己,為什么我要學C語言?是為了應付考試,還是為了應聘,還是為了提高自己的編程能力。我想說的是,如果你打算以后長期從事計算機方面的工作,你就必須會一門編程語言,讓C來做你的啟蒙伴侶再好不過了。為什么?
通用。
語法簡單,C語言學起來真的很簡單,關鍵字就那么幾個。
貼近硬件,讓學會編程的同時,對計算機的有初步了解。
C語言無處不在。電飯鍋,路由器,操作系統(tǒng) and so on 。
對以后學其他語言都是有很大幫助的,具體你會知道什么是堆,什么是棧,內(nèi)存的分配與釋放。。。。。。這些都是所有語言都會涉及到的。
2、學習方法。多寫代碼,多寫代碼,多寫代碼,重要的事說三遍!有一種感覺加“碼感”。還有一件重要的是:多思考,多總結,多看別人的文章。推薦你去【CSDN】,或者【博-客-園】開通博客,記錄自己的學習點點滴滴。
遇到很頭疼的知識點怎么辦,先跳過去,過一段時間再回頭來看。
實在解決不了就去Google,百度。你的問題很特別,搜不出來,就去論壇提問吧。
提問的藝術:不要問一些百度就能出來的語法問題。
具體學習方法:
第一階段《C Primer Plus》藍皮+郝斌的C語言視頻
我沒推薦經(jīng)典的《The C Programming Language》,因為我舉得《C Primer Plus》比較??亂壞悖?比徽飫锏??率嵌醞耆?躚д哂瀉艽蟀鎦?摹?茨闋約旱幕?“傘:鹵蟮氖悠狄彩嗆苤匾?模?躚д咄??枰?桓觥捌啊保?徊揭徊降惱兆嘔??詈蟛嘔嶁闖鱟約旱拇?搿?/p>
第二階段
《C與指針》學完C,不熟練指針,就是白學。
《C語言深度剖析》來自陳正沖前輩,這是一本關于C語言的“野史”,很有味道,強烈推薦。
《C缺陷與陷阱》多看別人掉坑史,前車之鑒后事之師。
第三階段數(shù)據(jù)結構結構學習。
c語言是什么樣的語言
我在網(wǎng)上看到一些,也許對你有幫助:
1)相比較其他的編程語言(像c++,java),c語言是個低級語言。從總體上來說,低級的編程語言可以讓你更好的了解計算機。
2)設備驅動程序和操作系統(tǒng)只能用c語言來編寫?,F(xiàn)在,你可能還從來沒有編寫過一個設備驅動程序或者一個操作系統(tǒng),但是如果你需要去修改他們的時候,怎么辦?
3)如果你想要得到一份編寫微控制器程序的工作的時候,該怎么辦?他們都是用c語言編寫的。就因為不想學習一門新的語言,你就準備限制你能得到工作的機會嗎?
4)c的程序比其他用別的語言寫的程序,實現(xiàn)相同的功能,它用的代碼行數(shù)更少,而它帶來的運行效率卻更快。有時候,你的程序所需要的速度,只有c語言能做到。
5)如果你學習過c語言,你就能學習現(xiàn)在任何的高級編程語言。因為所有的高級語言都是以c語言為基礎的(像java,c++,c#等等)。
6)因為c語言已經(jīng)存在很多年了,它有廣泛的使用團體并且有大量的現(xiàn)成代碼可以利用。這就使你能在過去程序的基礎上,快速和高效的編寫新的算法和函數(shù)。
7)c語言是一個開源組織的語言。一個開源組織的產(chǎn)物--linux,就是用c語言寫的。如果你會c語言,你就能參加這個組織并且還能向眾多的開源組織投稿,比如參加source
forge并且給他們投稿。
8)c語言是唯一一個向你闡述指針的本質的語言。而c#和java干脆跳過了指針這個題目??墒侵羔槾_實使c語言變得更加強大。
9)找編程開發(fā)方面的工作時,c語言仍然是最普遍需要的語言。所以它值得你花時間去學會它。
10)
任何里面有微處理器的設備都支持c語言。從微波爐到手機,都是由c語言技術來推動的。
學c語言為什么感覺很困難
(1)應用軟件。Linux操作系統(tǒng)中的應用軟件都是使用C語言編寫的,因此這樣的應用軟件安全性非常高。
(2)對性能要求嚴格的領域。一般對性能有嚴格要求的地方都是用C語言編寫的,比如網(wǎng)絡程序的底層和網(wǎng)絡服務器端底層、地圖查詢等。
(3)系統(tǒng)軟件和圖形處理。C語言具有很強的繪圖能力和可移植性,并且具備很強的數(shù)據(jù)處理能力,可以用來編寫系統(tǒng)軟件、制作動畫、繪制二維圖形和三維圖形等。
(4)數(shù)字計算。相對于其他編程語言,C語言是數(shù)字計算能力超強的高級語言。
(5)嵌入式設備開發(fā)。手機、PDA等時尚消費類電子產(chǎn)品相信大家都不陌生,其內(nèi)部的應用軟件、游戲等很多都是采用C語言進行嵌入式開發(fā)的。
(6)游戲軟件開發(fā)。游戲大家更不陌生,很多人就是由玩游戲而熟悉了計算機。利用C語言可以開發(fā)很多游戲,比如推箱子、貪吃蛇等。
上面僅列出了幾個主要的C語言應用領域,實際上,C語言幾乎可以應用到程序開發(fā)的任何領域。