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

发表于:2020-7-03 09:10

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:海哥科技宅    来源:今日头条

  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 (
"fmt"
"sync"
"time"
)
func main() {
var wg sync.WaitGroup
wg.Add(1)
go foo(wg)
fmt.Println("before wait")
wg.Wait()
fmt.Println("after wait")
}
func foo(wg sync.WaitGroup) {
fmt.Println("before sleep")
time.Sleep(2 * time.Second)
fmt.Println("after sleep")
wg.Done()

本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号