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

為什么看到這么多人不推薦C++?

開(kāi)發(fā) 后端
2000年左右是C++的鼎盛期,游戲,圖形界面,科學(xué)計(jì)算,后臺(tái)服務(wù),各種新語(yǔ)言的實(shí)現(xiàn)語(yǔ)言,甚至入侵了一點(diǎn)操作系統(tǒng)里C的地盤(pán)。一項(xiàng)技術(shù),火起來(lái)蜂擁而上,泥沙俱下,平穩(wěn)后發(fā)現(xiàn)后勁不足,或者有另一個(gè)風(fēng)口出現(xiàn),便如樹(shù)倒萎潰散。

為什么看到這么多人不推薦C++?

2000年左右是C++的鼎盛期,游戲,圖形界面,科學(xué)計(jì)算,后臺(tái)服務(wù),各種新語(yǔ)言的實(shí)現(xiàn)語(yǔ)言,甚至入侵了一點(diǎn)操作系統(tǒng)里C的地盤(pán)。

一項(xiàng)技術(shù),火起來(lái)蜂擁而上,泥沙俱下,平穩(wěn)后發(fā)現(xiàn)后勁不足,或者有另一個(gè)風(fēng)口出現(xiàn),便如樹(shù)倒萎潰散。

進(jìn)化是好事,進(jìn)化的同時(shí)要吸取經(jīng)驗(yàn),避免出現(xiàn)返祖現(xiàn)象。C++之父寫(xiě)過(guò)一本神書(shū),«C++語(yǔ)言的設(shè)計(jì)和演化»,鄙人孤陋寡聞,似乎這是唯一一本闡述語(yǔ)言設(shè)計(jì)理念、折衷的辛苦無(wú)奈歷程,Bjarne 在書(shū)中提出了很多極具智慧的設(shè)計(jì)理念,比如時(shí)下小火的儼然C++繼任者 Rust 也極為推崇的“零代價(jià)抽象”。

回到主題,為什么C++不再被推崇?客觀原因很明顯:

(1) C++語(yǔ)法很復(fù)雜,好的C++程序員難求。

語(yǔ)法上 C++14 開(kāi)始的“后現(xiàn)代C++”已經(jīng)改善不少,以前一些奇技淫巧可以拋棄了,但可惜為了向后兼容性,歷史包袱是丟不了的。

(2) 歷史上機(jī)器性能很弱,編譯器注重生成代碼效率而在不太注重警告語(yǔ)法陷阱——沒(méi)有足夠資源做分析,C++編譯已經(jīng)非常慢了,所以C++的開(kāi)發(fā)者友好度嚴(yán)重不足。

就像JS屆出了v8這個(gè)奇葩,C++屆有了LLVM后,逼得GCC也不斷改進(jìn),錯(cuò)誤信息提示友好漂亮多了,大微軟的VC編譯器還能把Effective C++, More Effective C++等書(shū)里描述的注意事項(xiàng)融入編譯器里,也是這個(gè)大微軟,開(kāi)源了好用的vcpkg,搭配CMake, C++的開(kāi)發(fā)體驗(yàn)比以前提升了很多,至少比 NodeJS 折騰一禮拜還不一定能搞定編譯工具鏈強(qiáng) 。

(3) Web 2.0 甚至 mobile web 時(shí)代,連老實(shí)賢惠的Java都被嫌棄,就別提C++了。

C++在科學(xué)計(jì)算的地位還是難以動(dòng)搖,別瞅現(xiàn)在Python火的紅屁股,其實(shí)就是個(gè)皮,沒(méi)有C/C++加持,Python屁都不是。

明確下觀點(diǎn):你不一定要用C++,但它值得了解。補(bǔ)一句,你不一定要用Rust,但它值得學(xué)習(xí)。

最后,貼一個(gè) Go 的例子,編譯沒(méi)問(wèn)題,運(yùn)行出錯(cuò),而在 C++ 里完全可以在編譯期就發(fā)現(xiàn)問(wèn)題,壓根不讓編譯通過(guò)。

  1. package main 
  2.  
  3. import ( 
  4.     "fmt" 
  5.     "sync" 
  6.     "time" 
  7.  
  8. func main() { 
  9.     var wg sync.WaitGroup 
  10.  
  11.     wg.Add(1) 
  12.     go foo(wg) 
  13.  
  14.     fmt.Println("before wait"
  15.     wg.Wait() 
  16.     fmt.Println("after wait"
  17.  
  18. func foo(wg sync.WaitGroup) { 
  19.     fmt.Println("before sleep"
  20.     time.Sleep(2 * time.Second
  21.     fmt.Println("after sleep"
  22.     wg.Done() 

 

責(zé)任編輯:未麗燕 來(lái)源: 今日頭條
相關(guān)推薦

2024-03-01 17:01:15

GraphQL后端

2024-09-12 08:32:42

2024-05-16 20:48:23

ReactReact 19React 編譯器

2020-01-02 10:06:16

Java 8Java 14

2022-08-04 23:32:38

比特幣以太坊代幣

2017-12-21 19:38:50

潤(rùn)乾中間表

2022-07-26 23:43:29

編程語(yǔ)言開(kāi)發(fā)Java

2021-10-27 15:23:10

語(yǔ)言PHP開(kāi)源

2013-01-15 09:41:45

編程語(yǔ)言

2015-01-14 14:27:18

Docker容器鏡像

2019-01-31 10:15:14

群聊單聊消息

2021-08-19 06:53:18

開(kāi)發(fā)語(yǔ)言Java

2024-07-29 09:03:00

2016-12-01 13:40:37

2021-04-27 15:13:20

Java開(kāi)發(fā)語(yǔ)言

2013-01-24 09:44:44

數(shù)據(jù)庫(kù)

2019-07-05 15:52:03

數(shù)據(jù)科學(xué)家大數(shù)據(jù)機(jī)器學(xué)習(xí)

2021-09-13 10:03:54

藍(lán)牙連接藍(lán)牙藍(lán)牙設(shè)備

2024-11-29 08:20:22

Autowired場(chǎng)景項(xiàng)目

2022-01-11 10:29:32

Docker文件掛載
點(diǎn)贊
收藏

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