⑴ C++可以做什麼
17.1 C++語言
在決定是否使用C++語言之前,最好是搞清楚這種語言的實質,讓我們看一下C++的歷史和現狀。
17.1.1 C++簡史
剛開始形成的是c語言,那些想建立更快更有效的代碼的程序員非常欣賞C語言,有一位名叫Bjarne Stroustrup的人卻不滿足於僅僅是生產快速代碼,他想創建面向對象的C語言編程。他開始對C語言的內核進行必要的修改,使其能滿足面向對象模型的要求。C++從此產生。
Bjarne Stroustrup是C++的最初設計者和實現者。它自誕生以來,經過開發和擴充已成一種完全成熟的編程語言。現在C++已由ANSI、BSI、DIN、其他幾個國家標准機構和ISO定為標准。ISO標准於1997年11月4日經投票正式通過。
C++標准演變了許多年。C++模板是近幾年來對此語言的一種擴展,模板是根據類型參數來產生函數和類的機制,有時也稱模板為「參數化的類型」。使用模板,可以設計一個對許多類型的數據進行操作的類,而不需要為每個類型的數據建立一個單獨的類。標准模板庫(Standard Tempalte Library,STL )和微軟的活動模板庫(Active Tempalte Library,備喚ATL )都基於這個C++語言擴展。
C++標准可分為兩部分, C++語言本身和C++標准庫。C++標准庫對於Visual C++是相當新的,實際上微軟只是在發布Visual C++ 5.0時去除了罩滾耐一些「bug」。標准庫提供了標準的輸入/輸出、字元串、容器(如矢量、列表和映射等)、非數值運算(如排序、搜索和合並等)和對數值計算的支持。應該說, C/C++包含了相對少的關鍵字,而且很多最有用的函數都來源於庫,C++標准庫實現容器和演算法的部分就是STL。
STL是數據結構和演算法的一個框架,數據結構包括矢量、列表和映射等,演算法包括這些數據結構的查找、拷貝和排序等。1994年7月,ANSI/ISO C++標准委員會投票決定接受STL為C++標准庫的一部分,這個建議是根據Alex Stepanov、Meng Lee和David Musser這三人的編程和軟體庫研究提出的。STL的產生是為了滿足通用性的設計目標,而不是為了提高性能。
那麼微軟對C++標準的態度怎什麼樣?微軟運行VC++與Plum-Hall C++,想比較得到的分數在92%和93%之間。為什麼不是100%的一個原因是跟蹤這個標准並同時建立一個編譯器比較困難,微軟也考慮了對現有編碼兼容的重要性,有時他們不得不偏離標准以保持這個兼容性。
17.1.2 使用C++的原因
應該有充分的理由使用C++創建伺服器組件,而不只是為了給上司一個好印象才使用C++。如果以前沒用過C++,你必須要盡力學習。
1. 性能
性能有個兩方面,演算法速度和機器代碼效率。一個演算法可以定義為數據通過系統的概念化的路徑,它描述一些點,在這些點上,數據能夠被操作並物春可轉換產生某個結果。例如,一個演算法定義為獲取一個字元串,計算字元串中的字元個數,並作為結果返回的過程。演算法與
語言是獨立的,所以在編程之前必須設計演算法,編寫一個快速程序的第一個步驟是設計良好的演算法,能以最少的操作步驟得出問題的答案。第二個步是選擇語言,這也影響程序的速度。
從性能的角度考慮,用匯編語言編寫程序是最佳的選擇,它是計算機能理解的自然語言。但是,幾乎沒有人用匯編語言編寫完整的程序,因為這樣做極其乏味。另一個最佳的選擇是C語言。然而,由VC++提供的所有工具都產生C++,而不是C。使用VC++的向導可以生成大量的使用代碼,而不必人工地編寫代碼。從編寫程序的難易程度和程序的性能綜合考慮, C++是最佳的選擇C++性能良好,因為它被編譯為機器代碼。對於VBScript和Java等語言,代碼在運行時由程序解釋,而且每次運行程序時都要將代碼轉換為機器碼,這樣做效率比較低,不僅僅是已編譯過的C++程序運行得較快,而且微軟C++編譯器已存在多年。這意味著微軟的編譯器程序員已經把許多優點集中到編譯器上,以致於它能產生非常高效的機器碼。因為C++是編譯語言,而且非常自然,比VB更接近機器代碼,所以由C++編譯器產生的代碼一定比VB的編譯代碼效率更高。
2. 錯誤處理
一個好的程序與一個偉大的程序的區別就是其是否具有良好的錯誤處理支持。實際上,如果在實現中首先進行錯誤處理,而不是在最後才進行,那麼整個程序的開發和測試過程會更加完美。但是,錯誤處理只能與語言所支持的內容相一致。
VBScript具有基本的錯誤處理支持功能。在默認情況下,不能捕獲VBScript中的錯誤。每次懷疑產生錯誤時,要調用On Error Resume Next功能,並檢查Error對象。
而C++中的錯誤處理比較好,這是因為有「異常處理」,本章的後面部分將詳細介紹。
3. 最小的依賴性
正如上面所說,C++是一種編譯語言,即C++代碼在執行之前已轉換為機器碼。只要此代碼不依賴於外部的動態鏈接庫(DLL),C++就可以在不需要安裝額外程序的情況下移動到運行同樣操作系統的其他機器和微處理器上,而移動Java程序時需要先安裝Java運行期庫。
4. 利用現有的代碼
由於C和C++已經存在許多年了,現在有許多可利用的代碼,你的伺服器組件可以使用現有的C/C++代碼或庫。例如統計庫和到老系統的C介面。
5. 最大化COM特徵
COM與C++很接近,實際上, Don Box(COM的權威)在他的《Essential COM》一書的第一章寫道:「COM就是更好的C++」。他說明了COM規范是如何從C++語言規律中產生出來的。通過理解C++,會對COM有更深的理解。
某些語言不能利用所有的COM特徵,而在C++中,幾乎可以使用所有的COM特徵。
17.1.3 不使用C++的原因
知道什麼時候使用C++是重要的,同樣,知道什麼時候不使用C++也是重要的。想像一下那些長期維護代碼的人,如果他們中沒有一些C++程序員支持C++,那麼開發者們不得不把眼光轉向另外一些他們熟悉的語言。
改變C++組件時,為了看到這些改變的結果,必須重新編譯該組件代碼,這會花費很長的開發時間。C++不能像ASP頁面代碼那樣,只使用記事本,改變代碼的一行,重新裝載而得到結果。因此,如果某些工作需要經常變化(如原型),不要用C++。
在C++中,對一些致命的錯誤不能獲得更多的保護,寫一個使組件崩潰的代碼是很容易的。這是為了提供快速代碼而付出的代價, C++不會停下來去檢查代碼是否按設計運行能否使程序不崩潰依賴於開發者的技巧。如果在這方面花的時間較少或剛剛學習C++,最好不要使用C++。等到已經意識到C++中所有容易犯的錯誤,而且在檢測組件之前花了許多時間,才可以使用C++,如果想很快、很容易地建立一個組件,而且也不考慮該組件的執行速度,那麼使用VB吧!
17.1.4 把ASP技巧轉到C++上
學習新東西的最好方法就是利用現有的技巧。對於ASP開發者來說,已經學習了C++所要求的許多技巧,特別是,JScript語法和ActiveX或COM的面向對象編程的概念。
1. JScript
大部分ASP開發者都用JScript在瀏覽器上使用DHTML。JScript的語法與C非常相似,所以,如果懂得JScript,那麼就懂得基本的C語法。當然,只是C++語法的子集。C++有許多額外的語法來支持面向對象編程,這就是我們下一步要做的。
2. 面向對象編程
如果你在VB中使用過類(class),則對任何COM對象和文檔對象模型(Document ObjectModel,DOM )都應熟悉,因為已經有了面向對象編程(OOP)的概念。在前面已經說過, C和C++的區別是C++支持面向對象編程。
⑵ C語言有什麼發展前景
C語言工程師的發展前景
行業倍受青睞
據不完全統計,全世界的C語言開發者已超過1000萬人,人數遠超其他編程語言開發者,位居全球首位
市場人才緊缺
不只是「北上廣深」,大多數二線城市如南京、武漢,合肥等地,C語言開發者也是市場缺口巨大
發展潛力大
自2002年起,C語言常年位居世界編程語言排行榜榜首
⑶ C語言難學嗎,學來做什麼的
你對他感興趣就不難。
C語言可以被移植到大、中、小及微型機上悄褲,它可以作為工作拍運滾系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不襲余依賴計算機硬體的應用程序。它的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到C語言,適於編寫系統軟體,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統開發。
總而言之,c語言是一種很強大的語言。
⑷ 為什麼C語言依然如此流行
為什麼C語言依然如此流行?由於種種原因,業界選擇了C,其中最主要的原因就在於它的效率。優秀C程序的效率幾乎和匯編語言程序一樣高,但C程序明顯比匯編語言程序更易於開發。和許多其他語言相比,C給予程序員更多的控制權,如控制數據的存儲位置和初始化過程等。C缺乏「安全網」特性,這雖有助於提高它的效率,但也增加了出錯的可能性。如,C對數組下標引用和指針訪問並不進行有效性檢查,這可以節省時間,但在使用這些特性時就必須特別小心。如果你在使用C語言時能夠嚴格遵守相關規定,就可以避免這些潛在的問題。C提供了豐富的操作符集合,它們可以讓程序員有效地執行一些底層的計算如移位和屏蔽等,而不必求助匯編語言。C的這個特點使很多人把C稱為「高層」的匯編語言。但是,當需要的時候,C程序可以很方便地提供匯編語言的介面。這些特性使C成為實現操作系統和嵌入性控制器軟體的良好選擇。C流行的另一個原因是由於它的普遍存在。C 編譯器在許多機器上實現。另外,ANSI標准提高了C程序在不同機器之間的可移植性。最後,C是C++的基礎。C++提供了一種和C不同的程序設計和實現的觀點。然而,如果你對C的知識和技巧,如指針和標准庫等成竹在胸,將非常有助於你成為一名優秀的C++程序員。
⑸ C語言在編程語言發展歷史中處於什麼地位,對編程語言的發展產生了什麼影響,對
編程語言的發展歷程可以簡單劃分為以下幾個階段 :
機器語言——>匯編語言——>高級計算機語言
1、機器語言:最初的計算機所使用的是由「0」和「1」組成的二進制數,二進制是計算機的語言的基礎。由於這種語言是直接對計算機硬體進行操作,所以在特定型號的計算機上面,運算效率也是很高的,機器語言的出
現對於未來的計算機語言發展起到了很好的推動作用,所以機器語言也是第一代計算機語言。
2、匯編語言:匯編語言是在機器語言的基礎上誕生的一門語言,用一些簡潔的英文字母、符號串來替代一個特定的指令的二進制串。匯編語言同樣也是直接對硬體進行操作,對於計算機硬體的功能和特長的發揮已有了很大進步,它精煉而質量高,所以至今仍是一種常用的程序開發語言。
3、高級計算機語言:在與計算機的不斷交流中,人們對計算機程序的移植性需求不斷提高,此時急需要一種不依賴於特定型號的計算機的語言,用這種語言編寫的程序能在在各種平台都正常運行。
C語言是一種高級計算機語言,它既有高級語言的特點,又具有匯編語言的特點。它可以用來編寫系統軟體,也可以用來編寫應用軟體。C語言語法中對操作符的大量靈活的使用,極大的影響了後來的一批高級程序語言,是其他高級語言的基礎。
請採納,謝謝
⑹ C語言有什麼發展前景
C語言的發展前景主要在嵌入式和操作系統開發上。這兩種底層的技術離不開C語言,也是C語言一直占據流行語言前三位置的主要原因。所以,學習編程,C語言是一門不錯的選擇,以後還可以拓展到其他編程語言。
⑺ FPGA開發用C語言編寫當前的現狀如何
有些工具號稱能把C/C++高級語言的演算法直接綜合,好像xilinx新出的vivado也有這種功能,但理論上這樣效率不高的,很難最大程度優化FPGA資源的使用。硬體工程師大多不接受用C語言去開發FPGA,因為FPGA本槐螞身是硬體邏輯的實現,和用來指示CPU執行的C語言相差很森明指大。但隨著FPGA資源越來越大,系統演算法越來越復雜,此配綜合器的效率提高到可接受的程度時,用高級語言(不一定是C)開發FPGA可能是一種趨勢。
就像CPU的編程從匯編到高級語言,高級語言的效率肯定比匯編低,但當CPU性能足夠強之後,就不在意這點效率了,在者就是程序的復雜度決定不能再直接使用匯編語言了。
⑻ c語言是什麼
C語言誕生於20世紀70年代,比我們大多數人都大。當然,C語言並非沒有缺轎嫌啟點,畢竟,是「70後的老人」,時代有點落後,開發效率低。接下來給大家講講C語言是什麼,希望對你們有幫助。
對於大多數程序員來說,C語言是學習編程的第一門語言,很少有不懂C語言的程序員。
C語言編程,除了讓你知道相關的概念,把你帶入編程的大門,還可以讓你了解這個項目運行的原理,例如,計算機的各個部分是如何交互的,程序在內存中是一種什麼樣的狀態,操作系統和用戶程序之間有著什麼樣的「愛與恨」,這些基礎知識決定了你的高度,也決定著你的職業生涯。
C語言概念少、詞彙少,並且包含基本的編程元素。許多後來的語言(C++、Java等)都參考了C語言。毫不誇張地說,C語言是現代編程語言的祖先,它改變了編程世界。
這是因為C語言簡單,對於初學者來說,學習成本小,時間短,結合教程,可以快速掌握編程技巧。
C語言還獲得過2017年「年度編程語言」的稱號,成為2017年全球增長最快的編程語言。
C語言誕生於20世紀70年代,比我們大多數人都大。當然,C語言並非沒有缺點,畢竟,是「70後的老人」,時代有點落後,開發效率低,後來人們在C語言的基礎上增加了面向對象機制,形成一種新的語言,稱為C++。
C語言是至今為止最為重要的編程語言:要進入編程行業高手級別必學C語言,要掙大錢必學C語者凱言,要做黑客、紅客必學C語言,要面試名企、外企、高薪職位必學C語言。
C語言難不難?閉如與Java、C++、Python、C#、JavaScript等高級編程語言相比,C語言涉及的編程概念較少,標准庫小,所以整體比較簡潔,容易學習,非常適合初學者。
⑼ C語言現在還有用嗎
c語言還有用嗎?這個問題有很多人在問,c語言真的沒用嗎?答案是有用的,用處還很大呢。
這門語言雖然是很早以前發明的,新興語言如c#、vb……功能十分強大,但每一個能代替C語言,原因:C語言結構簡單,所佔空間小,而且能直接對存儲設備進行操作,所以適合底層程序設計,比如嵌入式設計,你用的遙控器、玩具賽車裡面的晶元就是將C語言設計出的程序嵌入到硬體上而製作出來的;還有,像lunix這樣很牛逼的操作系統也是用C語言做的,因為運行起來相當快!
還有還有啊,現在一名合格的黑客基本都會C語言,他們都是用這種語言編寫突破網路的程序、破解密碼的程序和病毒的……
你說的c++和c#等都是高級語言,不能進行底層操作,空間大,對硬體的要求太高,只適合編寫一下很大的程序,一些功能實用、輕便快捷的程序還是要C語言這樣的語言編寫。
所以C語言無可替代!
⑽ C語言有什麼發展前景
C語言的應用領域大致的分兩大塊:系統軟體開發和應用軟體開發。
一、伺服器端開發:很多游戲或者互聯網公司的後台伺服器程序都是基於C++開發的,而且大部分是linux操作系統,所以說,你需要熟悉linux操作系統及其在上面的開發,熟悉資料庫開發,精通網路編程。
二、對性能要求嚴格的領域。一般對性能有嚴格要求的地方都是用C語言編寫的,比如網路程序的底層和網路伺服器端底層、地圖查詢等。
三、系統軟體和圖形處理。C語言具有很強的繪圖能力和可移植性,並且具備很強的數據處理能力,可以用來編寫系統軟體、製作動畫、繪制二維圖形和三維圖形等。
例如虛擬現實,這個領域一直在發展,目前VR眼鏡比較火,需要大量基於這些的C++開發。
四、嵌入式設備開發。手機、PDA等時尚消費類電子產品相信大家都不陌生,其內部的應用軟體、游戲等很多都是採用C語言進行嵌入式開發的。
五、游戲軟體開發。游戲大家更不陌生,很多人就是由玩游戲而熟悉了計算機。利用C語言可以開發很多游戲,比如推箱子、貪吃蛇等。
六、數字計算。相對於其他編程語言,C語言是數字計算能力超強的高級語言。
除了上面這些以外,還有就是電子設備,就是什麼手機軟體,網路方面什麼的,都是運用了C語言開發。