虽然说没有银弹,但是我感觉 c++完全可以设计成更友好,开发速度更快的语言

2021-07-14 21:14:58 +08:00
 zxCoder

c++大佬别杠我,不可否认的是 c++学起来实在太难,写起来实在太慢

实际上很多东西感觉完全可以反过来吸收别的语言的优点

17558 次点击
所在节点    程序员
209 条回复
wangxn
2021-07-15 00:39:06 +08:00
Rust 更友好、开发速度更快?难道不是相反?
符合楼主说的显然是 C#。地球上不可能找出另一个特性比它更丰富的语言。
ipwx
2021-07-15 00:58:25 +08:00
CLion + CMake + C++17 + https://conan.io/

相信我,爽到飞起。
xupefei
2021-07-15 01:36:46 +08:00
说到特性丰富,Scala 默默路过。
Leviathann
2021-07-15 01:55:40 +08:00
不用操心内存就好了,兼容 C ?嗯,语法上兼容。但是总之基于 class 的面向对象永远滴神——于是我们有了 Java
dcoder
2021-07-15 02:25:44 +08:00
@zxCoder
看标题就有一堆 Rust 推荐, Rust 是不错, 不过确实也复杂...
我在关注 Jonathan blow 的 JAI 语言, 不过还得等段时间
https://github.com/BSVino/JaiPrimer/blob/master/JaiPrimer.md
fpure
2021-07-15 09:18:27 +08:00
@wangxn 只要理解并接受了 rust 的所有权机制,rust 的曲线可谓是一马平川
AndyAO
2021-07-15 09:25:53 +08:00
'兼容'在软件开发中是很重要的
7075
2021-07-15 09:35:09 +08:00
大 js 即将一统江湖
dynastysea
2021-07-15 10:11:32 +08:00
如果你需要用到其他语言那些各种特性,那说明 C++其实不太适合你的项目,C++现在没事干也是各种抄袭别的语言新特性,个人觉得路走偏了,C++的核心应用场景根本不是靠那些新增乱七八糟的特性能解决的
ipwx
2021-07-15 10:51:39 +08:00
@dynastysea 其实那些特性都还挺重要(还嫌不够)。
abcbuzhiming
2021-07-15 11:09:04 +08:00
就我所知很多大厂的 C++开发都是加了额外的强制限制,甚至是把 C++当成了 c with class 来用,总之就是避免太过灵活
dynastysea
2021-07-15 11:11:31 +08:00
@ipwx 比较好奇是什么业务一定要用到那些新特性
wutiantong
2021-07-15 11:23:22 +08:00
@dynastysea 也有很多不写业务的程序员啊
Cloutain
2021-07-15 11:23:22 +08:00
C++++ == C#
dynastysea
2021-07-15 11:24:41 +08:00
@wutiantong 我知道啊, 正是因为不写业务我才好奇,不用来写业务的 C++为什么要用到哪些乱七八糟的新特性
ipwx
2021-07-15 11:26:25 +08:00
@dynastysea 主是写起来就需要。
----

我上半年写了个 3.5 万行的 C++ 项目,需要低延迟高性能。如果没用 C++17 估计得 5 万行了。

最常用的新特性:

1 、for (const auto& : ...)
2 、T&&,这能让我明确指定一些情况下不需要拷贝而是移动栈对象。(对高性能程序很重要)
3 、template <typename Args...>。我用了很多这个来简化写代码。
4 、template <typename Fn> void someWrapper(const Fn& fn)。这就是所谓的高阶函数,特别简化代码。
常见用法比如 void wrapError(const Fn& fn)
还有就是需要对不同 fn 的进行相似的初始化、返回值进行相似的操作。
5 、template <bool XXX> void f(...) { if constexpr (XXX) { } }。这个特别好用。因为有些分支在有些情况下是不运行的,你想要减少 latency,就用 constexpr 去直接暴力优化掉这些代码。( constexpr 是编译期判断)
6 、std::unique_ptr, std::shared_ptr 。这不是新特性了。但是配合 T&& 和 std::move 就很好用。

上面这些都挺省我代码量的。一些其他零碎可能我用到的不够多就不记得了。
ipwx
2021-07-15 11:27:22 +08:00
@dynastysea 还有,一开始就考虑 C++ 是因为 Java/C# 这些带 GC 的语言有 GC 延迟。而我这里需要非常确定性的低延迟执行时间,又是各种多线程的,所以只能配合 shared_ptr 用 C++ 了。
likefly
2021-07-15 11:31:14 +08:00
@janus77 现在还在质疑 java 性能就落后了:半解释半编译,热点代码即时编译,可以说运行时间越长速度越快,跟 C 和 C++ 没什么差别
kiracyan
2021-07-15 11:33:35 +08:00
现在的大系统都是多语言的了 只能说单一语言更适合某个模块
dqzcwxb
2021-07-15 11:47:56 +08:00
@ipwx #37 Java ZGC 可实现最大 STW 时间 0.05ms

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/789560

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX