偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

設(shè)計C++語言目標(biāo)和原則說明

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2010-01-26 13:36:27

C++設(shè)計

2011-05-31 17:59:48

C++

2011-04-11 09:23:27

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

2010-01-22 10:36:25

C++語言

2010-01-25 10:54:18

C++設(shè)計

2010-01-21 16:45:02

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

2010-01-28 10:01:28

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

2010-01-25 17:29:10

C++語言

2010-01-08 16:10:59

C++語言

2010-01-15 19:34:25

C++設(shè)計

2010-01-13 16:44:03

C++

2010-01-18 13:54:28

函數(shù)

2010-01-12 10:11:36

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

2021-09-13 10:30:42

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

2010-01-27 14:24:15

C++程序設(shè)計

2010-01-11 13:37:31

C++語言

2010-01-11 11:09:10

C++語法

2010-01-12 15:33:26

CC++

2010-01-13 15:51:44

C++編程語言

2010-01-12 10:21:42

C++語言
點贊
收藏

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