- 主题:异常这玩意儿当初是哪个脑残发明出来的?
可以解决运算符重载之类场景的错误处理
【 在 speedboy2998 的大作中提到: 】
: 污染性太强了。。。
: 老老实实地判断返回值不好好的吗?
:
: ...................
--
FROM 221.221.153.*
expected也很晚
【 在 overcomeunic 的大作中提到: 】
: nodiscard 出来得太晚了
: 如果这东西一开始出现,估计没异常啥事
: 【 在 speedboy2998 的大作中提到: 】
: ...................
--
FROM 114.246.236.*
可以把所有堆内存的释放都放在析构函数里
【 在 e729 的大作中提到: 】
: c/c++,从来不会自动释放动态使用的内存,对吧
: 如果某个调用层次上有动态的对象,那么就得在这里捕获处理,小心地释放内存,然后再次抛出
:
: ...................
--
FROM 123.119.25.*
已经引入标准了,std::expected。但标准库api没有都搞两套。
【 在 hadoop 的大作中提到: 】
: 异常确实不算好用,人力有时而穷,在规定时间内设计一套完美适配应用的异常体系是不现实的
: Rust的error propagation还不错,C++也在考虑借鉴,但真正引入标准估计还得好多年
: --
: ...................
--
FROM 114.246.239.*
提案估计在路上。不过实话说这个语法糖的重要性真不如标准库以此为基准大改造,后者更难。
【 在 hadoop 的大作中提到: 】
: 不是这个,是以这个为基础的类似rust的语法
: ```c++
: auto a = f()??;
: ...................
--
FROM 114.249.209.*
还是有点差别。
safe c++的提案(safecpp dot org)倒是特别高仿复刻rust,关键的borrow checker,默认mut,pattern match什么的都有。
我觉得rust对c++熟手不难学,它安全性上强调的几个点,比如所有权和生存期,在传统面向对象领域其实是交给程序员自己思考的;在语法表达上的变化,熟悉现代c++和一些函数式风格的话也没啥。
【 在 hgoldfish 的大作中提到: 】
: 所以是不是我学会了新版 c++ 就等于学会了 rust?
:
: 【 在 milksea 的大作中提到: 】
: ...................
--
FROM 114.249.209.*
gc语言没什么可比性。go和c#当然不用考虑对象生存期的问题,但并发访问的安全问题不会被gc解决,所有权分析仍然是有力的工具。实际上,所有权分析的学术讨论远早于rust,很多论文都是基于java这种面向对象语言的。(例如,ownership type的重要综述是2013年的Ownership Types: A Survey一文,而这篇论文介绍ownership类型研究当时已有15年历史了。)
c++自由,rust限制多,其他方面差不了那么多。rust的卖点是安全又不是方便。大型企业大型项目就是需要更多语言约束,这个需求是很自然的。
【 在 hgoldfish 的大作中提到: 】
: 这事我思考了一段时间,为啥现在对象的所有权会变得这么复杂呢。一个很重要的原因就是有大量回调函数的存在,让对象的生命周期跳出函数的生命周期。
:
: 原本 RAII 或者简单引用计数就能够做好资源管理,现在因为有大量的异步回调,变得不够用了。所以新兴的 rust 这些语言才会搞出这么复杂的资源管理模型。
: ...................
--
修改:milksea FROM 114.246.236.*
FROM 114.246.236.*
c++现在就行吧,executor用单线程的。rust的调度器也是可定制的,看用什么库了。
c++和rust这样的语言在定位上就是要满足各种不同需求的,任务调度在不同项目里要求不一样。你这些想法都是库开发的问题。
【 在 hgoldfish 的大作中提到: 】
: 如果有协程,很多并发访问就能被避免。
:
: 实际 golang 和 c# 的协程我觉得也不够优秀。原因是 golang, c# 和 java 都选择了让协程在线程自由调度,因为他们有庞大的兼容性包袱需要继承。
: ...................
--
FROM 114.254.2.*
你这个思路需要什么语言机制么?看着像底层库开发
【 在 hgoldfish 的大作中提到: 】
: c++ 当然可以啊。所以我自己一直以上面写的那些思路在写程序的。
:
: 我写的程序很少出现什么内存泄露和因为指针引起的崩溃。就简单使用 RAII 规则搭配有栈协程。
: ...................
--
FROM 114.249.209.*
我是是你这些不需要c++语言为你做什么改变啊
【 在 hgoldfish 的大作中提到: 】
: 上面那个帖子讲了一个例子。
:
: 我手头还有几个 PC 端的程序,用也是协程,但是因为混入 GUI 的事件循环,看起来就复杂了一些。但是基本情况也差不多。就是有事件过来,如果有 IO,我就启动协程。事件处理完成,协程也被销毁了,使用到的(内存)资源也跟着销毁。
: ...................
--
FROM 114.246.237.*