關(guān)鍵詞:什么是C語言
C語言
C語言是一種計算機(jī)程序設(shè)計語言,它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾實驗室的Dennis M. Ritchie于1972年推出,1978年后,C語言已先后被移植到大、中、小及微型機(jī)上,它可以作為工作系統(tǒng)設(shè)計語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計語言,編寫不依賴計算機(jī)硬件的應(yīng)用程序。它的應(yīng)用范圍廣泛,具備很強的數(shù)據(jù)處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,適于編寫系統(tǒng)軟件,三維,二維圖形和動畫,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開發(fā)。 C語言是1972年由美國的Dennis Ritchie設(shè)計發(fā)明的,并首次在UNIX操作系統(tǒng)的DEC PDP-11計算機(jī)上使用。它由早期的編程語言BCPL(Basic Combined Programming Language)發(fā)展演變而來,在1970年,AT&T貝爾實驗室的Ken Thompson根據(jù)BCPL語言設(shè)計出較先進(jìn)的并取名為B的語言,最后導(dǎo)致了C語言的問世。 而B語言之前還有A語言,取名自世界上第一位女程序員Ada(艾達(dá))。 隨著微型計算機(jī)的日益普及,出現(xiàn)了許多C語言版本。由于沒有統(tǒng)一的標(biāo)準(zhǔn), 使得這些C語言之間出現(xiàn)了一些不一致的地方。為了改變這種情況,美國國家標(biāo)準(zhǔn)研究所(ANSI)為C語言制定了一套ANSI標(biāo)準(zhǔn),成為現(xiàn)行的C語言標(biāo)準(zhǔn)。 注:國際標(biāo)準(zhǔn)化組織ISO也制定的C語言的標(biāo)準(zhǔn),被很多編譯器所采用,如:GCC等。 C語言是世界上最流行、使用最廣泛的高級程序設(shè)計語言之一。 在操作系統(tǒng)和系統(tǒng)使用程序以及需要對硬件進(jìn)行操作的場合,用C語言明顯優(yōu)于其它高級語言,以前有許多大型應(yīng)用軟件都是用C語言編寫的(由于面向?qū)ο缶幊碳夹g(shù)的出現(xiàn),大型軟件轉(zhuǎn)由C++、JAVA、C#再配合C語言開發(fā);C語言在面對大型的軟件開發(fā)時,會顯得有些吃力) C語言繪圖能力強,具有可移植性,并具備很強的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動畫。它是數(shù)值計算的高級語言。 C語言之父 丹尼斯·里奇, C語言之父,UNIX之父。1978年與布萊恩·科爾尼干(Brian W. Kernighan)一起出版了名著《C程序設(shè)計語言(The C Programming Language)》,此書已翻譯成多種語言,成為C語言方面最權(quán)威的教材之一。2011年10月9日,丹尼斯-里奇去世,享年70歲。 丹尼斯·里奇,全稱丹尼斯·麥卡利斯泰爾·里奇。美國計算機(jī)科學(xué)家,對C語言和其他編程語言、Multics和Unix等操作系統(tǒng)的發(fā)展作出了巨大貢獻(xiàn)。里奇在哈佛大學(xué)學(xué)習(xí)物理學(xué)和應(yīng)用數(shù)學(xué)畢業(yè),1967年他進(jìn)入貝爾實驗室,1983年他與肯·湯普遜一起獲得了圖靈獎。理由是他們“研究發(fā)展了通用的操作系統(tǒng)理論,尤其是實現(xiàn)了UNIX操作系統(tǒng)”。 肯·湯普遜和丹尼斯·里奇1999年兩人為發(fā)展C語言和Unix操作系統(tǒng)一起獲得了美國國家技術(shù)獎?wù)?。在里奇的成長歷程中,有兩個人對他的影響最大,一個是他父親,而另一個是他的摯友,同為UNIX發(fā)明人的肯·湯普遜。尤其是后者。 有人問過丹尼斯,他的偶像是誰,不論在計算機(jī)領(lǐng)域還是其他領(lǐng)域?他說:我不是在英雄熏陶下成長起來的。很顯然,對我職業(yè)生涯影響最大的人物是肯·湯普遜。UNIX大部分是他的工作,同樣也是C語言的前輩,同樣Plan 9系統(tǒng)的大部分工作也是他做的。并且在這其間Ken做了第一個計算機(jī)象棋大師。 里奇身上有很多可貴的品格:首先,他對所做的事十分有興趣。比如創(chuàng)造出Unix的初衷并非為了掙錢,事實上剛開始是為了省錢,或者將他們的游戲裝到一個更省錢的機(jī)子里邊。第二,跳出舒適區(qū)工作非常有必要。里奇原本是一個物理學(xué)家和數(shù)學(xué)家,但是,他卻成了最具傳奇的程序員。很顯然,他的專業(yè)背景為他研發(fā)出C語言或者Unix起了很大幫助,正如里奇所言:“要不懼工作在一個陌生的領(lǐng)域里。”如果里奇花了數(shù)十年的時間在晦澀的數(shù)學(xué)上,或許Unix就會胎死腹中。第三,要有創(chuàng)新思維。Unix在貝爾實驗室是幸運的,那里資金充足、不缺員工,他才有條件與他的朋友按照自己的時間安排來研發(fā)他們想要的東西。最后,要懂得分享。許多企業(yè)都喜歡保密,將自己的核心技術(shù)藏匿起來,這在里奇看來都是不成功的。 基本特性 1、C是高級語言:它是把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來的工作單元。 2、C是結(jié)構(gòu)式語言:結(jié)構(gòu)式語言的顯著特點是代碼及數(shù)據(jù)的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂?、維護(hù)以及調(diào)試。C 語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。 3、C語言功能齊全:具有各種各樣的數(shù)據(jù)類型,并引入了指針概念,可使程序效率更高。而且計算功能、邏輯判斷功能也比較強大,可以實現(xiàn)決策目的的游戲。 4、C語言適用范圍大:適合于多種操作系統(tǒng),如Windows、DOS、UNIX等等;也適用于多種機(jī)型。C語言對編寫需要硬件進(jìn)行操作的場合,優(yōu)于其它高級語言,有一些大型應(yīng)用軟件也是用C語言編寫的。 5、C語言應(yīng)用指針:可以直接進(jìn)行靠近硬件的操作,但是C的指針操作不做保護(hù),也給它帶來了很多不安全的因素。C++在這方面做了改進(jìn),在保留了指針操作的同時又增強了安全性,受到了一些用戶的支持,但是,由于這些改進(jìn)增加語言的復(fù)雜度,也為另一部分所詬病。Java則吸取了C++的教訓(xùn),取消了指針操作,也取消了C++改進(jìn)中一些備受爭議的地方,在安全性和適合性方面均取得良好的效果,但其本身解釋在虛擬機(jī)中運行,運行效率低于C++/C。一般而言,C,C++,java被視為同一系的語言,它們長期占據(jù)著程序使用榜的前三名。 6、C語言文件由數(shù)據(jù)序列組成:可以構(gòu)成二進(jìn)制文件或文本文件常用的C語言IDE(集成開發(fā)環(huán)境)有Microsoft Visual C++、Dev-C++、Code::Blocks、Borland C++ Builder、Watcom C++、GNU DJGPP C++、Lccwin32 C Compiler 3.1、High C,Turbo C、C-Free、Win-TC、Xcode等。 新特性 1、對齊處理(Alignment)的標(biāo)準(zhǔn)化(包括_Alignas標(biāo)志符,alignof運算符,aligned_alloc函數(shù)以及 頭文件)。 2、_Noreturn 函數(shù)標(biāo)記,類似于 gcc 的 __attribute__((noreturn))。 3、_Generic關(guān)鍵字。 4、多線程(Multithreading)支持,包括:_Thread_local存儲類型標(biāo)識符, ;頭文件,里面包含了線程的創(chuàng)建和管理函數(shù)。 5、增強的Unicode的支持,基于C Unicode技術(shù)報告ISO/IEC TR 19769:2004,增強了對Unicode的支持。包括為UTF-16/UTF-32編碼增加了char16_t和char32_t數(shù)據(jù)類型,提供了包含unicode字符串轉(zhuǎn)換函數(shù)的頭文件 . 6、刪除了 gets() 函數(shù),使用一個新的更安全的函數(shù)gets_s()替代。 7、增加了邊界檢查函數(shù)接口,定義了新的安全的函數(shù),例如 fopen_s(),strcat_s() 等等。 8、增加了更多浮點處理宏。 9、匿名結(jié)構(gòu)體/聯(lián)合體支持,這個在gcc早已存在,C11將其引入標(biāo)準(zhǔn)。 10、靜態(tài)斷言(Static assertions),_Static_assert(),在解釋 #if 和 #error 之后被處理。 11、新的 fopen() 模式,(“…x”),類似 POSIX 中的 O_CREAT|O_EXCL,在文件鎖中比較常用。 12、新增 quick_exit() 函數(shù)作為第三種終止程序的方式。當(dāng) exit()失敗時可以做最少的清理工作。 13、_Atomic類型修飾符和 頭文件。 優(yōu)缺點 優(yōu)點 1、簡潔緊湊、靈活方便 C語言一共只有32個關(guān)鍵字,9種控制語句,程序書寫形式自由,區(qū)分大小寫。把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來。C 語言可以像匯編語言一樣對位、字節(jié)和地址進(jìn)行操作,而這三者是計算機(jī)最基本的工作單元。 2、運算符豐富 C語言的運算符包含的范圍很廣泛,共有34種運算符。C語言把括號、賦值、強制類型轉(zhuǎn)換等都作為運算符處理。從而使C語言的運算類型極其豐富,表達(dá)式類型多樣化。靈活使用各種運算符可以實現(xiàn)在其它高級語言中難以實現(xiàn)的運算。 3、數(shù)據(jù)類型豐富 C語言的數(shù)據(jù)類型有:整型、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來實現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運算。并引入了指針概念,使程序效率更高。 4、表達(dá)方式靈活實用 C語言提供多種運算符和表達(dá)式值的方法,對問題的表達(dá)可通過多種途徑獲得,其程序設(shè)計更主動、靈活。它語法限制不太嚴(yán)格,程序設(shè)計自由度大,如對整型量與字符型數(shù)據(jù)及邏輯型數(shù)據(jù)可以通用等。 5、允許直接訪問物理地址,對硬件進(jìn)行操作 由于C語言允許直接訪問物理地址,可以直接對硬件進(jìn)行操作,因此它既具有高級語言的功能,又具有低級語言的許多功能,能夠像匯編語言一樣對位(bit)、字節(jié)和地址進(jìn)行操作,而這三者是計算機(jī)最基本的工作單元,可用來寫系統(tǒng)軟件。 6、生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高 C語言描述問題比匯編語言迅速,工作量小、可讀性好,易于調(diào)試、修改和移植,而代碼質(zhì)量與匯編語言相當(dāng)。C語言一般只比匯編程序生成的目標(biāo)代碼效率低10%~20%。 7、可移植性好 C語言在不同機(jī)器上的C編譯程序,86%的代碼是公共的,所以C語言的編譯程序便于移植。在一個環(huán)境上用C語言編寫的程序,不改動或稍加改動,就可移植到另一個完全不同的環(huán)境中運行。 8、表達(dá)力強 C語言有豐富的數(shù)據(jù)結(jié)構(gòu)和運算符。包含了各種數(shù)據(jù)結(jié)構(gòu),如整型、數(shù)組類型、指針類型和聯(lián)合類型等,用來實現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)的運算。C語言的運算符有34種,范圍很寬,靈活使用各種運算符可以實現(xiàn)難度極大的運算。 C語言能直接訪問硬件的物理地址,能進(jìn)行位(bit)操作。兼有高級語言和低級語言的許多優(yōu)點。 它既可用來編寫系統(tǒng)軟件,又可用來開發(fā)應(yīng)用軟件,已成為一種通用程序設(shè)計語言。 另外C語言具有強大的圖形功能,支持多種顯示器和驅(qū)動器。且計算功能、邏輯判斷功能強大。 缺點 1. C語言的缺點主要表現(xiàn)在數(shù)據(jù)的封裝性上,這一點使得C在數(shù)據(jù)的安全性上有很大缺陷,這也是C和C++的一大區(qū)別。 2. C語言的語法限制不太嚴(yán)格,對變量的類型約束不嚴(yán)格,影響程序的安全性,對數(shù)組下標(biāo)越界不作檢查等。從應(yīng)用的角度,C語言比其他高級語言較難掌握。也就是說,對用C語言的人,要求對程序設(shè)計更熟練一些。
本文純屬原創(chuàng),禁止轉(zhuǎn)發(fā)
再多的文字也表達(dá)不完我們要學(xué)的東西,所以希望需要學(xué)習(xí)的朋友可以直接關(guān)注微信公眾號“編程語言”進(jìn)行學(xué)習(xí)。遇到問題可以加我們的學(xué)習(xí)群;群里面找老鳥給你們解答C/C++ 疑難雜題要視屏課程,要學(xué)習(xí)資源可以加QQ群97400519群文件下載
1.《什么是C語言?》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點,與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《什么是C語言?》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進(jìn)行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/junshi/637.html