为什么看到这么多人不推荐C++?

作者: 站长工具 日期: 2022-07-21 11:17:46 人气: - 标签: in 编译 不会 程序 语言

科技速递:


为什么看到这么多人不推荐C++?

2000年左右是C++的鼎盛期,游戏,图形界面,科学计算,后台服务,各种新语言的实现语言,甚至入侵了一点操作系统里C的地盘。

一项技术,火起来蜂拥而上,泥沙俱下,平稳后发现后劲不足,或者有另一个风口出现,便如树倒萎溃散。

进化是好事,进化的同时要吸取经验,避免出现返祖现象。C++之父写过一本神书,?C++语言的设计和演化?,鄙人孤陋寡闻,似乎这是唯一一本阐述语言设计理念、折衷的辛苦无奈历程,Bjarne 在书中提出了很多极具智慧的设计理念,比如时下小火的俨然C++继任者 Rust 也极为推崇的“零代价抽象”。

回到主题,为什么C++不再被推崇?客观原因很明显:

(1) C++语法很复杂,好的C++程序员难求。

语法上 C++14 开始的“后现代C++”已经改善不少,以前一些奇技淫巧可以抛弃了,但可惜为了向后兼容性,历史包袱是丢不了的。

(2) 历史上机器性能很弱,编译器注重生成代码效率而在不太注重警告语法陷阱——没有足够资源做分析,C++编译已经非常慢了,所以C++的开发者友好度严重不足。

就像JS届出了v8这个奇葩,C++届有了LLVM后,逼得GCC也不断改进,错误信息提示友好漂亮多了,大微软的VC编译器还能把Effective C++, More Effective C++等书里描述的注意事项融入编译器里,也是这个大微软,开源了好用的vcpkg,搭配CMake, C++的开发体验比以前提升了很多,至少比 NodeJS 折腾一礼拜还不一定能搞定编译工具链强 。

(3) Web 2.0 甚至 mobile web 时代,连老实贤惠的Java都被嫌弃,就别提C++了。

C++在科学计算的地位还是难以动摇,别瞅现在Python火的红屁股,其实就是个皮,没有C/C++加持,Python屁都不是。

明确下观点:你不一定要用C++,但它值得了解。补一句,你不一定要用Rust,但它值得学习。

最后,贴一个 Go 的例子,编译没问题,运行出错,而在 C++ 里完全可以在编译期就发现问题,压根不让编译通过。

package main

import (
\t"fmt"
\t"sync"
\t"time"
)

func main(){
\tvar wg sync.WaitGroup

\twg.Add(1)
\tgo foo(wg)

\tfmt.Println("before wait")
\twg.Wait()
\tfmt.Println("after wait")
}

func foo(wg sync.WaitGroup){
\tfmt.Println("before sleep")
\ttime.Sleep(2 * time.Second)
\tfmt.Println("after sleep")
\twg.Done()

网友评论:

鹌鹑精 :我们公司做的远程办公软件比较追求效率。所以一直用c++

比比鸟Ai比目鱼 :怎么说呢,机器人模拟编程很多要用到C++,比如ros呀什么的~~

薄荷菊花茶 :反正嵌入式C很香

DeepLearning :Go和C++有本质区别,就是是否有GC。你不会C++和Python, go一起学吗,哪个适用用哪个,莫非你写个驱动程序也用go?

Pauly :因为c++运行效率太高,老机子也能流场运行,所以大家都不喜欢

老炮啊 :c++必然没落,微软,Google都要替代c++,实际上次c++工作也越来越难找了,现在看rust会替代c++

沙哈拉沙漠一粒沙 :因为他们不会c加加

风吹6700 :呵呵,基础太薄,他们不会用,也用不好。

null都不能用 :说的C++,截图是JS[机智]

在路上51444 :自己不会的都这么任性

渀波儿灞与刁钻古怪 :js的v8也是C++开发的~~

AndroidVSIOS :C++写服务性能贼高啊[呲牙]

十年一觉杨州梦 :现在的所谓“程序员”好多就是短训班或技校出身的那种只能写点界面的人物。全靠库函数,根本不懂什么数据结构、算法之类的基础理论,更别说用C++写个搜索树程序了!

谁家家 :转发了

火锅唉 :转发了

文章来源:https://www.toutiao.com/group/6844480015141175811/

Copyright © 2009-2022 水淼软件技术 Inc. 保留所有权利。粤ICP备16013086号 粤ICP备16013086号-1 转载侵权联系删除