自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

設(shè)計(jì)C++語(yǔ)言目標(biāo)和原則說(shuō)明

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

C++語(yǔ)言的一個(gè)目標(biāo)就是提供更易用并具有一定承受能力的設(shè)計(jì)思想和程序設(shè)計(jì)技術(shù),進(jìn)一步提高程序的質(zhì)量。這些技術(shù)中的絕大部分都源自Simula ,并通常被作為面向?qū)ο蟪绦蛟O(shè)計(jì)和面向?qū)ο笤O(shè)計(jì)思想來(lái)討論。

論壇中,常有初學(xué)者問“學(xué)習(xí)C++語(yǔ)言之前是否有必要先學(xué)C?”。我認(rèn)為這個(gè)問題是個(gè)偽問題。問題本身的答案并非是提出問題的人真正想要的?;卮疬@個(gè)問題非常簡(jiǎn)單:“當(dāng)然不需要”。因?yàn)?FONT>C++是一門獨(dú)立的編程語(yǔ)言,它在語(yǔ)法、構(gòu)建環(huán)境和運(yùn)行環(huán)境上都不需要依賴于任何其它語(yǔ)言。至于說(shuō)它是“C語(yǔ)言的超集”。

那只是一種模糊的提法而已,更準(zhǔn)確的說(shuō)法應(yīng)該是:C++語(yǔ)言從設(shè)計(jì)之初就充分考慮了對(duì)C語(yǔ)言的兼容性,結(jié)果使它在相當(dāng)大的程度上兼容了C語(yǔ)言。如此而已。但對(duì)于那樣提問的初學(xué)者來(lái)說(shuō),以上會(huì)是他們想要的答案嗎?我覺得不是。至少問題沒有這么簡(jiǎn)單。

C++語(yǔ)言支持多種編程范式:面向過(guò)程、面向?qū)ο蠛头缎统绦蛟O(shè)計(jì)。它所兼容C的部分,也正是支持面向過(guò)程的主要部分。有C語(yǔ)言的基礎(chǔ),雖然有助于更快地掌握C++的面向過(guò)程部分,但由于C++語(yǔ)言本身也直接支持面向過(guò)程,因此我們完全可以從C++中直接學(xué)習(xí)面向過(guò)程程序設(shè)計(jì),而無(wú)需先學(xué)C。至少理論上如此。

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

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

我個(gè)人在初學(xué)C++語(yǔ)言時(shí),覺得教程中學(xué)到的好多東西,包括面向?qū)ο蟪绦蛟O(shè)計(jì),在實(shí)踐中無(wú)法運(yùn)用自如。后來(lái)因工作需要,又去學(xué)習(xí)Java語(yǔ)言,一下子就對(duì)面向?qū)ο笥辛艘环N開竅的感覺。再使用C++寫程序時(shí),發(fā)現(xiàn)OO起來(lái)也更順暢了,我的好幾位朋友也有過(guò)類似的感覺。究其原因,我想跟上面的分析的C語(yǔ)言的情況類似。C++的所支持的特性和編程范式更多,初學(xué)者很難快速消化全部。而Java在1.4之前,可以認(rèn)為是純面向?qū)ο蟮摹?/P>

這樣,使用Java寫程序時(shí),我們被迫實(shí)踐面向?qū)ο缶幊蹋@就好比使用C寫程序,我們被迫實(shí)踐面向過(guò)程一樣。而直接使用C++寫程序,沒有什么“被迫”,我們也就缺少了相應(yīng)的“專項(xiàng)強(qiáng)化訓(xùn)練”。并非所有的人都需要這種“專項(xiàng)強(qiáng)化訓(xùn)練”,但對(duì)于初學(xué)者,面對(duì)著要掌握的復(fù)雜知識(shí)體系,它確實(shí)能起到“分而治之”的作用,從而促進(jìn)對(duì)知識(shí)的消化和吸收。

還有人認(rèn)為,學(xué)會(huì)了C++語(yǔ)言,自然就學(xué)會(huì)了C。而我認(rèn)為這種觀點(diǎn)是經(jīng)不起推敲。我們必需承認(rèn)兩點(diǎn):***,C語(yǔ)言是有用的,這點(diǎn)不用多說(shuō),那么多C語(yǔ)言構(gòu)筑起來(lái)的項(xiàng)目和復(fù)雜系統(tǒng)擺在那里。雖然它沒有對(duì)包括面向?qū)ο笤趦?nèi)的各種更抽象的編程范式提供直接支持,但事實(shí)早已證明它能解決復(fù)雜問題;第二,C++語(yǔ)言的設(shè)計(jì)者所設(shè)計(jì)的是一門新式的語(yǔ)言,而不僅僅是一個(gè)“更好用的C”。這就導(dǎo)致C++在繼承C語(yǔ)言的同時(shí)也要對(duì)它的各種特性做必要的揚(yáng)棄。#t#

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

這方面的例子很多,比如“宏”,C++中有太多可以在各種不同的場(chǎng)合取代宏的東西;再比如可變參數(shù),還有對(duì)指針的一些復(fù)雜使用等等。這些東西在C語(yǔ)言中則非常重要,重要到成為C語(yǔ)言之所以“有用”的直接原因之一。因?yàn)檫@些原因,一個(gè)用慣了C++語(yǔ)言,而從沒單獨(dú)學(xué)習(xí)過(guò)C語(yǔ)言的人,如果有一天突然被要求去負(fù)責(zé)一個(gè)C語(yǔ)言項(xiàng)目,我不認(rèn)為他就一定能輕松搞定。所以,我認(rèn)為“學(xué)會(huì)C++,自然也就學(xué)會(huì)了C”的觀點(diǎn)是沒有道理的。

有人說(shuō)過(guò),“C語(yǔ)言是結(jié)構(gòu)化的匯編”,沒錯(cuò),它的功能、效率和可移植性都很好地達(dá)到了它的設(shè)計(jì)初衷,它對(duì)現(xiàn)實(shí)項(xiàng)目中的各種問題也都有它獨(dú)特的解決方式,而同樣的解決方式在C++語(yǔ)言中卻未必是恰當(dāng)?shù)模ó?dāng)然反之也成立)。換句話說(shuō),從解決實(shí)際問題的方式來(lái)看,這兩種語(yǔ)言誰(shuí)也包含不了誰(shuí)。但我們學(xué)習(xí)程序設(shè)計(jì)不就是為了解決實(shí)際問題嗎?那結(jié)論已經(jīng)出來(lái)了:C++語(yǔ)言從語(yǔ)法上幾乎完全包含了C不代表它“真正”包含了C。

責(zé)任編輯:chenqingxiang 來(lái)源: 計(jì)世網(wǎng)
相關(guān)推薦

2010-01-26 13:36:27

C++設(shè)計(jì)

2011-05-31 17:59:48

C++

2011-04-11 09:23:27

設(shè)計(jì)目標(biāo)原則C++

2010-01-22 10:36:25

C++語(yǔ)言

2010-01-25 10:54:18

C++設(shè)計(jì)

2010-01-21 16:45:02

C++設(shè)計(jì)目標(biāo)

2010-01-28 10:01:28

C++的設(shè)計(jì)原則

2010-01-08 16:10:59

C++語(yǔ)言

2010-01-25 17:29:10

C++語(yǔ)言

2010-01-15 19:34:25

C++設(shè)計(jì)

2010-01-12 10:11:36

學(xué)習(xí)C++語(yǔ)言

2010-01-18 13:54:28

函數(shù)

2010-01-13 16:44:03

C++

2021-09-13 10:30:42

C++代碼設(shè)計(jì)模式

2010-01-27 14:24:15

C++程序設(shè)計(jì)

2010-01-13 15:51:44

C++編程語(yǔ)言

2010-01-12 09:39:58

C++語(yǔ)言

2010-01-12 10:21:42

C++語(yǔ)言

2010-01-11 13:37:31

C++語(yǔ)言

2010-01-12 15:33:26

CC++
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)