c語言前身
❶ 第一個 C 語言編譯器是怎樣編寫的
第一個c語言編譯器
是先制定了簡單的C語法後,用B語言寫的
這個是C語言的前身。
當時B語言已經比較成熟 只不過 沒有C強大
於是 發明了C語言
之所以叫C,其實也是因為在B基礎上加一。
後續的C編譯器 就都是用C寫的了。
❷ C語言是在什麼語言的基礎上發展起來的
C語言的前身是1967年由Martin Richards為開發操作系統和編譯器而提出的兩種高級程序設計語言BCPL和B.BCPL。Ken Thompson在BCPL的基礎上,提出了新的功能更強的B語言,並在1970年用B語言開發出UINX操作系統的早期版本。BCPL語言和B語言都屬於「無數據類型」的程序設計語言,即所有的數據都是以「字」(Word)為單位出現在內存中,由程序員來區分數據的類型。
1972年,貝爾實驗室的Dennis Ritchie在BCPL語言和B語言的基礎上,又增加了數據類型及其他一些功能,提出了C語言,並在DEC PDP-11計算機上實現。以編寫UINX操作系統而聞名的C語言,目前已經成為幾乎所有操作系統的開發語言。應當指出的是,C語言的實現是與計算機無關的,只要精心設計,就可以編寫出可移植的(Portable)C語言程序。
到20世紀70年代末,C語言已經基本定型,這個C語言版本現在被稱為「傳統C語言」。1978年,Kernighan和Ritchie編著的《C程序設計語言》出版後,人們開始關注起程序設計語言家族的這個新成員,並最終奠定了C語言在程序設計中的地位。《C程序設計語言》也成為歷史上計算機科學領域最成功的專業書籍之一。
當年C語言還是一種與硬體相關的語言,為了讓它能夠運行於各種類型的計算機上,即各種硬體平台(Hardware platforms)上,人們就提出了多種相似但卻常常不能相互兼容的C語言版本。這就出現了一個很嚴重的問題:能夠在一台機器上運行的C語言程序往往不能夠在另外一台機器上運行,除非程序被重新編寫。因此,退出C語言標準的呼聲日益強烈。1983年,美國國家標准委員會(American National Standards Committee,ANSC)下屬的計算機與信息處理部(X3)成立了「X3J11技術委員會」,專門負責制定「一個無二義性的硬體無關的C語言標准」。1989年,「標准C」誕生。1999年,這個標准被更新為「INCITS/ISO/IEC9899-1999」(即C99)。
❸ C語言是怎麼製造出來的是個機密嗎
C語言,是上世紀由美國貝爾實驗室的兩位大神,丹尼斯·里奇(Dennis MacAlistair Ritchie)和 肯尼斯·藍·湯普森(Kenneth Lane Thompson)開發的。起因是湯普森沒事做的時候,背著老闆找了台空閑的小型機pdp-7,編寫一個小游戲。(因為當時計算機屬於稀缺資源,不能象現在這樣隨意使用。但這台小型機沒有操作系統,由於他就著手給這台機器開發操作系統,也就是Unix操作系統的前身。後來里奇也加入了進來,為了方便寫操作系統,由於當時的語言(他們採用的是B語言)功能欠缺,不能滿足他們的需求,於是他們就開始對B語言進行改造。最終,修改出了C語言,流行至今。
從中可以看出,C語言並不是機密;當時C語言,Unix操作系統的源碼,都是美國各大高校可以拿到的,因為當時的環境是開源。
不過搞笑的是,這個事情的初衷是為了寫游戲,玩游戲,結果到了後來,游戲被忘記了;
❹ 計算機C語言的前身B語言是哪種語言
B語言是C語言的前身,C語言是以B語言為基本開發的,
C語言源自Ken
Thompson發明的B語言,而
B語言則源自BCPL語言版。
B語言是貝爾實驗室開發的一種通用的程序設計語言,它是於1969年前後由美國貝爾實驗室的電腦科學家肯·湯普森(Ken
Thompson)在丹尼斯·利奇(Dennis
Ritchie)的支持下設計出來。
C語言是一門通用計算機編程語言,應用廣泛。1972年,美國貝爾實驗室的
D.M.Ritchie
在B語言的基礎上最終設計出了一種新的權語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。
❺ c語言的發展史
C語言,是一種通用的、過程式的編程語言,廣泛用於系統與應用軟體的開發。具有高效、靈活、功能豐富、表達力強和較高的移植性等特點,在程序員中備受青睞。
C語言是由UNIX的研製者丹尼斯·里奇(Dennis Ritchie)於1970年 由 肯·湯普遜(Ken Thompson)所研製出的B語言的基礎上發展和完善起來的。目前,C語言編譯器普遍存在於各種不同的操作系統中,例如UNIX、MS-DOS、Microsoft Windows及Linux等。C語言的設計影響了許多後來的編程語言,例如C++、Objective-C、Java、C#等。
後來於1980年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標准局(American National Standard Institution)為C語言訂定了一套完整的國際標准語法,稱為ANSI C,作為C語言的標准。1980年代至今的有關程序開發工具,一般都支持符合ANSI C的語法。
C語言是一個程序語言,設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。C語言也很適合搭配匯編語言來使用。盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
早期發展
C語言最早是由丹尼斯·里奇為了在PDP-11電腦上運行的UNIX系統所設計出來的編程語言,第一次發展在1969年到1973年之間。之所以被稱為「C」是因為C語言的很多特性是由一種更早的被稱為B語言的編程語言中發展而來。早期操作系統的核心大多由匯編語言組成,隨著C語言的發展,C語言已經可以用來編寫操作系統的核心。1973年,Unix操作系統的核心正式用C語言改寫,這是C語言第一次應用在操作系統的核心編寫上。
K&R C
1978年,丹尼斯·里奇(Dennis Ritchie)和布萊恩·柯林漢(Brian Kernighan)合作出版了《C程序設計語言》的第一版。書中介紹的C語言標准也被C語言程序員稱作「K&R C」,第二版的書中也包含了一些ANSI C的標准。K&R C主要介紹了以下特色:
結構(struct)類型
長整數(long int)類型
無符號整數(unsigned int)類型
把運算符=+和=-改為+=和-=。因為=+和=-會使得編譯器不知道用戶要處理i = -10還是i =- 10,使得處理上產生混淆。
即使在後來ANSI C標准被提出的許多年後,K&R C仍然是許多編譯器的最低標准要求,許多老舊的編譯仍然運行K&R C的標准。
ANSI C 和 ISO C
1989年,C語言被 ANSI 標准化(ANSI X3.159-1989)。標准化的一個目的是擴展K&R C。這個標准包括了一些新特性。在K&R出版後,一些新特性被非官方地加到C語言中。
void 函數
函數返回 struct 或 union 類型
void * 數據類型
在ANSI標准化自己的過程中,一些新的特性被加了進去。ANSI也規定了一套標准函數庫。ANSI ISO(國際標准化組織)成立 ISO/IEC JTC1/SC22/WG14 工作組,來規定國際標準的C語言。通過對ANSI標準的少量修改,最終通過了 ISO 9899:1990。隨後,ISO標准被 ANSI 採納。
傳統C語言到ANSI/ISO標准C語言的改進包括:
增加了真正的標准庫
新的預處理命令與特性
函數原型允許在函數申明中指定參數類型
一些新的關鍵字,包括 const、volatile 與 signed
寬字元、寬字元串與位元組多字元
對約定規則、聲明和類型檢查的許多小改動與澄清
WG14工作小組之後又於1995年,對1985年頒布的標准做了兩處技術修訂(缺陷修復)和一個補充(擴展)。下面是 1995 年做出的所有修改:
3 個新的標准庫頭文件 iso646.h、wctype.h 和 wchar.h
幾個新的記號與預定義宏,用於對國際化提供更好的支持
printf/sprintf 函數一系列新的格式代碼
大量的函數和一些類型與常量,用於多位元組字元和寬位元組字元
C99在ANSI的標准確立後,C語言的規范在一段時間內沒有大的變動,然而C++在自己的標准化創建過程中繼續發展壯大。《標准修正案一》在1995年為C語言創建了一個新標准,但是只修正了一些C89標准中的細節和增加更多更廣的國際字元集支持。不過,這個標准引出了1999年ISO 9899:1999的發表。它通常被稱為C99。C99被ANSI於2000年3月採用。
在C99中包括的特性有:
增加了對編譯器的限制,比如源程序每行要求至少支持到 4095 位元組,變數名函數名的要求支持到 63 位元組(extern 要求支持到 31)。
增強了預處理功能。例如:
宏支持取可變參數 #define Macro(...) __VA_ARGS__
使用宏的時候,允許省略參數,被省略的參數會被擴展成空串。
支持 // 開頭的單行注釋(這個特性實際上在C89的很多編譯器上已經被支持了)
增加了新關鍵字 restrict, inline, _Complex, _Imaginary, _Bool
支持 long long, long double _Complex, float _Complex 等類型
支持不定長的數組,即數組長度可以在運行時決定,比如利用變數作為數組長度。聲明時使用 int a[var] 的形式。不過考慮到效率和實現,不定長數組不能用在全局,或 struct 與 union 里。
變數聲明不必放在語句塊的開頭,for 語句提倡寫成 for(int i=0;i<100;++i) 的形式,即i 只在 for 語句塊內部有效。
允許採用(type_name){xx,xx,xx} 類似於 C++ 的構造函數的形式構造匿名的結構體。
初始化結構的時候允許對特定的元素賦值,形式為:
struct {int a[3],b;} foo[] = { [0].a = {1}, [1].a = 2 };
struct {int a, b, c, d;} foo = { .a = 1, .c = 3, 4, .b = 5} // 3,4 是對 .c,.d 賦值的
格式化字元串中,利用 \u 支持 unicode 的字元。
支持 16 進制的浮點數的描述。
printf scanf 的格式化串增加了對 long long int 類型的支持。
浮點數的內部數據描述支持了新標准,可以使用 #pragma 編譯器指令指定。
除了已有的 __line__ __file__ 以外,增加了 __func__ 得到當前的函數名。
允許編譯器化簡非常數的表達式。
修改了 / % 處理負數時的定義,這樣可以給出明確的結果,例如在C89中-22 / 7 = -3, -22 % 7 = -1 ,也可以-22 / 7= -4, -22 % 7 = 6。 而C99中明確為 -22 / 7 = -3, -22 % 7 = -1,只有一種結果。
取消了函數返回類型默認為 int 的規定。
允許 struct 定義的最後一個數組不指定其長度,寫做 [] 。
const const int i 將被當作 const int i 處理。
增加和修改了一些標准頭文件,比如定義 bool 的 <stdbool.h> ,定義一些標准長度的 int 的 <inttypes.h> ,定義復數的 <complex.h> ,定義寬字元的 <wctype.h> ,類似於泛型的數學函數 <tgmath.h>, 浮點數相關的 <fenv.h>。 在<stdarg.h> 增加了 va_ 用於復制 ... 的參數。<time.h> 里增加了 struct tmx ,對 struct tm 做了擴展。
輸入輸出對寬字元以及長整數等做了相應的支持。
❻ 為什麼C語言要叫C語言,不叫A語言或者B語言
c語言的前身是b語言
這個b是根據創始人的名字而來的,是他的名字首字母
既然c是b語言的前身,
等於他的進階語言
按abc的說法
就叫成c語言了。
而c語言的進階又不叫d語言了
變成c++了