TGViewer
codedump的电报频道 codedump的电报频道 @codedump_notes · 5.5K subscribers
Post #395 3.1K
#杂
这段时间给Databend增加增删列的功能,基本功能已经通过,加了如下截图的用例,目的是验证一顿增删列、插入数据之后的查询都是正确的。

可还是很忐忑,因为这个功能涉及了很多对原有数据格式的修改,要保证所有场景都兼容到了。

我最近复习数学,反过来看,编程在大部分时候,都不能算是“科学”,更多算是“工程”。个中原因,我认为大部分时候,无法从数学角度严格证明一个功能是100%完全没有bug的。

复杂参数的场景姑且不论,就以最简单的整数为参数的问题来说。数学归纳法的原理是先证明n=1的时候结论成立,再假设为n的时候结论成立,最后以这个为前提来证明n+1时结论成立,这在数学上是可行的。但是呢,来到编程领域,一个“千年虫”问题,不过就是表示年份的整数划到了2000而已,就能触发bug了,数学归纳法在这里失效了。

在知乎上看到过著名的“一个测试工程师走进一家酒吧”:
“
一个测试工程师走进一家酒吧,要了一杯啤酒

一个测试工程师走进一家酒吧,要了一杯咖啡

一个测试工程师走进一家酒吧,要了0.7杯啤酒

一个测试工程师走进一家酒吧,要了-1杯啤酒

一个测试工程师走进一家酒吧,要了2^32杯啤酒
...
”

很多时候人们当成段子来看,但是现实中就是这样,无法去归纳某个场景的测试就是完备的,只能靠:堆用例的场景去验证。

sqlite是业内最稳定的数据库之一,号称几万个用例,可即便是它的作者也不敢打包票100%无bug,也是一边补充用例一边增加现有用例。

总而言之,一个事情如果无法用数学原理严谨证明其正确性,总会出问题;反过来说,编程在大部分时候无法用数学证明其正确性,所以编程不是科学,更接近于工程:靠经验、靠堆用例等等手段去保证(而不是验证)其正确性。
  • 👍 25
More from @codedump_notes
  1. Sep 27, 2026#系统编程 讲解Go语言并发主题的小书:《Go concurrency distilled》
  2. Sep 22, 2026#开源软件 开源本来承载的主要任务之一就是赢得信任,智谱这一把开源不但没有赢取信任,反而让更多人感到了疑问,比如我。
  3. Sep 22, 2026#开源项目 #Rust #数据库 hawdb:Rust编写的嵌入式图数据库,用于Nowledge产品中管理本地图数据。
  4. Sep 21, 2026#Rust #人工智能 最近看了好几个Rust相关的新闻,比如: * Rust在微软内部升级为一级语言:《Guest Post: Rust Is Tier-1 Language a…
  5. Sep 19, 2026#人工智能 这个翻译可以说是 信达雅 了。
  6. Sep 15, 2026#人工智能 《我不得不把才华埋葬在昨天》,Deepseek 核心开发的文章,也许再过一段时间,他就不用亲手写算子了。
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →