c語言哪個公司
❶ c語言什麼時候誕生
1969-1973年在美國電話電報公司(AT&T)貝爾實驗室開始了C語言的最初研發。根據C語言的發明者丹尼斯·里奇 (Dennis Ritchie) 說,C 語言最重要的研發時期是在1972年。
C語言之所以命名為C,是因為C語言源自Ken Thompson發明的 B語言,而B語言則源自BCPL語言。
C語言的誕生是和UNIX操作系統的開發密不可分的,原先的UNIX操作系統都是用匯編語言寫的,1973年UNIX操作系統的核心用C語言改寫,從此以後,C語言成為編寫操作系統的主要語言。
❷ C語言是哪個公司的產品
C語言之所以要起名為「C」,是取的「BCPL」的第二個字母(第一個字母用來命名之前被發明的B語言) 。當C語言發展到頂峰的時刻,出現了一個版本叫C with Class,那就是C++最早的版本,在C語言中增加class關鍵字和類,那個時候有很多版本的C都希望在C語言中增加類的概念;後來C標准委員會決定為這個版本的C起個新的名字,那個時候徵集了很多種名字,最後採納了其中一個人的意見,以C語言中的++運算符來體現它是C語言的進步,故而叫C++,成立了C++標准委員會。 美國AT&T貝爾實驗室的本賈尼·斯特勞斯特盧普(Bjarne Stroustrup)博士在20世紀80年代初期發明並實現了C++(最初這種語言被稱作「C with Classes」)。一開始C++是作為C語言的增強版出現的,從給C語言增加類開始,不斷的增加新特性。虛函數(virtual function)、運算符重載(operator overloading)、多重繼承(multiple inheritance)、模板(template)、異常(exception)、RTTI、命名空間(name space)逐漸被加入標准。1998年國際標准組織(ISO)頒布了C++程序設計語言的國際標准ISO/IEC 1988-1998。C++是具有國際標準的編程語言,通常稱作ANSI/ISO C++。1998年是C++標准委員會成立的第一年,以後每5年視實際需要更新一次標准,下一次標准更新原定是在2009年,目前我們一般稱該標准C++0x,但是由於對於新特性的爭端激烈,除了在Technical Report 1(tr1)中的新增修改被基本確定外,完整的標准還遙遙無期。況且遺憾的是,由於C++語言過於復雜,以及經歷了長年的演變,直到現在(2010年)都沒有有一個編譯器完全符合這個標准。
編輯本段組成部分
根據Effective C++第三版第一條款的描述,現在C++由以下四個「子語言」組成: 1、C子語言。C++支持C語言的幾乎全部功能,主要是c89的部分,在語法上與C語言僅有極微妙的差別(如括弧表達式的左右值性,具體請參考C++標准文獻)。 2、面向對象的C++語言。C++語言原本不具備面向對象的設計功能,然而隨著面向對象編程的概念的提出以及如Java等語言的發展成熟,C++語言也開發出了支持面向對象功能的版本. 3、泛型編程語言。C++強大(但容易失控的)模板功能使它能在編譯期完成許多工作,從而大大提高運行期效率。 4、STL(C++標准模板庫,Standard Template Library)。隨著STL的不斷發展,它已經逐漸成為C++程序設計中不可或缺的部分,其效率可能比一般的native代碼低些,但是其安全性與規范性使它大受歡迎。 此外,包含在TR1等中的C++0x將實現的新功能在開發和測試中。
編輯本段語言發展
C++語言發展大概可以分為三個階段: 第一階段從80年代到1995年。這一階段C++語言基本上是傳統類型上的面向對象語言,並且憑借著接近C語言的效率,在工業界使用的開發語言中占據了相當大份額; 第二階段從1995年到2000年,這一階段由於標准模板庫(STL)和後來的Boost等程序庫的出現,泛型程序設計在C++中占據了越來越多的比重性。當然,同時由於Java、C#等語言的出現和硬體價格的大規模下降,C++受到了一定的沖擊; 第三階段從2000年至今,由於以Loki、MPL等程序庫為代表的產生式編程和模板元編程的出現,C++出現了發展歷史上又一個新的高峰,這些新技術的出現以及和原有技術的融合,使C++已經成為當今主流程序設計語言中最復雜的一員。
編輯本段入門書籍
C++是一種語言,僅僅是它的語法、特性、標准類庫就已經是一門非常高深的課程,所以在開始學習的時候,必須先要打好基礎。在市面上有很多Visual C++的書,雖然其中可能會花1-2章來介紹C++的基本特性,但是那絕對不會讓你入門。因此,初學者學習C++應該選擇針對C++語言本身的書籍,而不能是針對Visual C++、MFC或者Windows API的。 學習C++應該由易至難,循序漸進。以前經常有人說學習C++之前應該學習C語言。事實上那不是必須的,C++和C語言雖然有關系,但仍然是兩種不同的語言。當然,在學習C++之前學習過其他編程語言是很有好處的。那會使學習C++的速度更快,畢竟很多計算機語言的概念都是相通的。而對於零基礎的初學者來說,則是應該靜下心來,不要急躁。要成為C++的高手,不是那麼容易的,必須要花很大的努力。 從入門教材的選擇上,主要看學習者的自身情況。如果已經有過學習高級語言的經歷,那麼推薦使用譚浩強的《C++程序設計》。注意是04年版的,06年版的那本書是閹割版,上來就面向對象。雖然說C和C++是相似的,但是前面已經說了,C和C++應該作為兩種語言來學習,所以06年的那本內容就稍微欠缺一點了。譚浩強04版的這本書內容比較規整的,條理也很清晰。如果有過其他高級語言的基礎,那麼估計半年就能對C++的概況有個了解了。譚浩強老師的書已經成為了全國各大高等院校的教科書,是比較受到認可的。 如果是從零基礎開始學C++,那麼推薦使用潘嘉傑的《易學C++》。這本書是2008年出的新書,聽說是個學生在讀書的時候寫的。這本書網上有下載免費的電子版。這本書主要就是針對初學者的,講得也比較生動有趣,比較提得起學習的興趣。所以沒有基礎的初學者選這本書也是不錯的,就是想要很快成為高手,可能看這本書還不夠。 至於看完入門的書之後,就應該看一些高層次的書了。比如<<The C++ Programming Language>>和<<C++ Primer>>,同時也可以向STL、MFC、API等各個方向發展。如果對別的語言感興趣,還能去看看C#和Java,它們和C++從語法和很多概念上都是類似的。
編輯本段設計原則
· C++設計成靜態類型、和C同樣高效且可移植的多用途程序設計語言。 · C++設計成直接的和廣泛的支援多種程序設計風格(程序化程序設計、資料抽象化、面向對象程序設計、泛型程序設計)。 · C++設計成給程序設計者更多的選擇,即使可能導致程序設計者選擇錯誤。 · C++設計成盡可能與C兼容,籍此提供一個從C到C++的平滑過渡。 · C++避免平台限定或沒有普遍用途的特性。 · C++不使用會帶來額外開銷的特性。 · C++設計成無需復雜的程序設計環境。 出於保證語言的簡潔和運行高效等方面的考慮,C++的很多特性都是以庫(如STL)或其他的形式提供的,而沒有直接添加到語言本身里。關於此類話題,C++之父的《C++語言的設計和演化》 里做了詳盡的陳述。 Hello World程序
在使用兼容C89標准(也稱為ANSI C)的編譯器時,下面這個程序顯示「Hello, world!」然後結束運行:
(事實上這並不是符合98標准[ISO C++]的C++程序,而且在多數編譯器上這個程序也不能運行,若要在比較舊的編譯器上編譯該程序,應將stdio.h改為iostream.h)
#include <stdio.h>
int main()
{
printf("Hello, world!\n");
return 0;
}
(以上是c語言代碼,c++語言是c語言高一級的版本)
在使用兼容C++98標准(ISO/IEC 14882-1998)的編譯器時,下面的程序也是可以的:
#include <iostream.h>
int main()
{
cout << "Hello, world!" << endl;
return 0;
}
在使用兼容C++ STL的編譯器時,應當是:
#include <iostream>
using namespace std;
int main()
{
cout<<"Hello,world!"<<endl;
return 0;
}
根據ISO C++的規定,main函數的形式只能是
int main(void)
{
...
}
以及
int main(int argc,char * argv[])
{
...
}
盡管如此,但在Visual C++ 2003以前的Microsoft Visual Studio編譯器上,
void main()
{
...
}
也被支持,但這並不正確,也不標准。這樣的寫法會使程序代碼喪失跨平台的特性。每年都有專業人士規定C++的語法,這也是C++優於其他編程語言的原因之一,由它衍生的Java已成為通用編程語言中廣受歡迎的一種。
編輯本段代碼性能
一般認為,使用Java或C#的開發成本比C++低。但是,如果你能夠充分分析C++和這些語言的差別,會發現這句話的成立是有條件的。這個條件就是:軟體規模和復雜度都比較小。如果不超過3萬行有效代碼(不包括生成器產生的代碼),這句話基本上還能成立。否則,隨著代碼量和復雜度的增加,C++的優勢將會越來越明顯。造成這種差別的就是C++的軟體工程性。在Java和C#大談軟體工程的時候,C++實際上已經悄悄地將軟體工程性提升到一個前所未有的高度。這一點被多數人忽視,並且被大公司竭力掩蓋。 語言在軟體工程上的好壞,依賴於語言的抽象能力。從面向過程到面向對象,語言的抽象能力有了一個質的飛躍。但在實踐中,人們發現面向對象無法解決所有軟體工程中的問題。於是,精英們逐步引入、並拓展泛型編程,解決更高層次的軟體工程問題。(實際上,面向對象和泛型編程的起源都可以追溯到1967年,但由於泛型編程更抽象,所以應用遠遠落後於面向對象)。
編輯本段應用實例
哪些程序是用C++寫的: 主流的3種操作系統Windows內核都是用C語言和匯編寫的,上層高級特性是用C++寫的。 《魔獸世界》等幾乎所有的網路游戲,網路搜索引擎,我們所用的大多數軟體都是用C++寫的(硬體也有很多用到C++的)。 以下是一些C++的應用: Amazon:Software for large-scale e-commerce Apple: OS X is written in a mix of language, but a few important parts are C++(當然最核心的部分都是匯編與c語言). AT&T:The largest US telecommunications provider. o provisioning systems o systems for rapid network recovery after failure Autodesk: A large number of major number of application in the CAD domain Ericsson: o server platform. o TDMA-CDMA HLR o GSM-TDMA-CDMA mobility gateway Google: web search engine, etc。 HP: Here is a tiny fraction of HP's C++ apps: o C, C++, Fortran90 compilers, and linker for the new HP IA64 platform (these add to more than 1 million lines of C++ code). IBM: o OS/400. o K42: a high performance, open source, general-purpose operating system kernel for cache-coherent multiprocessors. Intel: o Vtune performace analysis software o compilers and optimizers o lots of chip design and manufacturing software JPL (Jet Propulsion Lab, NASA): Mars rover autonomous driving system (incl. scene analysis and route planning). C++ on Mars! Also lots of supporting software "on the ground" (i.e. Earth). Microsoft: o Windows XP o Windows NT (NT4 and 2000) o Windows 9x (95, 98, Me) o Microsoft Office (Word, Excel, Access, PowerPoint, Outlook) o Internet Explorer (including Outlook Express) o Visual Studio o SQL Mozilla: Firefox browser and Thunderbird mail client (open source) MySQL: MySQL Server (about 250,000 lines of C++) and MySQL Cluster. Arguably the world's most popular open source database Nokia: o Mobile Communications radio-station/internet bridges: FlexiGGSN (Gateway GPRS Support Node) and FlexiSGSN (Server GPRS Support Node). o MSC/HLR Sun: o The HotSpot Java Virtual Machine is written in C++ Symbian OS: rationale: "[...] using C++ for all system code, from the kernel upwards." This is one of the most widespread OS's for cellular phones KDE from linux is written in C++. telephone systems: I think it would be almost easier to list the systems which aren't written in C++ C++寫出的軟體,還包括 VLC, 著名的開源視頻播放器; LAMMPS,著名分子動力學模擬軟體,其中包括一部分Fortran代碼;
編輯本段編程技巧
使用new和delete進行動態內存分配和釋放
運算符new和delete是C++新增的運算符,提供了存儲的動態分配和釋放功能。它的作用相當於C語言的函數malloc()和free(),但是性能更為優越。使用new較之使用malloc()有以下的幾個優點: (1)new自動計算要分配類型的大小,不使用sizeof運算符,比較省事,可以避免錯誤。 (2)自動地返回正確的指針類型,不用進行強制指針類型轉換。 (3)可以用new對分配的對象進行初始化。 使用例子: (1)int* p; p=new int[10]; //分配一個含有10個整數的整形數組 delete[] p; //刪除這個數組 (2)int* p; p=new int (100);//動態分配一個整數並初始化
使用inline內聯函數替代宏調用
對於頻繁使用的函數,C語言建議使用宏調用代替函數調用以加快代碼執行,減少調用開銷。但是宏調用有許多的弊端,可能引起不期望的副作用。例如宏:#define abs(a)(a)<0?(-a):(a)),當使用abs(i++)時,這個宏就會出錯。 所以在C++中應該使用inline內聯函數替代宏調用,這樣既可達到宏調用的目的,又避免了宏調用的弊端。 使用內聯函數只須把inline關鍵字放在函數返回類型的前面。例如: inline int Add(int a,int b);//聲明Add()為內聯函數 這樣編譯器在遇到Add()函數時,就不再進行函數調用,而是直接嵌入函數代碼以加快程序的執行。
使用函數重載
在C語言中,兩個函數的名稱不能相同,否則會導致編譯錯誤。而在C++中,函數名相同而參數數據類型不同的兩個函數被解釋為重載。例如: void PutHz(char* str);//在當前位置輸出漢字 void PutHz(int x,?int y,?char * str);//在x,y處輸入數字 使用函數重載可以幫助程序員處理更多的復雜問題,避免了使用諸如intabs()、fabs()、dabs()等繁雜的函數名稱;同時在大型程序中,使函數名易於管理和使用,而不必絞盡腦汁地去處理函數名。同時必須注意,參數數據類型相同,但是函數返回類型不同的兩個函數不能重載。
用引用(reference)代替指針進行參數傳遞
在C語言中,如果一個函數需要修改用作參數的變數值的時候 ,參數應該聲明為指針類型。例如: void Add(int *a) { (*a)++; } 調用時則使用 Add(&x); //其中x為int或可以轉化為int的類型,如unsigned int, 但這時候編譯器通常會給出warning 對於復雜的程序,使用指針容易出錯,程序也難以讀懂。在C++中,對於上述情況 可以使用引用來代替指針,使程序更加清晰易懂。引用就是對變數取的一個別名,對引用進行操作,這就相當於對原有變數進行操作。例如使用引用的函數定義為: void Add(int& a) { a++;//a為一個整數的引用 } 調用時使用 Add(x);//其中x為int 這個函數與使用指針的上一個函數的功能是一樣的,然而代碼卻更為簡潔和清晰易懂。
使用預設參數
在C++中函數可以使用預設參數,例如: void PutHzxy(char *str,int x=-1, int y=-1) { if(x==-1) x=wherex(); if(y==-1) x=wherex(); moveto(x,y); PutHx(str); } 可以有三種方式調用函數PutHzxy(),例如: PutHzxy("C++語言");//使用預設參數,在當前位置輸出 PutHzxy("C++語言",10,10);//沒有使用預設參數 PutHzxy("C++語言",10);//對y使用預設參數,指定x的位置 通常的情況下,一個函數應該具有盡可能大的靈活性。使用預設參數為程序員處理更大的復雜性和靈活性問題提供了有效的方法,所以在C++的代碼中都大量地使用了預設參數。 需要說明的是,所有的預設參數必須出現在不預設參數的右邊。亦即,一旦開始定義預設參數,就不可再說明非預設的參數。否則當你省略其中一個參數的時候,編譯器無法知道你是自定義了這個參數還是利用了預設參數而定義了非預設的參數。 例如: void PutHzxy(char*str,int x=-1,int y=-1)//正確 void PutHzxy(int x=-1,int y=-1,char*str)//錯誤
使用STL
STL(Standard Template Library,標准模板庫), STL的代碼從廣義上講分為三類:algorithm(演算法)、container(容器)和iterator(迭代器),並包括一些工具類如auto_ptr。幾乎所有的代碼都採用了模板類和模版函數的方式,這相比於傳統的由函數和類組成的庫來說提供了更好的代碼重用機會。 #include<vector>// 包含相關的頭文件/ typedef std::vector<int> intvector;//使用typedef 使代碼看起來更簡潔 int main() { intvector vi; for(int i=0;i<10,i++) vi.push_back(i);//使用push_back添加元素 for(int i=0;i<vi.size();i++) std::cout<<vi[i]<<" ";//[]操作符被重載,使得我們可以像訪問數組一樣訪問vector中的元素 }
編輯本段開發方式
在unix世界有大量的程序員是傳統的非IDE的方式進行軟體開發。一般是如下組合: 1.編譯器:gcc,clang等 2.編輯器:一般是vim/emacs 3.make:gnu make 或者bsd 的pmake等,功能與用法基本一樣 4.版本管理:cvs,svn,git等 5.代碼閱讀:cscope,ctags,lxr等
編輯本段開發環境
1.Visual Studio(Visual C++) 2.Borland C++ Builder 3.Eclipse(Myln + CDT + Mingw32 + GCC) 4.Dev-C++(Mingw32 + GCC) 5.Code::Blocks(可配合多款編譯核心使用) 6.Codelite 7.C-Free 如上所示,目前流行的GNU GCC和微軟的Visual Studio系列各執一套基本的編譯鏈,其他的IDE都是衍生產品
❸ C語言是哪家公司創造的
C語言是一種計算機程序設計語言。它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾研究所的D.M.Ritchie於1972年推出。1978後,C語言已先後被移植到大、中、小及微型機上。它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬體的應用程序。它的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到C語言,適於編寫系統軟體,三維,二維圖形和動畫。具體應用比如單片機以及嵌入式系統開發。
❹ c語言是哪個公司的
C語言是一種面向過程的計算機程序設計語言,它是目前眾多計算機語言中舉世公認的優秀的結構程序設計語言之一。它由美國貝爾研究所的D.M.Ritchie於1972年推出。1978後,C語言已先後被移植到大、中、小及微型機上。
❺ Dev C++是哪個公司做的謝謝!
AT&T公司。
AT&T發布的第一個Dev-C++編譯系統實際上是一個預編譯器(前端編譯器),真正的Dev-C++程序是在1988年誕生的。
Dev-C++是一個C&C++開發工具,它是一款自由軟體,遵守GPL協議。它集合了GCC、MinGW32等眾多自由軟體,並且可以從devpak.org上取得最新版本的各種工具支持,而這一切工作都是來自全球的狂熱者所做的工作,並且你擁有對這一切工具自由使用的權利,包括取得源代碼等,前提是你也必須遵守GNU協議。
Dev-C++每一天都在進步著,因為它是一個自由軟體。 Dev-C++是一個非常實用的編程軟體,多款著名軟體均由它編寫而成,它在C的基礎上,增強了邏輯性。
C語言是1972年由美國貝爾實驗室(AT&TBell)的D.M.Ritchie研製成功的。它不是為了初學者設計的,而是為計算機專業人員設計的。最初它是作為寫UNIX操作系統的一種工具,在貝爾實驗室內部使用。後來C語言不斷改進,人們發現它功能豐富、表達能力強、使用靈活方便、應用面廣、目標程序效率高、可移植性好,既具有高級語言的優點,又具有低級語言的許多優點,特別適合於寫系統軟體,因此C語言從實驗室走向美國,從美國走向世界。到20世紀70年代,它已風靡全世界。無論是在中國還是在外國,C語言都成為了計算機開發人員的基本功。
但是隨著軟體規模的增大,用C語言編寫程序漸漸顯得有些吃力了。C語言是結構化和模塊化的語言,它是面向過程的。在處理較小規模的程序時,程序員用C語言還是比較得心應手。但是當問題比較復雜、程序的規模比較大時,結構化程序的設計方法就顯出它的不足。
為了解決軟體設計的危機,在20世紀80年代,人們提出了面向對象的程序設計(object oriented programming,OOP),需要設計出能支持面向對象的程序設計方法的新的語言。在實踐中,人們發現由於C語言是如此的深入人心,使用如此廣泛,面對程序設計方法的革命,最好的辦法不是另外發明一種語言去代替它,而是在它原有的基礎上加以發展。在這種形式下,C++應運而生。C++是由貝爾實驗室(AT&TBell)的Bjarne Stroustrup博士及其同事於20世紀80年代初在C語言的基礎上開發成功的。
❻ c++是哪個公司出的
C++,這個詞在中國大陸的程序員圈子中通常被讀做「C加加」,而西方的程序員通常讀做「C plus plus」,它是一種使用非常廣泛的計算機編程語言。C++是一種靜態數據類型檢查的,支持多重編程範式的通用程序設計語言。它支持過程化程序設計、數據抽象、面向對象程序設計、製作圖標等等泛型程序設計等多種程序設計風格。
美國AT&T貝爾實驗室的本賈尼·斯特勞斯特盧普(Bjarne Stroustrup)博士在20世紀80年代初期發明並實現了C++(最初這種語言被稱作「C with Classes」)。一開始C++是作為C語言的增強版出現的,從給C語言增加類開始,不斷的增加新特性。虛函數(virtual function)、運算符重載(operator overloading)、多重繼承(multiple inheritance)、模板(template)、異常(exception)、RTTI、名字空間(name space)逐漸被加入標准。1998年國際標准組織(ISO)頒布了C++程序設計語言的國際標准ISO/IEC 14882-1998。C++是具有國際標準的編程語言,通常稱作 ANSI/ISO C++。1998年是C++標准委員會成立的第一年,以後每5年視實際需要更新一次標准,下一次標准更新將是在2009年,目前我們一般稱該標准C++0x。遺憾的是,由於C++語言過於復雜,以及他經歷了長年的演變,直到現在(2004年)只有少數幾個編譯器完全符合這個標准(這么說也是不完全正確的,事實上,至今為止沒有任何一款編譯器完全支持ISO C++)。
另外,就目前學習C++而言,可以認為他是一門獨立的語言;他並不依賴C語言,我們可以完全不學C語言,而直接學習C++。根據《C++編程思想》(Thinking in C++)一書所評述的,C++與C的效率往往相差在正負5%之間。所以有人認為在大多數場合C++ 完全可以取代C語言(然而我們在單片機等需要謹慎利用空間、直接操作硬體的地方還是要使用C語言)。
❼ c語言什麼時候誕生的
1972年。
C 語言里的 時間/日期 計算 起點,有個 unix timestamp(unix 時間圖章)是 Jan 1, 1970 UTC。所以 c 語言發明時間,應當是 1970年1月1日以後。
1969-1973年在美國電話電報公司(AT&T)貝爾實驗室開始了C語言的最初研發。根據C語言的發明者丹尼斯·里奇 (Dennis Ritchie) 說,C 語言最重要的研發時期是在1972年。
細節: 最初的Unix是用匯編語言編寫的,一些應用是由叫做B語言的解釋型語言和匯編語言混合編寫的,在移植的過程中遇到不少麻煩。早在對Multics項目調整過程中,就迫切需要一門高級計算機語言做工具,為了解決程序的可移植性問題,肯·湯普遜和丹尼斯·里奇決定對它進行簡單改進,形成 「New B」 語言。但 New B 在Unix的移植方面依然不盡人意,此後里奇又對 New B 語言做了改進,C語言誕生。