V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pythonee
V2EX  ›  程序员

我们离像乐高积木那样编程还有多远?

  •  
  •   pythonee · 2021-11-14 09:00:45 +08:00 · 7023 次点击
    这是一个创建于 866 天前的主题,其中的信息可能已经有所发展或是发生改变。
    记得刚学编程的时候,老师都说要低耦合高内聚
    后面接触了 OO ,好像也讲了很多模块化的设计方法,比如依赖反转
    工作后,又有了微服务等划分系统模块的方法

    但实际上,各个模块间的集成并非像拼积木那么简单,现在我们离像乐高积木那样编程更近了吗
    在使用一些 vim 、emacs 插件的时候,偶尔会有一种积木组合的感觉,不知大家还见过哪些模块化编程、构造的软件呢
    43 条回复    2021-11-16 16:04:19 +08:00
    jackmod
        1
    jackmod  
       2021-11-14 09:07:27 +08:00 via Android   ❤️ 2
    企业的需求经常变,代码最终都会变成面条。煮面条就是比捏饭团省事。
    事物喜欢归于破坏和混沌,积木式始终是努力的方向,而无所谓远近。
    XTTX
        2
    XTTX  
       2021-11-14 09:09:59 +08:00
    https://github.com/ardanlabs/service

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

    最近好像又有大变化了。只要用顺了这个结构,新项目基本上就是缝缝补补,foundation 不用动,business 里的 CRUD 逻辑也是复制粘贴改,app 里的 handler 也差不多
    XTTX
        3
    XTTX  
       2021-11-14 09:17:16 +08:00
    如果说积木的话,我看过几眼的 nest.js 里的各种 decorator 是真的像。一些常见的功能 “@xxxxx”就搞定了
    coderluan
        4
    coderluan  
       2021-11-14 09:28:56 +08:00   ❤️ 10
    乐高其实远比你想的复杂,你弄个大点的套装,然后不看说明试试,编程其实也一样,达到一定规模,都得靠人脑和经验。
    jasonkayzk
        5
    jasonkayzk  
       2021-11-14 09:52:49 +08:00   ❤️ 13
    乐高搭了一万层,这时候产品过来告诉你,第 1 层和第 6666 层要大改;
    watzds
        6
    watzds  
       2021-11-14 10:08:31 +08:00   ❤️ 1
    等这个世界像像乐高积木一样单纯的时候,就能实现
    rpman
        7
    rpman  
       2021-11-14 10:11:29 +08:00   ❤️ 9
    感觉你没拼过难的乐高
    chendy
        8
    chendy  
       2021-11-14 10:23:11 +08:00   ❤️ 1
    简单的乐高比简单的程序简单
    复杂的程序比复杂的乐高简单
    其实道理都差不多,用最基本的单元拼出模块拼出大模块最后装一起
    mmrindextt
        9
    mmrindextt  
       2021-11-14 10:25:45 +08:00
    世界哪有那麽多确定的东西,乐高你就确定能拼出个东西来的
    ChefIsAwesome
        10
    ChefIsAwesome  
       2021-11-14 10:48:05 +08:00   ❤️ 1
    思维混乱,概念不清。作为程序员,你不仅是拼乐高的人,也是设计乐高的人。
    设计乐高比设计程序容易吗?不。
    lrzsw2008
        11
    lrzsw2008  
       2021-11-14 10:54:13 +08:00 via Android
    很多人在家不是不整理,但是要不了几天就会趋于一团
    Kinnice
        12
    Kinnice  
       2021-11-14 10:55:34 +08:00 via Android
    乐高的基础是 数百上千个各项参数确定基本模块
    编程的基础是 数千万个(不止)个性能,参数各异的函数
    makelove
        13
    makelove  
       2021-11-14 10:56:07 +08:00
    需求细节就是这么复杂多变对应的编码能简单得了?除非强人工智能发明出来自动细化需求并实现
    1194129822
        14
    1194129822  
       2021-11-14 11:05:17 +08:00   ❤️ 2
    乐高积木你以为简单?不需要学习?汇编对纸带打孔来说就是拼积木,高级语言对汇编也是拼积木,只是不需要学习所谓低一层的技术。你觉得现在开发软件简单吗?需求在发展,工具也有边际效益。
    cmdOptionKana
        15
    cmdOptionKana  
       2021-11-14 11:21:31 +08:00
    乐高简单的前提是:

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

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

    如果像乐高那样设计固定不变,编程当然可以可视化拖拽完成,现在就可以做到,其实几十年前就能做到。
    msg7086
        16
    msg7086  
       2021-11-14 11:25:56 +08:00   ❤️ 5
    现在不就是像乐高一样了吗,不需要你去写汇编代码,一个 if 语句就代替了一大堆 CPU 指令,这还不乐高吗……
    wolfie
        17
    wolfie  
       2021-11-14 11:35:05 +08:00
    中台系统?
    基础服务想不出与乐高对应。
    kiracyan
        18
    kiracyan  
       2021-11-14 11:36:13 +08:00
    现在的各种组件 中间件已经很像搭乐高了
    ch2
        19
    ch2  
       2021-11-14 11:42:27 +08:00
    编程本来就是乐高,只不过零件实在太多了,乐高也变得难搭了
    xumng123
        20
    xumng123  
       2021-11-14 12:20:43 +08:00 via iPhone
    乐高挺难的,将几盒大规模的乐高混在一起,没有图纸的情况下,拼一个试一试?

    现在编程已经是乐高式的拼装了,关键是要提前设计好怎么拼装
    laoyur
        21
    laoyur  
       2021-11-14 14:08:47 +08:00   ❤️ 17

    乐高小车车
    hdiwhsg
        22
    hdiwhsg  
       2021-11-14 14:16:43 +08:00
    @laoyur 被秀到了
    nicknick
        23
    nicknick  
       2021-11-14 14:56:49 +08:00 via Android
    @jackmod 哈哈,正解。当你觉得你的框架多么爽,多么合理,多么智能的时候,人家明天来一句,能不能把那几个框变成灰色的呀(意思是不可编辑,流程权限)或者后天来一句不好用,还是换回来吧。
    xylxAdai
        24
    xylxAdai  
       2021-11-14 15:03:33 +08:00
    定制化和标准化就是偏离的,你的产品越定制越个人化,越不可能标准化,你的产品越标准化,后面改起来就会越痛苦。
    特别是当一个产品用到了成千上万个标准化模块的时候,这时候对每个模块的需求又不停的变化,实际上我们现在的标准化已经不错了,问题是需求太过于个人。
    marffin
        25
    marffin  
       2021-11-14 16:24:00 +08:00
    所以还是有不少人希望做个简单的 crud boy 的
    pengtdyd
        26
    pengtdyd  
       2021-11-14 17:19:00 +08:00
    搭积木的这种方式是乌托邦,永远只能活在想象中。现实是想要追求最极致的用户体验,永远需要优化优化再优化,优化意味着是某种高度的定制,精心的雕琢每一个细节,没有任何多余的部分,你觉得搭积木能达到这种目标吗。
    wanguorui123
        27
    wanguorui123  
       2021-11-14 19:02:06 +08:00
    前端组件化就是很好的搭积木,后端其实也可以搭积木,但是完全减少模块的耦合,需要研发团队的心志必须非常清晰,不然迟早写成屎山,你能做到代码的低耦合其他人的水平不一定行,最后把你的代码搅合成屎山。
    mengzhuo
        28
    mengzhuo  
       2021-11-14 19:59:49 +08:00
    乐高就有图形编程的,搜索 MINDSTORMS
    但是你用过之后,就会想念各种编程语言……因为图形化很难表达复杂逻辑
    Jooooooooo
        29
    Jooooooooo  
       2021-11-14 20:18:21 +08:00
    工程难度不在于写代码.
    yunyuyuan
        30
    yunyuyuan  
       2021-11-14 20:35:59 +08:00
    @laoyur 这比写代码难:)
    cs419
        31
    cs419  
       2021-11-14 21:45:48 +08:00
    这类东西挺多的啊
    游戏:dota 的地图 我的世界
    css: Tailwind
    淘宝、京东 对商家来说
    各种云服务 不都是么
    ZRS
        32
    ZRS  
       2021-11-14 22:27:15 +08:00
    永远在路上
    timothyye
        33
    timothyye  
       2021-11-14 22:34:19 +08:00
    不是已经有了吗,参考: https://scratch.mit.edu/
    哈哈
    jiayong2793
        34
    jiayong2793  
       2021-11-15 00:12:11 +08:00
    中国企业不会给你时间封装的
    gengchun
        35
    gengchun  
       2021-11-15 04:54:55 +08:00
    大概时间点就是以后你买汽车,车商给你一堆乐高让你拼。拼完直接上牌。

    差不多这个时候吧。
    putin541
        36
    putin541  
       2021-11-15 08:39:01 +08:00
    永远都不可能的。分久必合 合久必分
    Rheinmetal
        37
    Rheinmetal  
       2021-11-15 08:44:48 +08:00
    搭积木想象力不行 类似自动寻路的 copilot 了解一下
    1018ji
        38
    1018ji  
       2021-11-15 09:08:58 +08:00
    你不失业吗
    yinzhili
        39
    yinzhili  
       2021-11-15 09:18:07 +08:00
    个性化需求太多,不可能这样的
    betainCao
        41
    betainCao  
       2021-11-15 10:23:19 +08:00
    我觉得现在的微服务不就是这种模式么?或者说比乐高的模式更加复杂。把每个服务想想为乐高的每个组件,组装起来才能提供一个完整的服务
    standin000
        42
    standin000  
       2021-11-15 17:53:17 +08:00
    一直是乐高积木编程,就是积木太多了点,:D
    fxxkgw
        43
    fxxkgw  
       2021-11-16 16:04:19 +08:00
    我司就有个项目叫乐高 实现你想的功能 支持这个项目的有 1000+容器 可想复杂度了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4944 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 01:12 · PVG 09:12 · LAX 18:12 · JFK 21:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.