V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  nebkad  ›  全部回复第 1 页 / 共 5 页
回复总数  93
1  2  3  4  5  
3 天前
回复了 OliverDD 创建的主题 程序员 对数据库感兴趣,但完全接受不了 cpp
Rust 神教教徒来传教了,不喜请忽略。

我跟你一样,对数据库的查询引擎和存储结合的部分很感兴趣,也觉得 CPP 的心智负担真的太大了,没办法让我在快速试验想法的同时,能够积累一些代码用于下一次的迭代。

如果只是要快速迭代,那可能用脚本语言或者别的灵活性很高的语言是可以的,但问题是这些语言虽然表现力强但是性能真的很成问题,很难用于积累。

所以 Rust 真的很适合,它的类型系统能够帮助你以很正交的方式来描述抽象设计,零成本抽象的设计原则提供了良好的运行时性能。

作为一个曾经的 CPP 程序员,我认为 Rust 真的不需要知道什么奇技淫巧或者 corner case 就能用得很好;当然这对于很多人来说,可能 Rust 的门槛真的很高,因为他们不一定需要这么强力的工具。但以你的目标来看( DBMS 核心组件),Rust 应该是恰当的。
9 天前
回复了 hfl1995 创建的主题 Tesla 关于“单踏板模式”
@yannxia #198
我反正无所谓我是不是愚昧,我又不是无所不知。
但是你说我站在他们的对立面,那你肯定又是愚昧了。
反对“单踏板模式”的人里面,会持有什么观点我非常清楚并且很理解。
倒是你有没有问过他们,有没有开过可调节动能回收、定速巡航或者全速自适应巡航,
如果他们知道这些的话,电车不可以松开踏板放在刹车踏板上备刹吗?这时候和油车有任何区别吗?
愚昧就是愚昧,不会因为有自己的理由就不是愚昧
10 天前
回复了 hfl1995 创建的主题 Tesla 关于“单踏板模式”
看完所有回复,OP 有没有觉得人类的愚昧真的很顽固?哈哈哈哈~

就是有那么一部分人,既不能从文字描述中感知叙述者的感受,也不愿意亲自去感受,
然后坚持以自己的想象否定叙述者的体验。

所以我一直认为,一线销售人员应该是一种技术工种。
@bli22ard #6
标准库里为所有 T &T &mut T [自] [动] [地] 实现了 Borrow 和 BorrowMut 。
你不妨试试“自动地”实现一个 trait 在某个 feature 没有 stable 之前是不是允许的。

AsRef 和 AsMut 可没有这个待遇。
并且,其实 AsRef 和 AsMut 更符合设计用途的用法是类似于 OO 里面的子类隐式向父类引用转换。
而 Borrow 和 BorrowMut 在理解了 “有所有权” 和 “有使用权” 的细微差异后就会发现真的很有用
@bli22ard #4 你会这么想是不是因为你没有注意到 这段代码
https://doc.rust-lang.org/src/core/borrow.rs.html#208-241

不可能有别的代码能替代这段标准库里的效果
譬如说,我要实现一个 RingBuffer ,可以 RingBuffer 自己分配 buffer 的内存,也可以接受外部输入的 buffer 。
我们可以发现,无论自己分配还是外部输入,RingBuffer 的大部分功能代码都是一样的,不太可能为此写两种不同的 RingBuffer 。那么,RingBuffer 就可以这么定义:

```Rust
pub struct RingBuffer<B: BorrowMut<[u8]>>(B);
```
51 天前
回复了 sevenfeet 创建的主题 生活 老婆坚持想生孩子,烦
如果你对没有小孩的生活有美好的期待,觉得那是一种持久的自由甚至是幸福,那我只能说你还很嫩。
养育小孩是另一种创业,不知道这个角度对你来说会不会有点启发。
确实有很多人不适合养育小孩,正如很多人不适合创业一样。
53 天前
回复了 yanyao233 创建的主题 程序员 总是忍不住重复造轮子
这很正常,我前两天又手痒造了个基于 ticket 的 spinlock 并且实现了用合理的代价支持线程退出争夺锁
准备再过段时间实现一次 poison 检测
而这些东西,任何现代操作系统都直接提供了实现
55 天前
回复了 fgasdzxc 创建的主题 Go 编程语言 想探讨下 Go 中的网络编程模式
如果你学 Rust ,那就可以很容易地明白他们为什么这么说,但你学 Go 我只能说你要多想。
(对我是来挑事儿的 XD
谁能想到呢,写个 spinlock 都需要引入分布式算法。

在极其有限的内存中(一个 int )挤出两个 bit 用来标记:1.受控取消争夺锁状态,2.有线程崩溃后的 非受控取消争夺锁状态。

先说 1 受控取消
取消者要设置标记,然后把自己的 ticket number N 放在 atomic_int 里面,才可以安全退出,
然后 ticket number 是 N + 1 的等待者检测到这个变化,也把 N + 1 防盗 atomic_int 里面,继续等待。
如此类推,就可以顺利地把所有等待者都顺利更新 ticket 。
第 n 个受影响的等待者会发现自己更新之后,N + n 一直不会变,那么他来负责清除这个受控取消状态的标记。
这帖子真的太难顶了,浪费了我整整一分钟
所以“开源才是解放程序员自己,同时又能产生价值” 这个结论非常反直觉,但时间尺度够大的时候是成立的。
调侃:因为你和那些人不是一个档次。(对,你的高)

你想听到的答案:因为口味问题。

真正的原因:因为 go 的 err 强迫你写大量重复且相似的代码,并且这些代码完全可以用更好的模式来取代。
122 天前
回复了 Aih 创建的主题 Rust Rust 的 Deref trait 是不是叫 Ref trait 更好一些
Deref AsRef Borrow 都有相似的作用,叫做 Ref 很难区别其中的仔细差异
127 天前
回复了 monkeyWie 创建的主题 Rust 最近初学 rust 有个疑问
@lifespy

如果你是说代码的很多 **表示类型** 的地方都需要表达是否可空,嫌弃 Option 字母多,那你需要的可能是编辑器自动提示。

如果你是说需要链式处理判断是否空,那也是我支持的语法糖作用,并且 Rust 也支持,你甚至还可以用 Try trait V2 来自定义衍生的语义。

总的来说,OP 对 rust 了解太少,习惯或者麻木的东西太多
129 天前
回复了 monkeyWie 创建的主题 Rust 最近初学 rust 有个疑问
? 语法糖仅仅用来表是可空真的是太浪费了
只分享体验,你杠那就是你赢
100 km 快速路通勤,用普通的 L2 级 LCC 真的反而会少很多事故,就是自动跟车哪种就足够了:
1. 不用一直踩油门控油门,就不会焦躁,不会路怒,尤其是人累的时候
2. 设置一个合理的跟车距离,可以大幅减少追尾风险
接口(interface) 是一种调用约定,告诉外部使用者,这个东西可以做某个事情。
所以,我们通常会说“实现一个接口”而不是“继承一个接口”。

继承是一种代码组合方式,告诉外部使用者,这个东西不单可以做某个事情,并且这个事情是像以前(父类)那么做的。
1  2  3  4  5  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3139 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 34ms · UTC 10:53 · PVG 18:53 · LAX 03:53 · JFK 06:53
Developed with CodeLauncher
♥ Do have faith in what you're doing.