2023成都積分入學(xué)什么時(shí)候開始申請(qǐng)
2023-01-31
更新時(shí)間:2022-09-23 10:05:33作者:智慧百科
出品 | OSC開源社區(qū)(ID:oschina2013)
近日,Microsoft Azure CTO、Sysinternals 的主要開發(fā)者 Mark Russinovich 在其社交賬號(hào)上發(fā)布動(dòng)態(tài)稱,開發(fā)人員是時(shí)候停止使用 C/C++ 來(lái)啟動(dòng)新項(xiàng)目,并建議可在需要使用 non-GC 語(yǔ)言的場(chǎng)景中使用 Rust。
“說(shuō)到語(yǔ)言,現(xiàn)在是時(shí)候停止用 C/C++ 啟動(dòng)任何新項(xiàng)目了,并在那些需要使用 non-GC 語(yǔ)言的場(chǎng)景中使用 Rust。為了安全性和可靠性,業(yè)界應(yīng)該宣布棄用這些語(yǔ)言?!?/blockquote>
C++ 之父回應(yīng)
針對(duì) Mark Russinovich 的言論,外媒 The Register 采訪了 C++ 之父 Bjarne Stroustrup;Stroustrup 則為 C++ 進(jìn)行了辯護(hù):
“人們 -- 尤其是一些高管 -- 總是會(huì)迷戀那些承諾會(huì)使他們的生活更輕松的新事物,這是很正常的。而且,支持新事物遠(yuǎn)比解決舊的和眾所周知的工具的已知問(wèn)題更令人興奮。不幸的是,新的語(yǔ)言通常需要多年的時(shí)間和重大的努力,才能在其廣泛的應(yīng)用領(lǐng)域中與成熟的語(yǔ)言相媲美。發(fā)燒友們很少看到這一點(diǎn),他們的評(píng)論往往是相當(dāng)片面的”。Stroustrup 表示,考慮到安全性的重要程度,多年來(lái)他一直在致力于提高 C++ 的安全性;從而現(xiàn)在在 ISO C++ 中實(shí)現(xiàn)了可靠的完美類型和內(nèi)存安全。也就是說(shuō),每個(gè)對(duì)象都根據(jù)它定義的類型來(lái)使用;這意味著消除了 dangling pointers 的使用、捕獲范圍錯(cuò)誤并消除了數(shù)據(jù)爭(zhēng)用。
他還強(qiáng)調(diào)稱,包括 Rust 在內(nèi)的每一種 “安全” 語(yǔ)言都存在著允許不安全代碼的漏洞。并談到了他參與編寫的 C++ Core Guidelines,這份指南的基本思想是定義一套為保證安全而必須遵守的規(guī)則,然后通過(guò)靜態(tài)分析來(lái)強(qiáng)制執(zhí)行。而之所以需要這些規(guī)則,就是因?yàn)槿我獾?C 或 C++ 代碼本身都無(wú)法自證安全。
“這就是符合 ISO 標(biāo)準(zhǔn)的 C++ 代碼,那些感覺不需要安全保障或者還不能更新代碼的人可以直接不運(yùn)行分析器。目前,微軟 Visual Studio、Clang Tidy 等一些其他地方都有這種分析器的部分實(shí)現(xiàn)?!?/p>
Stroustrup 指出,很顯然的是 C++ 正在積極改進(jìn)中,譬如在實(shí)際應(yīng)用中的靈活性和性能提升的各種嘗試。目前已有數(shù)十億行的 C++ 代碼被部署,因此無(wú)論是想要對(duì) C++ 代碼進(jìn)行替換還是加強(qiáng)安全性,都是一項(xiàng)需要循序漸進(jìn)的艱巨任務(wù)?!胺駝t大量不安全的 C 和舊式 C++ 代碼將 ' 永遠(yuǎn) ' 存在”。
引發(fā)開發(fā)者熱議
當(dāng)然,Mark Russinovich 的言論一出,不可避免的引起了廣泛地討論。有人問(wèn)這是他個(gè)人的觀點(diǎn),還是作為 CTO 的一個(gè)聲明。對(duì)于這個(gè)問(wèn)題,外媒 The Register 也向微軟進(jìn)行了詢問(wèn),即 Russinovich 的建議是否會(huì)在微軟全公司范圍內(nèi)進(jìn)行采納,但并未得到回復(fù)。
.NET Foundation 成員 Shawn Wildermuth 則在評(píng)論區(qū)提出 疑問(wèn) ,Rust 是否有足夠的開發(fā)人員來(lái)推動(dòng)工作的進(jìn)行?對(duì)此則有開發(fā)者回復(fù)稱,“想要舍下 C/C++ 確實(shí)非常困難,但這并不重要;年輕的開發(fā)者可以很快掌握 Rust,相較試圖尋找有才華的 C/C++ 開發(fā)者,此舉要容易得多”。
還有評(píng)論表示:
George Ou:我是 Rust 的忠實(shí)粉絲,但對(duì)于那些認(rèn)為有安全版本的 C 和 C++ 的人,你怎么說(shuō)? Ted Mielczarek:要么他們?cè)隍_你,要么他們建議的東西需要有效地重寫你的整個(gè)代碼庫(kù),所以你最好使用 Rust。而在反對(duì)的聲音當(dāng)中,一個(gè) ID 為 ionCube24 的用戶稱,Mark Russinovich 的意思更像是在責(zé)怪語(yǔ)言而不是程序員。但事實(shí)是 “C++ 很好,只是很多使用它(和其他語(yǔ)言)的人基本上不知道如何編程;切換語(yǔ)言并不會(huì)解決這一問(wèn)題?!?/p>
有人以自身實(shí)踐舉例表明,Rust 存在局限性,并不能解決他所有的問(wèn)題。然而該網(wǎng)友的論點(diǎn)似乎有點(diǎn)站不住腳:
“它不必解決所有問(wèn)題才能產(chǎn)生重大影響?!?“為什么要以 ‘解決所有的問(wèn)題’ 為標(biāo)準(zhǔn),它是否需要 ' 解決你所有的問(wèn)題 ' 才能在編程中產(chǎn)生實(shí)質(zhì)性的差異?在我看來(lái),想要 ' 在所有新項(xiàng)目中使用它 ' 這個(gè)標(biāo)準(zhǔn)遠(yuǎn)比讓 ' 它能解決所有已知問(wèn)題 ' 要低得多?!?/blockquote>還有人則頗為 “痛心” 的感嘆 Mark Russinovich 變了,不再 “cool” 了。也有相對(duì)理智的發(fā)聲稱,“或者更好的方式是:不要再過(guò)度的去宣傳推廣一種編程語(yǔ)言。不同的工具適合不同的問(wèn)題。Rust 很好,但它不是所有編程問(wèn)題的解決方案”。
更有甚者提出了自己認(rèn)為更好的 C/C++ 替代方案,“當(dāng) GCed 系統(tǒng)語(yǔ)言可以接受時(shí),也不會(huì)再有新的 C/C++ 項(xiàng)目。Go、Nim 和 Crystal 都是比 C/C++ 更好的選擇。還有 Zig,它正在做一些很酷的事情,但尚未像 Rust 那樣成熟或流行?!?/p>
目前,Hacker News 和 Reddit 上也有相關(guān)的話題討論。
不過(guò)話說(shuō)回來(lái), Rust 最近確實(shí)有著較高的熱度:
相關(guān)鏈接: https://twitter.com/markrussinovich/status/1571995117233504257
https://news.ycombinator.com/item?id=32905885
https://www.reddit.com/r/rust/comments/xitq5o/mark_russinovich_azure_cto_its_time_to_halt/