日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

C++“中年危機(jī)”有救了!C++之父新動(dòng)作!

來(lái)源: 責(zé)編: 時(shí)間:2023-11-01 09:19:20 354觀看
導(dǎo)讀整理丨諾亞出品 | 51CTO技術(shù)棧(微信號(hào):blog51cto)在不久前TIOBE發(fā)布的10月編程語(yǔ)言排行榜上,C++一舉越過(guò)Java,摘得探花位,僅次于Python和C。年過(guò)四旬的C++依然是全球最流行的編程語(yǔ)言之一,不過(guò)近年來(lái)一些巨頭的動(dòng)向也讓C++的

整理丨諾亞Fin28資訊網(wǎng)——每日最新資訊28at.com

出品 | 51CTO技術(shù)棧(微信號(hào):blog51cto)Fin28資訊網(wǎng)——每日最新資訊28at.com

在不久前TIOBE發(fā)布的10月編程語(yǔ)言排行榜上,C++一舉越過(guò)Java,摘得探花位,僅次于Python和C。年過(guò)四旬的C++依然是全球最流行的編程語(yǔ)言之一,不過(guò)近年來(lái)一些巨頭的動(dòng)向也讓C++的安全性頻頻走向爭(zhēng)議的中心。Fin28資訊網(wǎng)——每日最新資訊28at.com

前有微軟透露正基于Rust 語(yǔ)言改寫(xiě) Windows 11 內(nèi)核,部分替代之前的 C++,后有谷歌聲稱(chēng)正在將 Android 原生代碼從 C++ 遷移到 Rust,從而進(jìn)一步減少安全漏洞。Fin28資訊網(wǎng)——每日最新資訊28at.com

就在外界紛紛揣測(cè)C++如何應(yīng)對(duì)突如其來(lái)的中年危機(jī),是否真的應(yīng)該讓位于后起之秀時(shí),近日C++之父Bjarne Stroustrup在上個(gè)月舉辦的編程語(yǔ)言年度大會(huì)上公開(kāi)表態(tài):他將增加新的安全工具應(yīng)對(duì)批評(píng),為全球數(shù)十億行C++代碼帶來(lái)新的解決方案。Fin28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Fin28資訊網(wǎng)——每日最新資訊28at.com

1、反駁:切換到新語(yǔ)言,沒(méi)那么簡(jiǎn)單

對(duì)于那些認(rèn)為問(wèn)題出在C++本身、解決方案是改用另一種語(yǔ)言的批評(píng)人士,這位已經(jīng)72歲的大佬予以了駁斥。Fin28資訊網(wǎng)——每日最新資訊28at.com

第一,安全性指的不僅僅是內(nèi)存安全。Fin28資訊網(wǎng)——每日最新資訊28at.com

第二,語(yǔ)言之間的互操作性需求往往會(huì)被忽視。Fin28資訊網(wǎng)——每日最新資訊28at.com

第三,語(yǔ)言切換的成本通常會(huì)被低估。Fin28資訊網(wǎng)——每日最新資訊28at.com

Stroustrup首先指出“通常提到的安全性只是內(nèi)存安全——這是不夠的......與其他語(yǔ)言(包括C++和C)進(jìn)行互操作的需求往往不會(huì)被提及。而且轉(zhuǎn)換的成本可能非常高。這一點(diǎn)很少被提及......”Fin28資訊網(wǎng)——每日最新資訊28at.com

“從我所看到的觀點(diǎn)來(lái)看,我們將用大約7種不同的語(yǔ)言來(lái)取代C++。也許在距今四十年后,我們可能會(huì)有20種不同的語(yǔ)言,它們必須相互操作。這將會(huì)很困難。”Fin28資訊網(wǎng)——每日最新資訊28at.com

Stroustrup還指出,“許多所謂的‘安全’語(yǔ)言將所有底層的東西都外包給了C或C++”,暫時(shí)脫離原始語(yǔ)言來(lái)訪問(wèn)硬件資源,甚至操作系統(tǒng)(通常是用C編寫(xiě)的)——甚至可能是極為古老的、藏在外部庫(kù)中的“可信代碼”……Fin28資訊網(wǎng)——每日最新資訊28at.com

Stroustrup把我們目前的情況稱(chēng)為“一種漸進(jìn)式和進(jìn)化式的方法,而不是一味追求全新的方法。”就像蓋爾定律:“一個(gè)有效的復(fù)雜系統(tǒng)勢(shì)必是從一個(gè)有效的簡(jiǎn)單系統(tǒng)發(fā)展而來(lái)的。”Fin28資訊網(wǎng)——每日最新資訊28at.com

歸根結(jié)底,就像Stroustrup所指出的,切換語(yǔ)言可能看起來(lái)是在構(gòu)建一個(gè)新系統(tǒng),但是想越過(guò)所有舊系統(tǒng)的問(wèn)題來(lái)解決一切,只是一個(gè)幻想。切換語(yǔ)言所要付出的代價(jià)可能遠(yuǎn)比你理想中的要高。Fin28資訊網(wǎng)——每日最新資訊28at.com

2、出新:“小心”是行不通的,“我們需要強(qiáng)制執(zhí)行的規(guī)則”

Stroustrup提到了安全性的許多概念,重點(diǎn)介紹了資源泄漏、溢出、內(nèi)存損壞、計(jì)時(shí)錯(cuò)誤、并發(fā)錯(cuò)誤、終止錯(cuò)誤——當(dāng)然還有類(lèi)型錯(cuò)誤。隨后,他就C++安全性的發(fā)展趨向進(jìn)行了詳細(xì)闡釋。Fin28資訊網(wǎng)——每日最新資訊28at.com

Stroustrup稱(chēng)當(dāng)前是“一個(gè)機(jī)會(huì)”,他強(qiáng)調(diào),類(lèi)型和資源安全從C++誕生之初就一直是它的目標(biāo)。“我們當(dāng)時(shí)的硬件無(wú)法提供完全的安全性,現(xiàn)在也無(wú)法對(duì)所有語(yǔ)言和所有用例提供完全的安全性。”但是Stroustrup也不希望看到對(duì)C++表達(dá)的限制,事實(shí)上他設(shè)想了一個(gè)仍然遵循該語(yǔ)言的ISO標(biāo)準(zhǔn)的解決方案。Fin28資訊網(wǎng)——每日最新資訊28at.com

“我們需要它是C++。也就是說(shuō),我們能做什么不應(yīng)該受到限制,即使我們?nèi)绾巫隹赡軙?huì)受到限制。”Fin28資訊網(wǎng)——每日最新資訊28at.com

與此同時(shí),Stroustrup 也不希望看到大量的額外運(yùn)行時(shí)開(kāi)銷(xiāo)。“性能不應(yīng)該有任何下降......實(shí)際上,編寫(xiě)安全代碼的一些技術(shù)可以提高性能。我主要談?wù)摰氖蔷幾g器和靜態(tài)檢查可以做什么,因?yàn)樗敲赓M(fèi)的,或者實(shí)際上可以提高性能。”Fin28資訊網(wǎng)——每日最新資訊28at.com

Stroustrup找到了他的解決方案:配置文件。也就是說(shuō),一套規(guī)則,只要遵守,就能實(shí)現(xiàn)特定的安全保證。它們將由ISO C++標(biāo)準(zhǔn)定義,解決常見(jiàn)的安全問(wèn)題,如指針和數(shù)組范圍。   Fin28資訊網(wǎng)——每日最新資訊28at.com

至于添加新工具的困難,Stroustrup指出,C++編譯器本身現(xiàn)在是一個(gè)相當(dāng)復(fù)雜的靜態(tài)分析器,也可以滿足配置文件的要求。因此,在添加提高安全性的工具時(shí),“我認(rèn)為配置文件注釋?xiě)?yīng)該有助于解決這個(gè)問(wèn)題”。Fin28資訊網(wǎng)——每日最新資訊28at.com

Stroustrup列出了一般策略:使用靜態(tài)分析來(lái)消除潛在的錯(cuò)誤。但Stroustrup補(bǔ)充說(shuō):“全局靜態(tài)分析是負(fù)擔(dān)不起的。”Fin28資訊網(wǎng)——每日最新資訊28at.com

“所以基本上我們需要規(guī)則來(lái)簡(jiǎn)化我們正在編寫(xiě)的內(nèi)容,使其能夠高效、低成本地分析——本地靜態(tài)分析……然后提供庫(kù),使依賴(lài)這些規(guī)則變得可行。”Fin28資訊網(wǎng)——每日最新資訊28at.com

另外,他還指出了這種策略的另一個(gè)優(yōu)勢(shì):“支持從舊代碼到提供擔(dān)保的現(xiàn)代代碼的逐步轉(zhuǎn)換。”將有一套標(biāo)準(zhǔn)的“基本”擔(dān)保,以及更大、更開(kāi)放的可用擔(dān)保。Stroustrup說(shuō):“我想象的是類(lèi)型和資源安全,內(nèi)存安全,范圍安全。諸如算術(shù)安全之類(lèi)的東西是可以標(biāo)準(zhǔn)化的。”此外,還將制定規(guī)則,對(duì)不同的代碼片段應(yīng)用不同的保證。代碼甚至可以得到應(yīng)用了哪些保證的顯式表達(dá)式(從而使將來(lái)的讀者放心)。Fin28資訊網(wǎng)——每日最新資訊28at.com

Stroustrup簡(jiǎn)要說(shuō)明了一點(diǎn):“小心”是行不通的。因此,雖然核心指導(dǎo)方針可能建議安全的編碼實(shí)踐,但“我們需要強(qiáng)制執(zhí)行的規(guī)則”。Fin28資訊網(wǎng)——每日最新資訊28at.com

“我們必須制定安全使用的規(guī)則。我們必須提供方法來(lái)驗(yàn)證人們是否真的在做他們想做的事情。”Stroustrup指出,他所描述的大部分內(nèi)容已經(jīng)被嘗試過(guò),甚至有規(guī)模化的實(shí)踐。“但這些都沒(méi)有被整合成一個(gè)一致的、連貫的整體。這就是我認(rèn)為我們應(yīng)該做的。”Fin28資訊網(wǎng)——每日最新資訊28at.com

“衛(wèi)生規(guī)則+靜態(tài)分析+運(yùn)行時(shí)檢查”就是被提煉出的公式。Stroustrup說(shuō)C++可以消除許多常見(jiàn)的錯(cuò)誤,包括未初始化的變量,范圍錯(cuò)誤,空指針解引用,資源泄漏和懸空引用。Fin28資訊網(wǎng)——每日最新資訊28at.com

在演講接近尾聲時(shí),Stroustrup談到了更多的細(xì)節(jié)。“我建議你采用基于模塊的控件。”Fin28資訊網(wǎng)——每日最新資訊28at.com

export My_module[[provide(memory_safety)]];import std [[enable(memory_safety)]];import Mod [suppress(type_safety)]];

還在開(kāi)發(fā)中的是代碼內(nèi)控件,用于代碼片段。Fin28資訊網(wǎng)——每日最新資訊28at.com

[[suppress(type_safety)]] X[[enforce(type_safety)]] X

3、合力:面向開(kāi)發(fā)者的愿望清單

目前這項(xiàng)工作還在進(jìn)行中,你可以查到與之相關(guān)的論文和討論。Stroustrup談到:“從經(jīng)典的C,從‘帶類(lèi)的C’,到C++11,我們已經(jīng)走了很長(zhǎng)很長(zhǎng)的路。”    Fin28資訊網(wǎng)——每日最新資訊28at.com

面向開(kāi)發(fā)者,Stroustrup建議用戶(hù)可以幫助完善配置文件并將其規(guī)范形式化。“我夢(mèng)想著像 Profiles Light 這樣的東西,它提供了配置文件的大部分保證,但不能做所有最后的事情,因?yàn)椋热缯f(shuō),靜態(tài)分析器還不能做到這一點(diǎn)。”Fin28資訊網(wǎng)——每日最新資訊28at.com

Stroustrup創(chuàng)建了一個(gè) GitHub 存儲(chǔ)庫(kù),“人們可以在那里提出建議,我將把我的草稿等放在那里,這樣我們就可以創(chuàng)建一個(gè)社區(qū),致力于在合理的時(shí)間內(nèi)完成這些事情。Fin28資訊網(wǎng)——每日最新資訊28at.com

存儲(chǔ)庫(kù)詢(xún)問(wèn)需要什么才能使配置文件成為“滿足各種 C++ 安全需求的全行業(yè)工具”,并將該概念稱(chēng)為框架。“為了實(shí)現(xiàn)廣泛使用,必須創(chuàng)建和安裝許多部件。雖然我們已經(jīng)做了很多工作,但廣泛可用的相對(duì)較少。這是一個(gè)愿望清單。請(qǐng)盡你所能提供幫助。”Fin28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片Fin28資訊網(wǎng)——每日最新資訊28at.com

參考鏈接:

https://thenewstack.io/bjarne-stroustrups-plan-for-bringing-safety-to-c/Fin28資訊網(wǎng)——每日最新資訊28at.com

https://www.youtube.com/watch?v=I8UvQKvOSSw&t=4371sFin28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-16296-0.htmlC++“中年危機(jī)”有救了!C++之父新動(dòng)作!

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 壓測(cè)工具合集:解鎖您應(yīng)用程序的真正性能潛力

下一篇: 互聯(lián)網(wǎng)高并發(fā)設(shè)計(jì)的手段:架構(gòu)、算法、代碼

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • MIX Fold3包裝盒泄露 新機(jī)本月登場(chǎng)

    小米的全新折疊屏旗艦MIX Fold3將于本月發(fā)布,近日該機(jī)的真機(jī)包裝盒在網(wǎng)上泄露。從圖上來(lái)看,新的MIX Fold3包裝盒在外觀設(shè)計(jì)方面延續(xù)了之前的方案,變化不大,這也是目前小米旗艦
  • 7月安卓手機(jī)好評(píng)榜:三星S23Ultra好評(píng)率第一

    性能榜和性?xún)r(jià)比榜之后,我們來(lái)看最后的安卓手機(jī)好評(píng)榜,數(shù)據(jù)來(lái)源安兔兔評(píng)測(cè),收集時(shí)間2023年7月1日至7月31日,僅限國(guó)內(nèi)市場(chǎng)。第一名:三星Galaxy S23 Ultra好評(píng)率:95.71%在即將迎來(lái)新
  • 掘力計(jì)劃第 20 期:Flutter 混合開(kāi)發(fā)的混亂之治

    在掘力計(jì)劃系列活動(dòng)第20場(chǎng),《Flutter 開(kāi)發(fā)實(shí)戰(zhàn)詳解》作者,掘金優(yōu)秀作者,Github GSY 系列目負(fù)責(zé)人戀貓的小郭分享了Flutter 混合開(kāi)發(fā)的混亂之治。Flutter 基于自研的 Skia 引擎
  • 學(xué)習(xí)JavaScript的10個(gè)理由...

    作者 | Simplilearn編譯 | 王瑞平當(dāng)你決心學(xué)習(xí)一門(mén)語(yǔ)言的時(shí)候,很難選擇到底應(yīng)該學(xué)習(xí)哪一門(mén),常用的語(yǔ)言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 一文搞定Java NIO,以及各種奇葩流

    大家好,我是哪吒。很多朋友問(wèn)我,如何才能學(xué)好IO流,對(duì)各種流的概念,云里霧里的,不求甚解。用到的時(shí)候,現(xiàn)百度,功能雖然實(shí)現(xiàn)了,但是為什么用這個(gè)?不知道。更別說(shuō)效率問(wèn)題了~下次再遇到,
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人員可能會(huì)涉及各種各樣的安全任務(wù),包括但不限于:開(kāi)發(fā)某些安全工具的插件,滿足自己特定的安全需求;自定義github搜索工具,快速查找所需的安全資料、漏洞poc、exp
  • 新電商三兄弟,“抖快紅”成團(tuán)!

    來(lái)源:價(jià)值研究所作 者:Hernanderz 隨著內(nèi)容電商的概念興起,抖音、快手、小紅書(shū)組成的“新電商三兄弟”成為業(yè)內(nèi)一股不可忽視的勢(shì)力,給阿里、京東、拼多多帶去了巨大壓
  • iQOO Neo8 Pro評(píng)測(cè):旗艦雙芯加持 最強(qiáng)性能游戲旗艦

    【Techweb評(píng)測(cè)】去年10月,iQOO推出了一款Neo7手機(jī),該機(jī)搭載了聯(lián)發(fā)科天璣9000+,配備獨(dú)顯芯片Pro+,帶來(lái)了同價(jià)位段最佳的游戲體驗(yàn),一經(jīng)上市便受到了諸多用
  • 榮耀Magicbook V 14 2021曙光藍(lán)版本正式開(kāi)售,擁有觸摸屏

    榮耀 Magicbook V 14 2021 曙光藍(lán)版本正式開(kāi)售,搭載 i7-11390H 處理器與 MX450 顯卡,配備 16GB 內(nèi)存與 512GB SSD,重 1.48kg,厚 14.5mm,具有 1.5mm 鍵盤(pán)鍵程、
Top 主站蜘蛛池模板: 西藏| 德钦县| 攀枝花市| 丽江市| 江源县| 栾城县| 益阳市| 泸西县| 玉环县| 民乐县| 高邮市| 樟树市| 枣阳市| 沅江市| 双峰县| 南郑县| 喜德县| 永昌县| 昂仁县| 普洱| 嘉定区| 禹州市| 南召县| 佛教| 霍邱县| 石嘴山市| 巢湖市| 宝兴县| 文化| 乌兰县| 饶阳县| 阳城县| 钟祥市| 茶陵县| 重庆市| 观塘区| 北川| 枣强县| 鄂伦春自治旗| 齐河县| 永平县|