成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

設計C++語言目標和原則說明

開發(fā) 后端
有必要提一下,C語言在其最新的標準中還加入了一些新的特性,它們當中的一些C++語言并沒有辦法直接“兼容”,甚至未來的C++語言也不一定會兼容它們。比如棧上分配的動態(tài)數(shù)組。

C++語言的一個目標就是提供更易用并具有一定承受能力的設計思想和程序設計技術,進一步提高程序的質(zhì)量。這些技術中的絕大部分都源自Simula ,并通常被作為面向對象程序設計和面向對象設計思想來討論。

論壇中,常有初學者問“學習C++語言之前是否有必要先學C?”。我認為這個問題是個偽問題。問題本身的答案并非是提出問題的人真正想要的。回答這個問題非常簡單:“當然不需要”。因為C++是一門獨立的編程語言,它在語法、構建環(huán)境和運行環(huán)境上都不需要依賴于任何其它語言。至于說它是“C語言的超集”。

那只是一種模糊的提法而已,更準確的說法應該是:C++語言從設計之初就充分考慮了對C語言的兼容性,結果使它在相當大的程度上兼容了C語言。如此而已。但對于那樣提問的初學者來說,以上會是他們想要的答案嗎?我覺得不是。至少問題沒有這么簡單。

C++語言支持多種編程范式:面向過程、面向對象和范型程序設計。它所兼容C的部分,也正是支持面向過程的主要部分。有C語言的基礎,雖然有助于更快地掌握C++的面向過程部分,但由于C++語言本身也直接支持面向過程,因此我們完全可以從C++中直接學習面向過程程序設計,而無需先學C。至少理論上如此。

但話又要說回來。注意,提這個問題的大多是初學者。一般講解C++語言的教程,限于篇幅,面向過程部分無法與一本優(yōu)秀的C語言教程相媲美。于是,真正的問題來了:直接從C++語言開始學習的初學者,他是否愿意像C語言初學者那樣花大量的時間和精力,專門鉆研面向過程程序設計?

如果他不愿,那么他對面向過程部分的掌握,就難以跟一個扎扎實實學習過C語言的人相比。即使只討論“C++中的C”,結論也是一樣。但是,這里我只是想強調(diào)這樣一個事實,而并非要下個“必需先學C”的結論。

我個人在初學C++語言時,覺得教程中學到的好多東西,包括面向對象程序設計,在實踐中無法運用自如。后來因工作需要,又去學習Java語言,一下子就對面向對象有了一種開竅的感覺。再使用C++寫程序時,發(fā)現(xiàn)OO起來也更順暢了,我的好幾位朋友也有過類似的感覺。究其原因,我想跟上面的分析的C語言的情況類似。C++的所支持的特性和編程范式更多,初學者很難快速消化全部。而Java在1.4之前,可以認為是純面向對象的。

這樣,使用Java寫程序時,我們被迫實踐面向對象編程,這就好比使用C寫程序,我們被迫實踐面向過程一樣。而直接使用C++寫程序,沒有什么“被迫”,我們也就缺少了相應的“專項強化訓練”。并非所有的人都需要這種“專項強化訓練”,但對于初學者,面對著要掌握的復雜知識體系,它確實能起到“分而治之”的作用,從而促進對知識的消化和吸收。

還有人認為,學會了C++語言,自然就學會了C。而我認為這種觀點是經(jīng)不起推敲。我們必需承認兩點:***,C語言是有用的,這點不用多說,那么多C語言構筑起來的項目和復雜系統(tǒng)擺在那里。雖然它沒有對包括面向對象在內(nèi)的各種更抽象的編程范式提供直接支持,但事實早已證明它能解決復雜問題;第二,C++語言的設計者所設計的是一門新式的語言,而不僅僅是一個“更好用的C”。這就導致C++在繼承C語言的同時也要對它的各種特性做必要的揚棄。#t#

于是,就產(chǎn)生了很多這樣的情況:某種特性,在C語言中非常重要,但C++語言卻擁有一些新的特性來替代它,而且可能做得更好。這樣,原來C語言中的一些特性在C++語言中雖然還被兼容,卻被大大淡化,或不再提倡,甚至一些C++語言的教程中都不提那種特性。

這方面的例子很多,比如“宏”,C++中有太多可以在各種不同的場合取代宏的東西;再比如可變參數(shù),還有對指針的一些復雜使用等等。這些東西在C語言中則非常重要,重要到成為C語言之所以“有用”的直接原因之一。因為這些原因,一個用慣了C++語言,而從沒單獨學習過C語言的人,如果有一天突然被要求去負責一個C語言項目,我不認為他就一定能輕松搞定。所以,我認為“學會C++,自然也就學會了C”的觀點是沒有道理的。

有人說過,“C語言是結構化的匯編”,沒錯,它的功能、效率和可移植性都很好地達到了它的設計初衷,它對現(xiàn)實項目中的各種問題也都有它獨特的解決方式,而同樣的解決方式在C++語言中卻未必是恰當?shù)模ó斎环粗渤闪ⅲ?。換句話說,從解決實際問題的方式來看,這兩種語言誰也包含不了誰。但我們學習程序設計不就是為了解決實際問題嗎?那結論已經(jīng)出來了:C++語言從語法上幾乎完全包含了C不代表它“真正”包含了C。

責任編輯:chenqingxiang 來源: 計世網(wǎng)
相關推薦

2011-05-31 17:59:48

C++

2010-01-26 13:36:27

C++設計

2011-04-11 09:23:27

設計目標原則C++

2010-01-22 10:36:25

C++語言

2010-01-25 10:54:18

C++設計

2010-01-21 16:45:02

C++設計目標

2010-01-28 10:01:28

C++的設計原則

2010-01-25 17:29:10

C++語言

2010-01-08 16:10:59

C++語言

2010-01-15 19:34:25

C++設計

2010-01-13 16:44:03

C++

2010-01-18 13:54:28

函數(shù)

2010-01-12 10:11:36

學習C++語言

2010-01-27 14:24:15

C++程序設計

2021-09-13 10:30:42

C++代碼設計模式

2010-01-11 13:37:31

C++語言

2010-01-11 11:09:10

C++語法

2010-01-12 15:33:26

CC++

2010-01-12 10:21:42

C++語言

2010-01-13 15:51:44

C++編程語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美精品一二三区 | 巨大黑人极品videos精品 | 欧美电影在线 | 欧美视频二区 | 欧美一级免费 | 国产视频在线观看一区二区三区 | 国产精品欧美一区二区三区不卡 | 欧美一级全黄 | 国产二区三区 | 成人久久久 | 久久久久国产精品人 | 国产精品久久久久久久久久久久 | 精品一区二区三区四区 | 一区二区三区视频播放 | 亚洲国产成人av好男人在线观看 | 国产精品久久久久久久久久久久久 | 久久久免费电影 | 欧美视频日韩 | 99久久免费精品 | 天堂一区二区三区四区 | 中文久久 | av中文在线播放 | 久久精品一区二区三区四区 | 国产色婷婷 | 国内精品久久影院 | 日韩欧美在线不卡 | 国产一区二区三区久久 | 51ⅴ精品国产91久久久久久 | 欧美色综合 | 在线播放国产一区二区三区 | 久久久久久成人 | 午夜ww | 免费看国产精品视频 | 欧美日韩视频 | 久久精品国产99国产精品亚洲 | 狠狠骚 | 成人免费视频网址 | 色综合久久久久 | 亚洲激情在线观看 | 欧美日韩亚洲国产 | 国产在线一区二区 |