记得刚学编程的时候,老师都说要低耦合高内聚
后面接触了 OO ,好像也讲了很多模块化的设计方法,比如依赖反转
工作后,又有了微服务等划分系统模块的方法

但实际上,各个模块间的集成并非像拼积木那么简单,现在我们离像乐高积木那样编程更近了吗
在使用一些 vim 、emacs 插件的时候,偶尔会有一种积木组合的感觉,不知大家还见过哪些模块化编程、构造的软件呢

企业的需求经常变,代码最终都会变成面条。煮面条就是比捏饭团省事。
事物喜欢归于破坏和混沌,积木式始终是努力的方向,而无所谓远近。

github.com/ardanlabs/service

foundation- 底层 methods, 只要是 web app 都可以 copy-paste
business- 专属的业务逻辑、数据库、中间件
app- web app 入口,handler

最近好像又有大变化了。只要用顺了这个结构,新项目基本上就是缝缝补补,foundation 不用动,business 里的 CRUD 逻辑也是复制粘贴改,app 里的 handler 也差不多

如果说积木的话,我看过几眼的 nest.js 里的各种 decorator 是真的像。一些常见的功能 “@xxxxx”就搞定了

乐高其实远比你想的复杂,你弄个大点的套装,然后不看说明试试,编程其实也一样,达到一定规模,都得靠人脑和经验。

乐高搭了一万层,这时候产品过来告诉你,第 1 层和第 6666 层要大改;

等这个世界像像乐高积木一样单纯的时候,就能实现

感觉你没拼过难的乐高

简单的乐高比简单的程序简单
复杂的程序比复杂的乐高简单
其实道理都差不多,用最基本的单元拼出模块拼出大模块最后装一起

世界哪有那麽多确定的东西,乐高你就确定能拼出个东西来的

思维混乱,概念不清。作为程序员,你不仅是拼乐高的人,也是设计乐高的人。
设计乐高比设计程序容易吗?不。

很多人在家不是不整理,但是要不了几天就会趋于一团

乐高的基础是 数百上千个各项参数确定基本模块
编程的基础是 数千万个(不止)个性能,参数各异的函数

需求细节就是这么复杂多变对应的编码能简单得了?除非强人工智能发明出来自动细化需求并实现

乐高积木你以为简单?不需要学习?汇编对纸带打孔来说就是拼积木,高级语言对汇编也是拼积木,只是不需要学习所谓低一层的技术。你觉得现在开发软件简单吗?需求在发展,工具也有边际效益。

乐高简单的前提是:

一个模型已经固定,批量生产,你买回来按图堆砌,基本上没有改动,用户一般也不会故意搞破坏。

编程难是因为需求不断变化。

如果像乐高那样设计固定不变,编程当然可以可视化拖拽完成,现在就可以做到,其实几十年前就能做到。

现在不就是像乐高一样了吗,不需要你去写汇编代码,一个 if 语句就代替了一大堆 CPU 指令,这还不乐高吗……

中台系统?
基础服务想不出与乐高对应。

现在的各种组件 中间件已经很像搭乐高了

编程本来就是乐高,只不过零件实在太多了,乐高也变得难搭了

乐高挺难的,将几盒大规模的乐高混在一起,没有图纸的情况下,拼一个试一试?

现在编程已经是乐高式的拼装了,关键是要提前设计好怎么拼装

乐高小车车

被秀到了

哈哈,正解。当你觉得你的框架多么爽,多么合理,多么智能的时候,人家明天来一句,能不能把那几个框变成灰色的呀(意思是不可编辑,流程权限)或者后天来一句不好用,还是换回来吧。

定制化和标准化就是偏离的,你的产品越定制越个人化,越不可能标准化,你的产品越标准化,后面改起来就会越痛苦。
特别是当一个产品用到了成千上万个标准化模块的时候,这时候对每个模块的需求又不停的变化,实际上我们现在的标准化已经不错了,问题是需求太过于个人。

所以还是有不少人希望做个简单的 crud boy 的

搭积木的这种方式是乌托邦,永远只能活在想象中。现实是想要追求最极致的用户体验,永远需要优化优化再优化,优化意味着是某种高度的定制,精心的雕琢每一个细节,没有任何多余的部分,你觉得搭积木能达到这种目标吗。

前端组件化就是很好的搭积木,后端其实也可以搭积木,但是完全减少模块的耦合,需要研发团队的心志必须非常清晰,不然迟早写成屎山,你能做到代码的低耦合其他人的水平不一定行,最后把你的代码搅合成屎山。

乐高就有图形编程的,搜索 MINDSTORMS
但是你用过之后,就会想念各种编程语言……因为图形化很难表达复杂逻辑

工程难度不在于写代码.

这比写代码难:)

这类东西挺多的啊
游戏:dota 的地图 我的世界
css: Tailwind
淘宝、京东 对商家来说
各种云服务 不都是么

永远在路上

不是已经有了吗,参考: scratch.mit.edu/
哈哈

中国企业不会给你时间封装的

大概时间点就是以后你买汽车,车商给你一堆乐高让你拼。拼完直接上牌。

差不多这个时候吧。

永远都不可能的。分久必合 合久必分

搭积木想象力不行 类似自动寻路的 copilot 了解一下

你不失业吗

个性化需求太多,不可能这样的

我觉得现在的微服务不就是这种模式么?或者说比乐高的模式更加复杂。把每个服务想想为乐高的每个组件,组装起来才能提供一个完整的服务

一直是乐高积木编程,就是积木太多了点,:D