找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4148|回復: 0
打印 上一主題 下一主題
收起左側(cè)

分享我對C語言更深入的理解

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:51783 發(fā)表于 2013-7-13 03:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
     C語言一直以來是大家關(guān)注和學習的對象,不得不說,這與它的簡單易用和可移植性等等優(yōu)點有關(guān),最重要的一點是,它屬于面向程序員的計算機語言。當然,C語言更是編譯型語言,由它制作的軟件運行速度幾乎接近于匯編,所以速度也是它成功的一大原因。

       C語言與其他計算機語言有著很多區(qū)別,最大表現(xiàn)在,它是為專業(yè)的程序員量身定做的計算機編程語言。就像COBOL語言,它并不是簡單易用的語言,它的設(shè)計宗旨是讓業(yè)外人士也能看懂它要表現(xiàn)的內(nèi)容,再如BASIC,它主要是供非程序員編寫計算機程序和解決簡單問題。

        從某種意義上說,C語言的設(shè)計更加人性化。C語言同樣是中級語言,這并非是在低貶它的能力。相反的,它集成了高級語言和低級語言的共同特性,它能夠像高級語言一樣輕松編程,更能像低級匯編語言一樣對計算機硬件和位、字節(jié)、地址等等基本成分進行操作。

       著名的UNIX系統(tǒng)曾經(jīng)經(jīng)歷了由匯編到C語言編寫的過渡,后來又用C++進行了修改。由此可見,C語言的功能無比強悍,足以擔任各種重任,從某種意義上說,C語言能夠勝任一切。

       C語言并非是針對某一平臺的語言,它能夠運用在各種環(huán)境下,這其中包括DOS。 C語言的運用已經(jīng)流行接近三十余年,但它并沒有被淘汰,盡管C語言本身已經(jīng)有C++和C#這些新版本,但它也從未被大家遺忘過。

        在C語言發(fā)展早期,不凡有許多著名廠商對它強烈支持,其中的Windows、UNIX、LINUX等等大型操作系統(tǒng)上也有它的身影,事實上,它從某種程度上促進了各種系統(tǒng)和軟件的發(fā)展。

       由C語言編寫的程序有很多,比如微軟的OffiCe,VC等等,當然,各種軟件的不同版本都采用了不同的語言編寫,F(xiàn)在,更多人用C++和C#編程,原因不在于C語言的過時或者不可勝任,而在于兩個后者都有更好的開發(fā)環(huán)境平臺,也能夠更加高效和快速地進行軟件的集成開發(fā)。而前者,C語言在開發(fā)大型軟件時,會因為源碼過多而難以維護,修改更是老大的問題。當然,C語言在某些方面不及后面發(fā)展出來的新版本,這是事實。

       C語言應(yīng)用于各個方面,主要體現(xiàn)在系統(tǒng)和硬件支持以及常用工具、軟件開發(fā)等等方面。詳細地講,它可以編寫以下類型的軟件:基層的各種系統(tǒng)軟件和硬件操作程序,各種影音和桌面以及網(wǎng)絡(luò)應(yīng)用軟件,各種游戲軟件、數(shù)據(jù)庫開發(fā)軟件、信息管理系統(tǒng),各類圖形設(shè)計軟件(如CAD等)、編程軟件(編譯器,解譯器),人工智能等等。

       C語言是面向過程的編程語言,這是它的不足。在面向?qū)ο笳Z言出現(xiàn)后,C語言就顯現(xiàn)了它的某些不足。C語言雖然有著眾多的不足,還有許多老大的問題不能解決,但這些都沒有影響到它的成功,它也并沒有被拋棄,F(xiàn)在的C語言已經(jīng)發(fā)展到了很高的水平,它有了新的標準,也就是C99,它通過這個標準保持了自身的特性。正因如此,它才沒有因為C++的出現(xiàn),以至現(xiàn)在的C#代替。

       C語言是結(jié)構(gòu)化語言,它比其他語言更加簡潔優(yōu)美。然而,這也促使了新問題的出現(xiàn)。在編寫C語言的同時,我們有可能因為誤寫或者漏寫,也或者是多寫某個字符而造成整個程序出現(xiàn)偏差,結(jié)果是成品與我們的預(yù)定目標相差甚遠,也或者,錯誤被埋藏在了程序內(nèi)成為了一個隱患。

       C語言同樣也是自由化語言,編程人員可以輕松地操作各種關(guān)鍵字和庫函數(shù)編寫程序,只要我們能夠符合其語法規(guī)定即可。然而,正如上面所說的,C語言的簡潔和自由給予了我們更多的能力,特別是指針的操控,卻也間接地帶了更多的混亂。情況就是這樣,我們已經(jīng)說過,C語言是程序員語言,因此它必須是專業(yè)的人員來編寫。關(guān)于這一點,最大的原因就在于,語言本身的靈活和自由上,要求編寫人員自己檢查錯誤。要知道,對指針等等細節(jié)的操控,即便是編程老手,也有可能出現(xiàn)因為漏字或者錯字而造成巨大損失的情況。

        指針的操控是C語言最大的特色,也是它完成各種出色任務(wù)的前提。然而,同樣的,指針操控也是異常危險的。C語言給予了我們自由和靈活,同時,為了實現(xiàn)它自身的強大功能,C語言從來不會限制使用者對指針的控制。也就是說,我們可以將指針指向任何地方,可以是我們編寫好后運行著的程序內(nèi)部,也可以超越這個成品程序,指向系統(tǒng)的任一角落,對任何數(shù)據(jù)和進程進行操作。

       良性的操作,也或者說在開發(fā)者有意控制和監(jiān)視下,指針是非常有用的工具,可以探查程序本身以外的東西,可以實現(xiàn)進程之間進行某種操作和傳遞功能。然而這一切都是在正常情況下進行的,如果當我們在編寫程序的時候不小心把指針指向了并非預(yù)定的位置,指針超出了我們的預(yù)料,這種惡性操作,它將不定可能地讀取或者修改不定位置的數(shù)據(jù),其結(jié)果可以想象,這種盲目修改也太過可怕了。

       正是如此,C語言的安全性是讓人擔憂的。即便是編程老手也得多花上比編寫程序葉所花的幾倍或者百倍時間去進行測試。要知道,很多情況下,某個小錯誤并不會引起編譯錯誤,這個時候,錯誤就會在程序完成,在運行期間出現(xiàn)。運行期間出現(xiàn)錯誤是最危險的事情,后果輕則造成系統(tǒng)崩潰,重則影響硬件和數(shù)據(jù)。如果我們的程序影響到了機器上的某些重要數(shù)據(jù),也或者軟件自身的數(shù)據(jù)處理,這是很大的問題。如果我們的軟件在客戶那里出現(xiàn)這種大的問題,等待我們的不只是問題的本身,還有數(shù)據(jù)恢復或者經(jīng)濟損失問題。

       所以說,編程是一件非常小心的事情,我們需要非常細心地去做這個事情。同樣的,我們還要有十萬個耐心去檢查程序的源碼,過后,還要用更多的時間在更多的平臺和環(huán)境下測試。發(fā)現(xiàn)錯誤,我們還得能夠更加細心和更有耐心地去解決它,然后繼續(xù)重新再次重復測試。最后,我們總結(jié)出了這么一個道理。我們應(yīng)該時時刻刻注意源碼的正確性,在編寫之初,我們就應(yīng)該盡可能少地防止錯誤出現(xiàn),或者說,編寫的同時應(yīng)該檢查源碼。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表