V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  wutiantong  ›  全部回复第 1 页 / 共 31 页
回复总数  617
1  2  3  4  5  6  7  8  9  10 ... 31  
46 天前
回复了 sekfung 创建的主题 职场话题 办公室恋情传开了,唉
就这就好难了?
263 天前
回复了 zxCoder 创建的主题 C++ c++在公司里一般是做什么的啊
@ipwx 我觉得无知者的道听途说根本配不上这么认真的回复啊
@ipwx vcpkg 不香吗?
@nowheretoseek 当问题包含太多假设时,实际上,你自身的知识储备成为了唯一的瓶颈。与其在这里靠想象不断发散,为何不花点时间去学习掌握实际的知识呢?毕竟 unicode 又不是什么黑箱的东西。
286 天前
回复了 icemanpro 创建的主题 C++ 多列表格的数据结构设计
std::map<std::tuple<int, int, int>, int>
289 天前
回复了 zuoanyx 创建的主题 C++ protobuf 的内存如何全部释放
你的实验缺乏说服力
@Observer42 我是说得夸张了些,见笑~
@Austaras
std::variant std::tuple 我不仅看过,也在不断地大量使用。

我其实不明白你们为何那么执着要证明 rust 比 C++更好,
而且我也没看到任何有说服力的证据,翻来覆去说的都是一些老生常谈。

毕竟在我看来,你们口中各种对 C++的控诉,看起来似乎只能证明你们并没有学会这门语言的正确写法。

那么,根据你刚才的两条回复,我能否请你:

1. 举出一个实际代码的例子,展示 rust 的 adt+pattern match 是如何漂亮地抽象了一个复杂问题,我可以试试用 C++是否会写得丑陋且爆炸。

2. 举一个引用必须要飞来飞去地例子,来展示通过声明周期标记 rust 编译器是如何为我们节省思虑并且提高性能的,我可以试试用 C++是否必须要牺牲性能与可读性。
@no1xsyzy 很有趣的样子,谢谢推荐
@lesismal 学 C++可能是比较难的,但也没有你们说得夸张(很多事情真的会被无限的夸张渲染),不用管上古语法和 boost,直接从 C++11 学起,除了 C++ Primer 还推荐看这些:
1. https://www.stroustrup.com/tour2.html
2. https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md
@Austaras 另外,你说的引用飞来飞去确实会令人头大,所以我一直在告诉你,一个可能是你的代码结构有问题,二个是如果你用 C++善用值类型封装,你就不会看到引用飞来飞去了。
@Austaras “语法可能性”就是指 c++的语法 feature 多呀,你真的可以多了解了解。
比如你特意提到的 adt,我去搜了一下,好像就是 std::variant ? c++的一个小工具类原来在你心目中有那么厉害?
@junkun
你说得其实大体都对,而且我觉得也没必要说服你去喜欢 C++。
事实上,确实不断地听说一些基础项目在用 rust 重写,
所取得的喜人效果也实属意料之中,令人欣慰,非常支持。
也许这其中也有你的贡献,谢谢。
@no1xsyzy ponylang 是新语言吗?还没怎么听过呢。

我完全理解 “在大部分代码中不需要写”,就好像有些人用智能指针时连 weak 都没弄明白。

毕竟这里很多人连写库与写应用的差异都没有体会。
@junkun

1,访问一个移动后的对象不是 UB,请参考: https://en.cppreference.com/w/cpp/language/move_assignment

2,确实不应该继续使用一个移动后的对象,既然选择了 move 它,就隐含着“不会继续用它了”这样的判断

3,大部分时候移动语义自动发生,较少时候需要手动 std::move(),请参考: https://en.cppreference.com/w/cpp/language/value_category

4,“为了保证你在函数内访问或返回一个对象的引用的时候,这个引用一定是 valid 的”,所以 rust 到处都是对象的引用吗?难怪会变成这样呢。如今用 C++可以大量地运用值语义类型,结合 const & 你都很难看到 new / 指针 / 左值引用,别提多爽了。
@Austaras
可以看出你非常喜欢 rust,我虽然没学过 rust 不过坦率来说,我挺抵触“在语言层面上显式地定义生命周期”这个 idea 的。
对象的生命周期在 C++里明明已经不是问题了,而这与智能指针没有太大关系,主要是受益于移动语义和 RAII 。
现在在 C++里,对象在定义(不是 new )时诞生,在离开 scope 时自动消亡,并不需要付出多少精力去解决所谓的生命周期问题。
固然这一切有赖于写 C++的人是否真的学会了这些,而一知半解的代价就是引起各种生命周期问题。
但平心而论,rust 并没有真正去简化任何问题,它需要每个人在语法上付出额外的代价来获得一份来自编译器的保护,使得那些一知半解的人即使继续写出有问题的代码,至少不必付出实际代价(无法上线)。
那么在座诸位,你是想继续做一个对生命周期问题一知半解,用丑陋的代码来换取编译器保护的人;还是想做一个彻底攻克生命周期问题,持续写出优雅的代码,并有机会探索更多语法可能性的人呢?
311 天前
回复了 mer 创建的主题 C++ C++ 中 Lambda 对变量的捕获居然是在声明时就做了
lambda 就是这样的,
你定义它时,你实际上是创建了一个匿名类型的 functor object,
而捕获列表中定义的都是这个匿名类型的成员变量,
所以,并不是 static 的,而是成员变量的。
@dynastysea 也有很多不写业务的程序员啊
1  2  3  4  5  6  7  8  9  10 ... 31  
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2697 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 37ms · UTC 08:54 · PVG 16:54 · LAX 01:54 · JFK 04:54
Developed with CodeLauncher
♥ Do have faith in what you're doing.