描述现实世界的复杂性
代码就是描述现实,人无法想象一个自己没见过的东西,所以除了计算机的发明着,其他人大部分都只是用代码去描述现实世界的问题。
比如微信,抛开一切花里胡哨的描述,它的作用其实就是满足人与人之间的交流,私聊就是两个人的聊天,群聊就是一群人的聊天,只不过这里的聊天方式多了,可以打字,可以语音,可以视频,这些东西都是外在的表现而已。
但是正是因为这里的不同的表现导致了复杂度的提升,文字、图片、视频、转发的消息,转发里面还有转发的消息,就是这样不同的场景导致了本来简单的聊天工具变得异常复杂。所以一个工具,他都是有现实意义去对应的,如果没有现实意义去对应,那么这个app大概率是没有太大价值的。
所以不要抱怨代码的复杂度,而是要自己去控制复杂度,就是墒增的速度,任何一个东西都有其生命周期,无非就是时间的长短,当设计足够好,那么这个软件就可以不断的更新迭代而不至于被自己的逻辑锁死。之前看一个说法就是代码其实无关事实,只有在自己的逻辑里能自洽,那么就是一个好的设计,至于那些暂时无法做到地方再去推演,因为我们无法一下子掌握所有细节,只要逻辑上能自洽,那么在后续的推演中就能获得需要的结论,这就是一个设计,至于这个设计能否成功,还需要补上之前的逻辑,如果能补上,那这个设计就是成功的,如果不能,那就证明了一个无法行得通的方案。
我们需要做的就是描述出我们需要的条件和复杂度。
2024.11.08更新:最近在路上一直在思考这个事情,世界的复杂性就代表了想要让一切都符合规范几乎是不可能的,就像我之前看到的一个关于Rust的unsafe的解释我感觉非常好,在这里引用下:
因为世界本质上是unsafe的。
Rust自己画了一个圈,这个圈叫safe,在圈里可以保证安全,在圈外不保证安全。
不保证安全,并不是 保证不安全。
如果你要告诉Rust编译器说,这里我可以保证safe,就可以用unsafe了。
unsafe可以理解为safe担保模式,结果自负,风险自负。
作者:whhema 链接:https://www.zhihu.com/question/651290783/answer/3451918350 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
就是说这个世界上没有能完全保证safe的同时,还保证非常安全的检查,这个和世界就是违背的,世界上的特殊情况太多了,如果我们只按照一个方式去走,那么迎接我们的大概率是失败,只有很多的方向去尝试,去走,才能有更好方向被找出来。
世界的不safe也是其中的一个方向,所以我们的代码在设计的时候要天然想到这些safe和unsafe的东西,世界上不乏君子,但是小人也很多,我们要为了这些去做个取舍,防止小人的同时也要让君子能更好的使用。
2024.4.30