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

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

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

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

16935 次点击
所在节点    程序员
209 条回复
danc
2021-07-15 15:09:09 +08:00
大佬们来搞 go + rust,这两加起来能搞定很多东西了
ipwx
2021-07-15 15:35:34 +08:00
@YUCOAT 老哥,C++ coroutines 是个半成品啊,面向库作者的。就好像只教了你极限的概念,却不教你怎么用微积分,这看得懂才怪。我又不想 contribute to boost,那我选择等一等。
xsen
2021-07-15 15:49:11 +08:00
一句话就是,c++路走偏了,而且越走越偏。一大堆语法糖

后端 golang,PC+手机( iOS/Android )用 flutter ;体验还是很好的哈
Austaras
2021-07-15 16:06:28 +08:00
@ipwx 能举几个 crates.io 上没有的例子吗?
mapoor
2021-07-15 16:29:41 +08:00
同意,那为什么 C++就不能学习下 Python2 -> Python3,强行变道。
ipwx
2021-07-15 16:29:45 +08:00
@Austaras ummm 我又不熟 Rust,我怎么和你讨论这个问题。

反正前段时间我找 lock-free non-blocking mpmc queue 的时候,github 资料很多,论文也是用 C++ 写的。Rust…… 它太新了啊,这种偏门玩意儿万一找不到怎么办呢?对吧。
ipwx
2021-07-15 16:31:32 +08:00
@Austaras 哦我知道了。我项目用了个类似 NumPy 的 C++ tensor template library 。

https://github.com/xtensor-stack/xtensor

这个 Rust 估计不太行。别的不说,这个库超级依赖 C++ template metaprogramming,在接口一致的情况下可以分情况自动使用 simd 。
Tezos
2021-07-15 16:31:42 +08:00
rust+1!
AX5N
2021-07-15 17:01:48 +08:00
rust 不如 c 优美,但 c 又过于简陋了。
bigtan
2021-07-15 17:08:26 +08:00
@ipwx 听起来有点像交易系统
Feiex
2021-07-15 18:28:01 +08:00
@ipwx 盲猜量化交易或者对接了柜台系统
skadi
2021-07-15 18:28:19 +08:00
c++ 2a
dqzcwxb
2021-07-15 18:31:46 +08:00
@ipwx #47 JDK 16 中的 ZGC:平均暂停时间 0.05 毫秒 - Glavo 的文章 - 知乎
https://zhuanlan.zhihu.com/p/359249269
知识需要更新
12101111
2021-07-15 20:35:11 +08:00
@ipwx lock-free non-blocking mpmc queue: https://github.com/crossbeam-rs/crossbeam
numpy: https://github.com/rust-ndarray/ndarray
Rust 的 proc macro 比 C++ template 强多了, 别的不说, c++的 json 库一个比一个难用, 和 serde+serde_json 根本没法比
GeruzoniAnsasu
2021-07-15 20:52:39 +08:00
更友好,开发速度更快 是可以

但是 zero-cost abstraction 怎么办?明明这才是 c++的立足之本


虽说零开销本身肯定是过于理想化了,但直到今天世界上能有多少语言能做到写出一行代码你能确切估计开销,而且你有信心开销只会来自可控的自己产生的代码中的呢?



另外“更友好的 c++” 我不知道这些吹捧者是怎么想的,rust 想解决的 c++中最大的问题(对象生命周期)在今天 c++基本已经自行解决了,两个差不多复杂的怪物我至今没看到哪里能解释到底所谓的“更友好”从何体现。从 c 和汇编学上来的 c++我基本能搞清楚运行时都会发生什么,虚表、构造函数、空间分配、ABI,这些东西在汇编上的反映写 c++的都心里有数。尽管 c++加入了非常多的编译期和语言特性,但运行时或者说成品机器码一直没怎么变(换了一套 ABI 但抽象的实现方式没变),我可以一边写抽象的容器模板一边考虑 CPU 缓存友好性,甚至能用 constraint 去约束这个容器的空间分配策略是缓存友好的。(比如要求空间连续,即要求实现随机迭代器这种方式)

可以说 c++虽然从复杂的怪物正在变成复杂的缝合怪物,但它逼近问题解决方案的“精神”其实没怎么变,只是绝大多数学过 c++的人还体会不到或者不需要这种求解方式而已。
ipwx
2021-07-15 21:20:00 +08:00
@GeruzoniAnsasu 是的是的。因为过于熟悉这套我甚至忘了这才是 c++ 最值得称赞的东西,只记得用起来很好用。

不过楼上几个老哥说起的 Rust 不知道有没有这个特性,看上去好像也有点意思。
Austaras
2021-07-15 21:26:32 +08:00
@ipwx mpmc queue 这个应该有的吧,crossbeam 用得非常广泛
Austaras
2021-07-15 21:28:30 +08:00
@GeruzoniAnsasu 谁告诉你 rust 不是 zero cost abstraction 的。。。借用 rust 团队里一个人吹逼的话,给一段 llvm ir,他可以人肉还原成 cpp 或者 rust

此外生命周期的问题不要以为用了几个智能指针就算解决了
agagega
2021-07-15 21:45:23 +08:00
Swift 照理说是一个很有优势的语言,同样是静态强类型,无 GC,基于 LLVM,但性能还是被 Rust 吊打..
ysc3839
2021-07-15 21:59:36 +08:00
@agagega 我感觉 Swift 没发展起来是生态问题,大部分 Swift 开发者都是用来开发 macOS 和 iOS 应用的,写出来的代码很难跨平台。C# 也有类似的问题。

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

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

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

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

© 2021 V2EX