为什么非得按顺序写代码?顺序重要吗?

47 天前
 muchan92

是否有人想过,“顺序”是代码非本质复杂性的根源。

“顺序”是双刃剑,代码量少时方便,一旦程序变大,就会变为“枷锁”,改动一点儿都可能崩塌,而需求变化却是常态。

真相是,不按照顺序,我们依然可以把逻辑正确描述出来。因为逻辑关系自带方向性,可以自动推导。真正适合顺序的地方是计算过程,而非逻辑。

打破“顺序枷锁”,才能从根本上提升代码的稳定性和可维护性,不再需要重构。因为“稳定性”,本就不该依赖于天生脆弱的顺序。

https://github.com/rainforesters/imsure

github.com/rainforesters/imsure
// [编译期间]
// 定义规则,描述依赖关系,与顺序无关
A = X + Y  ✅
Y = D - E  ✅
X = B * C  ✅
// [运行期间]
// 可以在任何位置、任何时间进行赋值
E = 1 // wait 1s
C = 2 // wait 1s
B = 3 // wait 1s
D = 4 // wait 1s
(A: 9, Y: 3, X: 6)
8303 次点击
所在节点    程序员
102 条回复
w568w
47 天前
前排提示:OP 是之前那个计算机民间科学家

历史战绩:

一种省时省力的编程方式 https://www.v2ex.com/t/1121454
人心中的成见是一座大山 https://www.v2ex.com/t/1122487
我认为促进手机电池 CPU GPU 等硬件发展的好方法是,开发更耗资源的游戏或软件比如微信 https://www.v2ex.com/t/1157448
Leviathann
47 天前
何意味
muchan92
47 天前
@w568w 呵呵
chendy
47 天前
字文的序顺不影响阅读是吧

道理我都懂,但是乱序执行不是编译器和运行时的事么
普通人类乱序写代码是想训练 AI 么
laminux29
47 天前
adoal
47 天前
并没有什么非得按顺序写代码。从上层来说,有纯函数式程序设计等范式。从底层来说,有 CPU 乱序执行。只是你不关注罢了。
Rickkkkkkk
47 天前
这就好像你在 21 世纪,去重新研究 18 世纪前人就搞完的数学一样。

要不先上个大学?
vfs
47 天前
所以你的项目解决了什么问题? 我要如何使用你的项目?
dog82
47 天前
可以,但是会影响编译速度
muchan92
47 天前
这是解决数学或乱序执行问题吗?请先搞清楚再说好吧。
Alias4ck
47 天前
goto
muchan92
47 天前
@vfs 使用声明式写法,用规则来描述业务逻辑。就像写方程式一样,业务逻辑直接映射为规则,不需要推导,它会自动按正确顺序执行。即使需求变更,也只是调整下规则的依赖关系而已,简单可靠,不会涉及到推翻脆弱的代码顺序。
villivateur
47 天前
您是否在找:HDL
moudy
47 天前
@muchan92 建议去读一下 prolog 语言,然后再读一下 xslt
NewYear
47 天前
我同意楼主的想法,且感同身受。

我会写程序,当我成为领导后,再也不关心所谓的顺序写代码。。。
我乱序的把指令丢给下属。。他会自动的把我的想法用代码描述。。。并自动放在指定的位置。

乱序编程法,并没有任何问题。
你只是需要一个中间件,哪怕这个中间件是“人”。
muchan92
47 天前
@moudy 我学过,但它们解决的问题并不一样。
OneLiteCore
47 天前
代码是给机器执行的没错问题是代码也要让人读让人来维护,搞乱顺序或者额外定义一套依赖关系并不会对生产力有任何提升,但是带来的维护问题却是无法忽视的。

本来大公司的代码就已经是一座屎山了各个年代的代码各种设计模式和写法都有,加上这套玩意不如直接在招聘简章里面要求必须剃光头了。
CodeCodeStudy
47 天前
编译器会重排序的
muchan92
47 天前
@villivateur 是 Hardware Description Language 吗?挺好玩,有意思。
deplives
47 天前
请让我尊称您为计算机民间科学家

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1171776

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX