日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

给你三个必须要学C语言的理由!

發布時間:2024/1/8 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 给你三个必须要学C语言的理由! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C語言概述


One man’s constant is another man’s variable。1

本篇GitHub已收錄,點一個 star 你我就是并肩作戰的戰友!
https://github.com/hairrrrr/C-CrashCourse

本節內容


C語言的歷史,C語言的優缺點以及如何高效的使用C語言

C語言還值得學習嗎?C語言查錯的工具

思維導圖


C語言的歷史


起源

C語言是貝爾實驗室的 Ken Thompson, Dennis Ritchie 等人開發的 UNIX 操作系統的“副產品”。

與同時代的其他操作系統一樣,UNIX 系統最初也是用匯編語言寫的。用匯編語言編寫的程序往往難以調試和改進,UNIX 操作系統也不例外。Thompson 意識到需要用一種高級的編程語言來完成 UNIX 系統未來的開發,于是他設計了一種小型的 B語言。Thompson 的 B語言是在 BCPL語言(20世紀60年代中期產生的一種系統編程語言)的基礎上開發的,而 BCPL語言又可以追溯到最早(且影響深遠)的語言之一——Algol 60語言。

1970年,貝爾實驗室為 UNIX 項目爭取到了一臺 PDP-11 計算機。當 B語言經過改進并能夠在 PDP-11 計算機上成功運行后,Thompson 用 B語言重新編寫了部分 UNIX 代碼。

到了1971年,B語言已經明顯不適合 PDP-11 計算機了,于是 Ritchie 著手開發 B語言的升級版。最初他將新開發的語言命名為 NB語言(意味New B),但是后來新語言越來越偏離 B語言,于是他將其改名為 C語言。

到1973年,C語言已經足夠穩定,可以用來重新編寫 UNIX 系統了。

標準化

C語言在20世紀七十年代(尤其是1977年到1979)持續發展。這一時期出現了第一本有關 C語言的書。Brian Kernighan 和 Dennis Ritchie 合作編寫的 The C Programming Language 于1978年出版,并迅速成為 C程序員必讀的“圣經”。由于當時沒有 C語言的正式標準,這本書就成為了事實上的標準,編程愛好者把它稱為“K&R”或者“白皮書”。(公眾號后臺回復:【KR】即可獲得)

隨著C語言的迅速普及,一系列問題也接踵而至。首先, K&R 對一些語言特性描述得非常模糊,以至于不同編譯器對這些特性會做出不同的處理。而且,K&R 也沒有對屬于 C語言的特性和屬于 UNIX 系統的的特性進行明確的區分。更糟糕的是,K&R 出版后 C語言仍然在不斷變化,增加了一些新特性并除去了一些舊特性。很快,C語言需要一個全面,準確的最新描述開始成為共識。

C89/C90

1983年,在美國國家標準協會(ANSI)的推動下(ANSI 于此年組建了一個委員會稱為 X3Jll),美國開始制定本國的 C語言標準。

1988年完成并于1989年12月正式通過的 C語言標準成為 ANSI 標準 X3.159-1989。

1990年,國際標準化組織(ISO)通過了此項標準,將其作為 ISO/IEC 9899:1990 國際標準(中國國家標準為 GB/T 15272—1994)。

我們把這一C語言版本稱為 C89C90,以區別原始的 C語言版本。

委員會在制定的指導原則中的一條寫道:保持 C 的精神。委員會在描述這一精神時列出了一下幾點:

  • 信任程序員
  • 不要妨礙程序員做需要做的事
  • 保持語言精煉簡單
  • 只提供一種方法執行一項操作
  • 讓程序運行更快,即使不能保持其可移植性

在最后一點上,標準委員會的用意是:作為實現,應該針對目標計算機來定義最合適的某特定操作,而不是強加一個抽象,統一的定義。在學習 C語言的過程中,許多方面都反映了這一哲學思想。

C99

1995 年,C語言發生了一些改變。

1999年通過的 ISO/IEC 9899:1999 新標準中包含了一些更重要的改變,這一標準所描述的語言通常稱為 C99

此次改變,委員會的用意不是在C語言中添加新的特性,而是為了達到新的目標。

  • 支持國際化編程。如:提供多種方法處理國際字符集
  • 調整現有實踐致力于解決明顯的缺陷。因此,在遇到需要將 C移至64位處理器時,委員會根據現實生活中處理問題的經驗來添加標準。
  • 適應科學和工程項目中的關鍵計算,提高 C 的適應性,讓 C 比 FORTRAN 更有競爭力。
  • 其他方面的改變則更為保守,如,盡量讓C90,C++兼容,讓語言在概念上保持簡單。

    雖然改標準已經發布了很長時間,但并非所有編譯器都完全支持C99的所有改動。因此,你有可能發現 C99 的一些改動在自己的系統中不可用,或者需要改變編譯器的設置才可用。

    C11

    2011年,C11標準問世。

    基于C的語言

    • C++:包含所有C的特性
    • Java:基于C++,所以也繼承了C的許多特性
    • C#:由C++與java發展起來的較新的語言
    • Perl:最初是一種簡單的腳本語言,在發展過程中采用了C的許多特性

    C語言還值得學嗎?

    答案是肯定的。

    第一,學習C有助于更好的理解C++,Java,C#,Perl以及其他基于C的特性的語言。第一開始就學習其他語言的程序員往往不能很好的掌握繼承自C語言的基本特性。

    第二,目前仍有許多C程序,我們需要讀懂并維護這些代碼。

    第三,C語言仍廣泛應用于新軟件的開發,特別是在內存或處理能力受限的情況下以及需要使用C語言簡單特性的地方。

    C語言的優缺點


    與其他任何一種編程語言一樣,C語言也有自己的優缺點。這些優缺點都源于該語言的最初用途(編寫操作系統和其它系統軟件)和它自身的基礎理論體系。

    • C語言是一種底層語言 為了適應系統編程的需要,C語言提供了對機器級概念(例如,字節和地址)的訪問,而這些都是其他編程語言試圖隱藏的內容。
    • C語言是一種小型語言 與許多其他編程語言相比,C語言提供了一套更有限特性集合。(在K&R第二版的參考手冊中僅用49頁就描述了整個C語言。)為了使特性較少,C語言在很大程度上依賴一個標準函數的“庫”。
    • C是一種包容性語言 C假設用戶知道自己在干什么,因此它提供了比其他許多語言更廣闊的自由度。此外,C語言不像其他語言那樣強制進行詳細的錯誤檢查。

    C語言的優點

    C語言的眾多優點解釋了C語言為何如此流行。

    • 高效 高效性是C語言與生俱來的優點之一。發明C語言就是為了編寫那些以往由匯編語言編寫的程序,所以對C語言來說,能夠在有限的內存空間快速運行就顯得至關重要。

    • 可移植 當程序必須在多種機型(從個人計算機到超級計算機)上運行時,常常會用C語言來編寫。

      原因一:C語言沒有分裂成不兼容的多種分支。這主要歸功于C語言早期與UNIX系統的結合以及后來的ANSI/ISO標準。

      原因二:C語言編譯器規模小且容易編寫,這使得它們得以廣泛應用。

      原因三:C語言的自身特性也支持可移植性(盡管它沒有阻止程序員編寫不可移植的程序)。

    • 功能強大 C語言擁有一個龐大的數據類型和運算符集合,這個集合使得C語言具有強大的表達能力,往往寥寥幾行代碼就可以實現許多功能。

    • 靈活 C語言最初設計是為了系統編程,但沒有固有的約束將其限制在此范圍內。C語言現在可以用于編寫從嵌入式系統到商業數據處理的各種應用程序。

    • 標準庫 C語言的突出優點就是它具有標準庫,該標準庫包括了數百個可以用于輸入/輸出,字符串處理,儲存分配以及其他實用操作的函數。

    • 與UNIX的集成 C語言在與UNIX系統(包括Linux)結合方面特別強大。事實上,一些UNIX工具甚至假設用戶是了解C語言的。

    C語言的缺點

    • C語言容易隱藏錯誤 C語言的靈活性使得用它編程出錯的概率極高。在用其他語言時可以發現的錯誤,C語言的編譯器卻無法檢查到。更糟糕的是,C語言還包含大量不易察覺的隱患。
    • C程序可能難以理解 C程序的簡明扼要與靈活性,可能導致程序員編寫出除了自己別人無法讀懂的代碼。
    • C程序可能難以修改 如果在設計中沒有考慮到維護的問題,那么C編寫的大型程序可能很難修改。現代的編程語言通常提供“類”和“包”之類的語言特性,這樣的特性可以把大的程序分解成許多更容易管理的模塊。遺憾的是,C語言恰恰缺少這樣的特性。

    高效的使用C語言

    要高效的使用C語言,就需要利用C語言優點的同時盡量避免它的缺點,以下給出一些建議。

    • 學習如何規避C語言的缺陷
    • 使用軟件工具使程序更可靠(詳細見下文)
    • 利用現有的代碼庫 使用C語言的一個好處是其他許多人也在使用C。把別人編寫好的代碼用于自己的程序是一個非常好多主意。C代碼通常被打包成庫(函數的集合)。獲取適當的庫既可以大大減少錯誤,也可以節省很多編程工作。
    • 采用一套切合實際的編碼規范 良好的編碼習慣和規范易于自己和他人對自己代碼的閱讀和修改。(公眾號回復:【編碼規范】,讓你學會如何寫出規范的代碼。)
    • 避免“投機取巧”和極度復雜的代碼。C語言鼓勵使用編程技巧。但是,過猶不及,不要對技巧毫無節制,最簡單的解決方案往往也是最難理解的。
    • 緊貼標準 大多數編譯器都提供不屬于 C89/C99 標準的特征和庫函數。為了程序的可移植性,若非確有必要,最好避免這些特性和庫函數。

    怎么讓程序更加安全可靠?

    • 分析錯誤工具——lint
    • 越界檢查工具——bounds-checker
    • 內存泄漏監測工具——leak-finder
    • 調高你的編譯器的“警告級別”

    碼字不易,對你有幫助 **點贊/轉發/關注 **支持一下作者

    微信搜公眾號:不會編程的程序圓

    看更多干貨,獲取第一時間更新

    以上就是本次的內容,感謝觀看。

    如果文章有錯誤歡迎指正和補充,感謝!

    最后,如果你還有什么問題或者想知道到的,可以在評論區告訴我呦,下篇文章可以加上。

    最后,關注我,看更多干貨!

    我是程序圓,我們下次再見。


  • 吾之常量,彼之變量。摘自《epigrams-on-programming》 ??

  • 總結

    以上是生活随笔為你收集整理的给你三个必须要学C语言的理由!的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。