最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

六星云課堂:C ++之父拒絕拿C++和其他語言對(duì)比!

2022-06-13 09:16 作者:六星云課堂  | 我要投稿

12月4日,C++之父Bjarne Stroustrup參加了全球C++及系統(tǒng)軟件技術(shù)大會(huì)。會(huì)議上,他發(fā)表了“C++20 與C++的持續(xù)演化”的主題演講,詳細(xì)闡述了C++20的主要特性、未來標(biāo)準(zhǔn)以及C++23的規(guī)劃。

早在9月份,C++20國際標(biāo)準(zhǔn)草案獲得一致通過,C++之父Bjarne Stroustrup就表示:“C++ 20是自C++11以來最大的發(fā)行版,它將是C++發(fā)展史上的里程碑。”這一發(fā)言引起了開發(fā)者們對(duì)C++20的廣泛關(guān)注。

從正式版來看,像 Concepts/Ranges/Modules/Coroutines 這些新特性將會(huì)對(duì)開發(fā)者及 C++ 生態(tài)產(chǎn)生不小的影響,業(yè)界都相信C++ 20必將為系統(tǒng)級(jí)軟件的開發(fā)、構(gòu)建、設(shè)計(jì)帶來更多的驚喜。

事實(shí)上,作為最受歡迎的編程語言之一,C++帶給開發(fā)者們最大的驚喜便是其強(qiáng)大的特性。一方面跟C兼容,可以直面系統(tǒng)底層API,SDK,另一方面提供了很多范式,足夠的抽象能力,面向?qū)ο螅僮鞣剌d,模板……

即便如此,Bjarne依然覺得C++還不夠完美?!皩?duì)必須工作幾十年的語言來說,穩(wěn)定性是一種重要的特征。我從一開始就知道,我不可能構(gòu)建理想的語言,因此我必須以漸進(jìn)式發(fā)展為目標(biāo):改進(jìn)。說真的,我并不相信完美語言的想法:要怎樣就算是完美呢?對(duì)誰來說(是完美的)?”

因此,為了應(yīng)對(duì)行業(yè)的挑戰(zhàn),Bjarne一直活躍在C++開發(fā)的前線,認(rèn)真對(duì)待開發(fā)者們的使用反饋。他曾說:“為了應(yīng)對(duì)不斷變化的世界的挑戰(zhàn),融入新思想,改進(jìn)是必須的。”

別拿C++和其他語言做比較

C++的強(qiáng)大不僅在于對(duì)各行業(yè)系統(tǒng)的支撐,更在于其發(fā)展至今近40年來一直名列前茅,扛住了一波又一波新興編程語言如Java、C#、Python等的攻勢(shì)。

因此,不少人希望Bjarne做一些C++語言與其他語言的比較。但Bjarne拒絕了。他反復(fù)重申自己長期且強(qiáng)烈持有的一個(gè)觀點(diǎn):語言的比較很少是有意義的,也是有失公平的。

1.獨(dú)特規(guī)則與語義之下的C++

“C++是一種通用的程序設(shè)計(jì)語言,應(yīng)該讓認(rèn)真的程序員感覺到編程的快樂?!迸c其花費(fèi)精力去和別的語言比較,Bjarne更關(guān)注C++本身對(duì)開發(fā)者的影響,他認(rèn)為C++應(yīng)該具有簡(jiǎn)單、平衡、自由、友好這四大目標(biāo)。

  • 簡(jiǎn)單:在不要犧牲性能的情況下,讓簡(jiǎn)單的事情保持簡(jiǎn)單,不要去復(fù)雜化本來的困難,使之成為可能。

  • 平衡:C++試圖找到「抽象」和性能的平衡點(diǎn),并將選擇的自由留給程序員。

  • 自由:世界是多樣性的,C++的多范式設(shè)計(jì)思維賦予了程序員極大的自由度和靈活性。

  • 友好:C++變得越來越友好,專家和學(xué)者對(duì)于這種友好性感觸將更加深刻。

要成為真正有用而且人們樂于使用的東西,一個(gè)程序設(shè)計(jì)語言的設(shè)計(jì)就必須有一種全局觀,用于指導(dǎo)語言中各種特征的設(shè)計(jì)。

對(duì)于C++,這種全局觀由一組規(guī)則和約束構(gòu)成,Bjarne稱其為C++的規(guī)則。Bjarne認(rèn)為把原理這個(gè)詞用在一個(gè)真正的科學(xué)原理非常貧乏的領(lǐng)域,顯得過于自命不凡,而程序設(shè)計(jì)語言設(shè)計(jì)就是這樣一個(gè)領(lǐng)域。

此外,對(duì)許多人而言,術(shù)語原理隱含著一個(gè)不太實(shí)際的推論,也就是說,任何例外都是不可接受的。而Bjarne的有關(guān)C++設(shè)計(jì)的規(guī)則幾乎可以保證都有例外情況。實(shí)際上,如果一條規(guī)則與某個(gè)實(shí)際試驗(yàn)發(fā)生沖突,這個(gè)規(guī)則就應(yīng)該靠邊站。

這樣說,看起來似乎有些粗魯,但是它不過是一條一般性原則的變形:理論必須與試驗(yàn)數(shù)據(jù)相吻合,否則就應(yīng)該被更好的理論取代。

  • 一般性規(guī)則;

  • 設(shè)計(jì)支持規(guī)則;

  • 語言的技術(shù)性規(guī)則;

  • 低級(jí)程序支持規(guī)則。

這些規(guī)則絕不能不假思索地使用,也不能用幾條膚淺的口號(hào)取代。Bjarne作為一個(gè)語言設(shè)計(jì)者,他的工作是決定對(duì)付C++語言里出現(xiàn)的問題,決定在C++的框架里能夠處理的是哪些問題,并在實(shí)際語言特征設(shè)計(jì)的各種規(guī)則之間保持一種平衡。

談及C++的成功因素時(shí),Bjarne認(rèn)為這些“設(shè)計(jì)規(guī)則和語義”功不可沒。

這也是Bjarne不愿將C++與其他語言相比的原因之一。作為C++的創(chuàng)作者,Bjarne多年來傾盡心血,期望C++能更強(qiáng)大和靈活,以成為更為通用的編程語言。從某種角度來說,他很難對(duì)其他編程語言維持一種超然的不偏不倚的觀點(diǎn)和一種平和的理性。

2.C++不僅僅是一座橋梁

“C++最初的設(shè)計(jì)目標(biāo):高效地使用硬件,再加上強(qiáng)大的抽象機(jī)制,并在實(shí)際使用反饋的基礎(chǔ)上謹(jǐn)慎地改進(jìn)?!?/strong>Bjarne對(duì)C++的期望是其能作為一座橋梁,以便讓程序員能夠借助于它,從傳統(tǒng)的程序設(shè)計(jì)過渡到基于數(shù)據(jù)抽象和面向?qū)ο蟮某绦蛟O(shè)計(jì)。

C++僅僅是一座橋梁?jiǎn)幔?/strong>

一旦跨到某個(gè)世界,在那里數(shù)據(jù)抽象和面向?qū)ο蟮某绦蛟O(shè)計(jì)并不是那么自然,C++所提供的那些特征還有其本身的價(jià)值嗎?

還有,假定上面問題得到的都是正面回答,那么在今后的十年里,程序員們?yōu)槟切┎⒉魂P(guān)心C兼容性的用戶所做的任何事情,都不會(huì)對(duì)那些始終關(guān)心這個(gè)問題的人們?cè)斐蓳p害嗎?

語言的存在就是為了幫助開發(fā)者們解決問題。如果一種語言開始很成功,只要人們繼續(xù)面臨這個(gè)語言能幫助解決的同一類問題,它就會(huì)繼續(xù)生存下去。進(jìn)一步說,只要沒有其他語言能在同類問題上提供明顯優(yōu)于它的解,它就應(yīng)該還能繁榮興旺。這樣,問題就變成:

  • C++幫助我們解決的問題仍然是實(shí)在的嗎?

  • 明顯優(yōu)于它的解出現(xiàn)了嗎?

  • C++能為新的問題提供良好的解嗎?

對(duì)此,Bjarne回答是“許多還將是”“慢慢地”和“是的”。

C++的長處,更多在于它對(duì)許多問題都是很好的解決途徑,而不在于它對(duì)某個(gè)特定問題是最好的解決途徑。

例如,與C語言類似,C++ 對(duì)于低層系統(tǒng)也是一個(gè)絕好的語言,對(duì)于這類工作,C++ 性能通常超過其他任何高級(jí)語言。當(dāng)然,對(duì)多數(shù)機(jī)器系統(tǒng)結(jié)構(gòu),一個(gè)好的匯編程序員總能做出比很好的C++ 編譯器還要小許多、快許多的代碼。但這通常并不重要,因?yàn)樵谝粋€(gè)復(fù)雜系統(tǒng)里,這種存在顯著差異的部分所占的比例非常小,而如果整個(gè)系統(tǒng)都用匯編語言寫,那將是無法負(fù)擔(dān)的,也是無法維護(hù)的。

Bjarne發(fā)現(xiàn),要設(shè)想出一個(gè)應(yīng)用領(lǐng)域,在那里人們不可能構(gòu)造出某種優(yōu)于C++,同時(shí)也能優(yōu)于任何通用的程序設(shè)計(jì)語言的特殊語言,是一件極其困難的事情。這樣,大部分通用程序設(shè)計(jì)語言最希望做的就是成為“每個(gè)人的第二選擇”。

因此,Bjarne開始考察一些領(lǐng)域,在這些領(lǐng)域里C++有著根本的優(yōu)勢(shì):

  • 低層系統(tǒng)程序設(shè)計(jì);

  • 高層系統(tǒng)程序設(shè)計(jì);

  • 嵌入式代碼;

  • 數(shù)值/科學(xué)計(jì)算;

  • 一般應(yīng)用程序設(shè)計(jì)。

這些類別并不是相互分離的,它們也沒有已經(jīng)被廣泛接受的定義。C++ 將繼續(xù)是所有這些領(lǐng)域中的一個(gè)很好選擇。進(jìn)一步說,任何語言要想成為一個(gè)好選擇,那么在所提供的基本服務(wù)的層面上,它看起來應(yīng)該很像C++,當(dāng)然,或許不是在語法或者語義細(xì)節(jié)的層面上。

一直以來,Bjarne對(duì)C++的定位有著清晰的認(rèn)知,也為C++能更好地適應(yīng)環(huán)境變化而傾注心血研究,因此,像做比較這種需要消耗大量時(shí)間精力的事情,Bjarne是拒絕的,他更愿意和創(chuàng)造團(tuán)隊(duì)一起研究,讓C++對(duì)開發(fā)者們更有效。

C++如何更高效

得益于Bjarne為C++設(shè)計(jì)的規(guī)則,讓C++這門語言在許多領(lǐng)域得到了廣泛的應(yīng)用。

在軟件開發(fā)的世界里,絕對(duì)沒有驕傲自滿的位置。在這些年里,人們期望的增長總是大大地超過硬件和軟件的令人難以置信的增長。Bjarne表示他目前看不到有任何跡象說這些情況會(huì)很快改變。

“讓 C++ 保持連貫性,并作為一個(gè)穩(wěn)定的開發(fā)平臺(tái),這一點(diǎn)至關(guān)重要?!毕啾扔谄诖鼵++能迅速改變,Bjarne更注重C++的連貫性。

在保持連貫性的基礎(chǔ)之上,Bjarne開始為開發(fā)者們考慮一些更實(shí)際的東西,比如學(xué)好C++、高效運(yùn)用C++等。雖然C++11的確讓C++相較于之前變得簡(jiǎn)單快速了很多,但不可否認(rèn),C++仍然是開發(fā)者們很難掌握的語言之一。

“C++ 確實(shí)很復(fù)雜,要想學(xué)好、用好它,需要付出很多努力。不幸的是,人們不只是想要簡(jiǎn)單,他們還想要某種不可能的東西:一種更簡(jiǎn)單的語言,擁有更多的特性,并且還不會(huì)破壞他們現(xiàn)有的代碼?!?Bjarne承認(rèn)C++的復(fù)雜難學(xué),并為開發(fā)者們提供了兩個(gè)重要的支持。

穩(wěn)定性和標(biāo)準(zhǔn)

語言定義,關(guān)鍵性的庫和接口的穩(wěn)定性,應(yīng)該列在未來進(jìn)步的需求表里的最高位置。ANSI/ISO C++標(biāo)準(zhǔn)將提供前者,許多組織和公司在后一方向上工作,在各種領(lǐng)域中,例如操作系統(tǒng)接口、動(dòng)態(tài)連接庫、數(shù)據(jù)庫接口等。在不久的將來,C++語言將成為在各種重要平臺(tái)上都可以使用的東西,那將會(huì)大大地推動(dòng)庫和工具工業(yè)的發(fā)展。

Bjarne認(rèn)為:“人們當(dāng)然還會(huì)繼續(xù)要求新特征,但我已經(jīng)可以在這里描述的C++中生活了。我想,大部分產(chǎn)品代碼的程序員也應(yīng)該可以。特別值得提醒的是,沒有任何單獨(dú)的特征對(duì)于生產(chǎn)好代碼而言是無可替代的東西——無論你怎樣給出“好”的定義。”

教育和技術(shù)

對(duì)C++及其所有的應(yīng)用領(lǐng)域而言,Bjarne認(rèn)為對(duì)進(jìn)步最有潛力的事情就是學(xué)習(xí)新的設(shè)計(jì)技術(shù)和編程技術(shù)。從原則上說,更有效地使用C++是最容易獲得的進(jìn)步,也最廉價(jià)。昂貴的工具并不是必需的。

在另一方面,改變思維習(xí)慣也不是很容易做的事情。對(duì)于大多數(shù)程序員而言,所需要的并不是簡(jiǎn)單的有關(guān)新語法的訓(xùn)練,而是有關(guān)新概念的教育。他預(yù)計(jì),在今后幾年里,我們將看到設(shè)計(jì)和編程技術(shù)方面的重大進(jìn)步,這些方面當(dāng)然沒有拖延的理由。

開發(fā)者中的大多數(shù)已經(jīng)在一個(gè)或幾個(gè)領(lǐng)域里大大地落后于現(xiàn)狀了,他們可以從一些閱讀和試驗(yàn)中得到重要的收獲,戰(zhàn)斗在標(biāo)準(zhǔn)和工具的前沿上將更加樂趣無窮。

Bjarne認(rèn)為,C++ 最有實(shí)力的地方并不是它的某個(gè)獨(dú)到之處特別偉大,而在于它在事物的大范圍變化中的表現(xiàn)都很不錯(cuò)。與此類似,從根本上說,C++發(fā)展也不是來自某個(gè)孤立的進(jìn)步,而是來自在不同領(lǐng)域中的大量的各種各樣的進(jìn)步。更好的庫、更好的設(shè)計(jì)技術(shù)、接受過更好教育的程序員和設(shè)計(jì)師、語言標(biāo)準(zhǔn)、可選擇的廢料收集、對(duì)象通信標(biāo)準(zhǔn)、數(shù)據(jù)庫、基于非正文形式的環(huán)境、更好的工具、更快的編譯等,都將會(huì)對(duì)此有所貢獻(xiàn)。

因此,Bjarne認(rèn)為,目前C++只是剛剛開始有所成效?;A(chǔ)已經(jīng)建立,但也只不過是一個(gè)基礎(chǔ)。面向未來,Bjarne期望能看到最主要的活動(dòng)和進(jìn)步能夠從語言本身——這是一個(gè)基礎(chǔ)——轉(zhuǎn)移到依賴于它,在它上面構(gòu)造起來的工具、環(huán)境、庫、應(yīng)用等方面去。

如何學(xué)習(xí)C++

C++是C語言的繼承,它既可以進(jìn)行C語言的過程化程序設(shè)計(jì),又可以進(jìn)行以抽象數(shù)據(jù)類型為特點(diǎn)的基于對(duì)象的程序設(shè)計(jì),還可以進(jìn)行以繼承和多態(tài)為特點(diǎn)的面向?qū)ο蟮某绦蛟O(shè)計(jì)。

C++擅長面向?qū)ο蟪绦蛟O(shè)計(jì)的同時(shí),還可以進(jìn)行基于過程的程序設(shè)計(jì),因而C++就適應(yīng)的問題規(guī)模而論,大小由之。C++不僅擁有計(jì)算機(jī)高效運(yùn)行的實(shí)用性特征,同時(shí)還致力于提高大規(guī)模程序的編程質(zhì)量與程序設(shè)計(jì)語言的問題描述能力。

對(duì)初學(xué)者來說,學(xué)習(xí)C++首選斯蒂芬·普拉塔的《C++ Primer Plus 中文版 第6版》作為入門圖書。這本暢銷近40年,豆瓣評(píng)分9.6,堪稱C++程序員的“引路人”。從第一版出版至今已經(jīng)升級(jí)到了第六版,作者堅(jiān)持初心——致力于編寫一本指導(dǎo)性強(qiáng)、條理清晰而且有用的C語言教程。所以,書中大量完整的、可運(yùn)行的程序及詳細(xì)的注釋有助于理解代碼和概念。

C++ Primer Plus(第6版)中文版

作者:[美]Stephen Prata

譯者: 張海龍 ,袁國忠

內(nèi)容簡(jiǎn)介:

史上暢銷的重量級(jí)C++大百科全書,C++入門的首選圖書,累計(jì)銷量近百萬冊(cè)。

本書分18章,分別介紹了C++程序的運(yùn)行方式、基本數(shù)據(jù)類型、復(fù)合數(shù)據(jù)類型、循環(huán)和關(guān)系表達(dá)式、分支語句和邏輯運(yùn)算符、函數(shù)重載和函數(shù)模板、內(nèi)存模型和名稱空間、類的設(shè)計(jì)和使用、多態(tài)、虛函數(shù)、動(dòng)態(tài)內(nèi)存分配、繼承、代碼重用、友元、異常處理技術(shù)、string類和標(biāo)準(zhǔn)模板庫、輸入/輸出、C++11新增功能等內(nèi)容。

本書針對(duì)C++初學(xué)者,從C語言基礎(chǔ)知識(shí)開始介紹,然后在此基礎(chǔ)上詳細(xì)闡述C++新增的特性,因此不要求讀者有C語言方面的背景知識(shí)。

對(duì)已經(jīng)對(duì)C++有所了解的開發(fā)者們來說,不妨讀讀C++之父Bjarne關(guān)于C++設(shè)計(jì)規(guī)則的圖書《C++語言的設(shè)計(jì)和演化》。

C++語言的設(shè)計(jì)和演化

作者:[美]本賈尼·斯特勞斯特盧普 ( Bjarne Stroustrup )

譯者: 裘宗燕

在這本書中,Bjarne Stroustrup全面論述了C++ 的歷史和發(fā)展,C++中各種重要機(jī)制的本質(zhì)、意義和設(shè)計(jì)背景,這些機(jī)制的基本用途和使用方法,討論了C++ 所適合的應(yīng)用領(lǐng)域和未來發(fā)展前景。本書在幫助人們深入理解C++ 語言方面的地位無可替代,值得每個(gè)關(guān)心、學(xué)習(xí)和使用C++ 語言的專業(yè)工作者、科研人員、教師和學(xué)生閱讀。

在這本書中,作者還從實(shí)踐的角度出發(fā),討論了許多與程序設(shè)計(jì)語言、系統(tǒng)程序設(shè)計(jì)、面向?qū)ο蟮募夹g(shù)和方法、軟件系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)技術(shù)等有關(guān)的問題,值得每一個(gè)關(guān)心這些領(lǐng)域及相關(guān)問題的計(jì)算機(jī)工作者和學(xué)生們閱讀參考。

以上就是本次分享的全部?jī)?nèi)容,想學(xué)習(xí)更多C++技巧,歡迎持續(xù)關(guān)注六星云課堂!


六星云課堂:C ++之父拒絕拿C++和其他語言對(duì)比!的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
富川| 临沧市| 唐河县| 伊宁县| 龙胜| 伊金霍洛旗| 达拉特旗| 成安县| 商水县| 吐鲁番市| 峨边| 施秉县| 长春市| 惠来县| 伊金霍洛旗| 和静县| 通江县| 泸州市| 公安县| 佛教| 兴山县| 赣州市| 壶关县| 依安县| 炎陵县| 尉犁县| 江口县| 周至县| 靖州| 盐津县| 兴山县| 乌拉特后旗| 探索| 肇源县| 奈曼旗| 从江县| 教育| 荔波县| 昂仁县| 宜君县| 大同县|