- 主题:AI 写代码确实太爽了
【 在 hgoldfish 的大作中提到: 】
: 我最近修的好几个 BUG 对调个语句就解决了。Rust 能解决吗?
: 1. 应该先更新缓存再通知客户端。之前弄反了。
这种业务顺序可以体现在类型系统里的,比如,更新缓存前的数据类型是Something,
更新后变成SomethingWithCacheUpdated,通知客户段的接口只接受后者,传错了必然编译不过
: 2. 双重循环的次序错了。不满足数据局部性规则。
: ...................
--
FROM 123.120.175.*
学习了
【 在 beep 的大作中提到: 】
: 这种业务顺序可以体现在类型系统里的,比如,更新缓存前的数据类型是Something,
: 更新后变成SomethingWithCacheUpdated,通知客户段的接口只接受后者,传错了必然编译不过
--
FROM 112.224.69.*
这些完全同意,我也是gemini用户。
不过可能我有实证和循证的思想钢印,不充分测试的程序就release不就成信仰了吗?
【 在 lvsoft 的大作中提到: 】
: 简单的说就是系统跑起来你要大致看看跑起来如何吧?
: 我做的就是构造一个e2e测试把我最感兴趣的功能点跑下。
: gemini上限非常高,但下限也非常低,你可以认为gemini是一个脱离一线很久的架构师,让它去干活还有点眼高手低,所以要用好是需要和它好好磨合的。
: ...................
--
FROM 222.71.196.*
人本来就是基于经验做事的,当经验强到一定程度那就是信仰。
另一方面,要做多大程度的测试也取决于出错的后果有多严重。我是认为基于rust的系统,它基础上就比其他语言+50%测试。
所以虽然我没测,但对于其他语言来说已经相当于做了50%覆盖率的测试了。
【 在 hoo 的大作中提到: 】
: 这些完全同意,我也是gemini用户。
: 不过可能我有实证和循证的思想钢印,不充分测试的程序就release不就成信仰了吗?
--
FROM 101.229.188.*
beep已经回答的很好了。
我之前在circuit版说过一个例子,比如mcu里面寄存器的某一个bit,表示对应的某个功能是否开启。1是开启0是关闭。
rust里面对这个bit位的读和写要用不同的枚举。
读就是xxx.enabled
写就是xxx.enable
如果你用错了编译就过不去。
rust就是严格到这种程度,基本上不会给你犯错的空间。
【 在 gfkid 的大作中提到: 】
: @lvsoft 还是请lvsoft解惑吧
: 不过我感觉你这个问题不是换个rust就能轻易解决的
: 不过如果改进prompt 有可能能让AI发现自己的逻辑问题 这样它自己就会修改
--
修改:lvsoft FROM 101.229.188.*
FROM 101.229.188.*
推荐读一下 Domain Modeling Made Functional: Tackle Software Complexity
就是在讲各种编译器保证业务逻辑的方法,只要语言有像样点儿的类型系统就可以
知乎上的 工业聚 也写过类似的系列文章
【 在 gfkid 的大作中提到: 】
: 学习了
--
FROM 123.120.175.*
我最初接触到的这方面的例子就是你写的相关内容,哈哈
其实和rust关系不大,只要是个提供ADT类型系统的语言,nominal typing的,都可以做到这一点。甚至typescript这种structural typing的,没有sum type的,也能模拟出来凑合用。
关键还是人要有概念,要主动充分使用类型来描述出尽可能多的逻辑要求。否则
rust也帮不了任何一点
【 在 lvsoft 的大作中提到: 】
: beep已经回答的很好了。
: 我之前在circuit版说过一个例子,比如mcu里面寄存器的某一个bit,表示对应的某个功能是否开启。1是开启0是关闭。
: rust里面对这个bit位的读和写要用不同的枚举。
: ...................
--
修改:beep FROM 123.120.175.*
FROM 123.120.175.*
是的,这个东西只是用类型系统去约束业务逻辑,现代语言都可以做到。
但选择一门语言更重要的是选择了一种风格。比如我前面说的这个例子,
如果不是写这个库的人有这个洁癖,rust下当然也是可以和c一样用&&和|=的方式来读和写bit位的。
所以我才强调rust的重要性,就像pythonic就意味着飘逸,随机应变糙快猛,rustic就得严格严谨有洁癖。
而且rust真的特别适合干这个,比如我之前用他做一个运控系统,里面涉及位移单位,我设定一堆公制,英制单位,甚至还有丝这种10um的国内特有的单位。这里我直接用中文写,比如move_to(10.丝())。我甚至把相对坐标值和绝对坐标值也用单位做了约束。相对值+绝对值还是绝对值,绝对值减绝对值就是相对值,... ...
这种有量纲的感觉真的写起来非常的爽,架构定好随便搞,一有错误编译器马上就抓住了,根本错不了
【 在 beep 的大作中提到: 】
: 我最初接触到的这方面的例子就是你写的相关内容,哈哈
: 其实和rust关系不大,只要是个提供ADT类型系统的语言,nominal typing的,都可以做到这一点。甚至typescript这种structural typing的,没有sum type的,也能模拟出来凑合用。
: 关键还是人要有概念,要主动充分使用类型来描述出尽可能多的逻辑要求。否则
: ...................
--
修改:lvsoft FROM 101.229.188.*
FROM 101.229.188.*
告诉ai思路开发成益智小游戏,直接在元宝聊天界面里跑起来
--
修改:FuZu FROM 223.160.174.*
FROM 223.160.174.*
对,之前就是看你那个10.丝(),从中悟到了trait的威力
【 在 lvsoft 的大作中提到: 】
: 是的,这个东西只是用类型系统去约束业务逻辑,现代语言都可以做到。
: 但选择一门语言更重要的是选择了一种风格。比如我前面说的这个例子,
: 如果不是写这个库的人有这个洁癖,rust下当然也是可以和c一样用&&和|=的方式来读和写bit位的。
: ...................
--
FROM 123.120.171.*