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

我思考创造一种替代掉 CURD boys 来提高质量与效率的系统。请问有类似的系统吗?或这个想法可行吗?

  •  
  •   22yune · 2019-12-29 10:23:00 +08:00 · 8931 次点击
    这是一个创建于 1793 天前的主题,其中的信息可能已经有所发展或是发生改变。

    类似 class 与 jvm 的一种定义模型的规范。想象一下,定义一个 JAVA 对象,用 jvm 解释运行执行业务逻辑,用另一个解释器运行生成前端显示。将这两个解释器合成一个解释器就可以生成前端显示同时能驱动业务逻辑。 class 是一种类比,就像上面想象的形式。如果有一种模型定义规范,将业务的模型定义出来,在上面的前后端一体的解释器下就等于定义了业务系统。 https://www.v2ex.com/t/632780#reply11 请查看我前两天的一个提问,这个问题是一个变形。

    第 1 条附言  ·  2019-12-29 14:19:11 +08:00
    经过讨论过程的思考,暂时没有发现思路上的硬伤。我设想这种语言定义的表达能力开始可能会比较弱,就像自然语言,表达能力是可以慢慢丰富的。所以可能现在更重要的是设计支持好的扩展方式?而不是模型如何抽象定义的其它细节?
    第 2 条附言  ·  2019-12-30 19:15:52 +08:00
    看了 MDA 或者 Model Driven Development、Model-Driven Engineering 这些概念的介绍。我的目标与这些概念是一样的。这些具体发展怎么样还在了解,看能不能弄清楚。MDA 里的 MOF 概念还没看明白(不知道如何做到元元模型描述自身),有知道的吗?
    第 3 条附言  ·  2019-12-31 09:58:45 +08:00
    新思路,可能是个进展。
    先说明对现有系统的了解认识:
    MPS 开始粗浅了解(看首页)是一种元语言编程系统、可以编写领域特定语言,看到这些关键字我以为面向的问题是相关的,现在感觉没太大相关性。我和 MDA 的目标一致的。MDA 的核心规范是:UML、MOF、XMI、CWM。对模型的描述就是 UML 那一套,我感觉整个体系思路是面向编程语言的那一套,各种概念都对应到编程语言的概念了。

    现在说明我对业务模型描述的思路:
    我想把业务系统抽象成‘参与者’和‘事件’两个概念。‘参与者‘’与现在一般说的业务模型类似,或者说对象。参与者和对象一样有属性和方法。‘事件’对应现实世界的业务事件,事件由参与者组成,事件能以某种方式组合成大事件(还是事件)。‘参与者’和‘事件’内部本身体现出一些形式,如‘事件’内部可能由一些‘事件节点’组成,节点之前有没有顺序关系及具体的顺序。所有我打算先抽象出‘参与者’和‘事件’内部的基本组成要素,同时思考这些基本组成要素的组合方式——这些是业务模型通用定义语言的基础。现在还有些疑问:‘参与者’和‘事件’能完整描述业务模型吗?

    上面的思路是面向模型的。特别是‘事件’概念,它描述且只描述业务模型,不涉及编程的概念,不对实现做限制。我觉得算是一个进展。给大家汇报下,希望大家发表评论。
    89 条回复    2019-12-31 09:45:22 +08:00
    snowydec
        1
    snowydec  
       2019-12-29 10:31:51 +08:00
    spring data jpa
    lhx2008
        2
    lhx2008  
       2019-12-29 10:40:25 +08:00 via Android
    有 SAAS 层面的,像 ps 一样拖拖东西也能做网站。还有就是之前 v2 有个老哥一直在吹的 json 到 mysql 的框架。
    其实问题主要是 curd 不是真的 curd,需求很多是细化的东西
    wysnylc
        3
    wysnylc  
       2019-12-29 10:43:00 +08:00   ❤️ 1
    curd 是解析产品业务后的基本实现,所有开发的痛点是实现业务而不是单纯的 curd,不要本末倒置
    22yune
        4
    22yune  
    OP
       2019-12-29 10:43:58 +08:00
    @snowydec 我想问的核心是业务模型的抽象方法,抽象出模型后,前后端是没有限制的,不一定是基于数据库的持久化。
    vultr
        5
    vultr  
       2019-12-29 10:44:34 +08:00
    工具可以简化 CURD boys 的工作,但是代掉 CURD boys,应该是行不通的。

    CURD boys 还是很重要的,他们决定了细节。
    22yune
        6
    22yune  
    OP
       2019-12-29 10:48:34 +08:00
    @lhx2008
    @wysnylc
    我想问的核心是业务模型的抽象方法。模型不是单纯的 curd,还有业务逻辑(模型之前互动关系?)我就是想解析出产品业务,描述出业务模型,产品就实现了。不需要 curd 重复再做一遍。
    22yune
        7
    22yune  
    OP
       2019-12-29 10:50:28 +08:00
    @vultr
    我是希望能细节形式标准化,同一种形式的细节不用为这个业务实现一遍,为另一个又重复实现。
    22yune
        8
    22yune  
    OP
       2019-12-29 10:51:47 +08:00
    @22yune 就像是主题一样 细节可以改 但标准的或者说 典型的能默认适配。
    gowk
        9
    gowk  
       2019-12-29 10:53:18 +08:00 via Android
    低代码开发平台?
    loading
        10
    loading  
       2019-12-29 10:56:28 +08:00 via Android
    你可能是忽略了后端安全的部分问题,我觉得 orm 已经很好地简化了 crud。
    3dwelcome
        11
    3dwelcome  
       2019-12-29 11:01:19 +08:00 via Android
    @22yune 业务逻辑如果是可批量复制的,那么 curd boy 自己都能抽象出来一套快速开发流程。
    可惜,外包多了,你就会发现客户需求千奇百怪。并不是查询数据显示数据那么简单。
    有外包公司人统计过,只有 50%的前端页面是可批量抽象的,剩下一半还是需要人海战术。
    hantsy
        12
    hantsy  
       2019-12-29 11:01:41 +08:00   ❤️ 1
    大部分业务系统不止是 CRUD 那么简单。

    这个以前建模为基础的开发方式,十几前的确很流行,比如 MDA 架构等,有太多的工具可以做这些事,比如 IBM,Borland 等都提供这方面的可视工具。但现在几乎这些大厂都放弃这些产品。

    自从我放弃建模工具(比如 Rational,Together,Powerbuilder 等)后,我对这些 MDA 不再有兴趣,它们根本带不来开发效率,生成一堆垃圾代码,看似节约了时间,后期要在生成的代码上加上自己的逻辑就有吃屎的感觉,如果要清理那些垃圾代码需要大量时间。

    目前基于 Spring 代码生成器还有一个比较流行,Jhipster,可以用来快速的建产品原型。真正长期的产品开发,还是慎用吧。
    676529483
        13
    676529483  
       2019-12-29 11:04:33 +08:00
    控制逻辑好复制,像 admin、各种静态生成器、被喷的 apijson,都在做这个层面的事情;还有一个目前不好取代的是,业务逻辑,这个可能需要像耗子哥说的那种更加高级的语言,简单操作就能生成代码的来做了
    vanillaxxx
        14
    vanillaxxx  
       2019-12-29 11:05:10 +08:00 via iPhone
    感觉业务模型千变万化这个得先抽象出来才能搞一个这样的东西吧……然而现实中几乎做不到
    22yune
        15
    22yune  
    OP
       2019-12-29 11:12:44 +08:00
    @loading 安全可能是个问题。但现阶段还在思考可行性,安全性还未做考虑。我觉得这个场景下安全性对可行性不会造成阻碍。
    cedoo22
        16
    cedoo22  
       2019-12-29 11:12:53 +08:00
    参考 lombok, 能够根据注释, 自定义添加生成你要的 crud 的 java class 文件。
    比如,lombok 中:
    @Data 可以把 public class User{private String name,private Integer age;} 自动转换成包含 getter setter toString()的 POJO 类的 class 文件。
    具体到项目中, 就需要你自定义一套实用于自己项目的 lombok 了。
    Java 6 开始,支持 JSR 269: Pluggable Annotation Processing API ( https://www.jcp.org/en/jsr/detail?id=269)
    这个 JSR 可以支持编译过程中,修改抽象语法树,进而修改最终生成的 class。
    22yune
        17
    22yune  
    OP
       2019-12-29 11:15:45 +08:00
    @3dwelcome 额。。感谢回复!但我觉得你说的话 好像某种模式----那种没有实际内容的
    chenshun00
        18
    chenshun00  
       2019-12-29 11:17:27 +08:00
    数据流引擎,这种已经出现了 ,flowable , 但是这个只是一个引擎,如果你需要给用户使用还是需要做一些改造的,如果仅仅是 curd,其实很简单,用户建表,用户输入数据,用户查数据,改数据,只要实现这个就可以了,但是你要加入业务的规则就相对麻烦了。
    tt67wq
        19
    tt67wq  
       2019-12-29 11:19:23 +08:00
    CURD boys 想打死你!
    WildCat
        20
    WildCat  
       2019-12-29 11:27:49 +08:00   ❤️ 1
    Rails Scaffold

    https://guides.rubyonrails.org/v3.2/getting_started.html#getting-up-and-running-quickly-with-scaffolding

    同样的框架上面诞生了 Basecamp, GitHub, Airbnb, Twitter, Product Hunt...
    hantsy
        21
    hantsy  
       2019-12-29 11:34:44 +08:00
    我想起以前一个 Spring 子项目,Spring Roo,超强的代码生成器,后来 Spring 官方放弃了,有第三方接手,不过现在看来也是没有什么进度。
    https://github.com/hantsy/spring-sandbox/blob/master/roo/log.roo

    另外 JBoss 下也有一个类似的工具,Forge,现在关注的人也不多。
    hantsy
        22
    hantsy  
       2019-12-29 11:38:17 +08:00
    @WildCat Rails 影响了太多的软件工具,Spring Roo,JBoss Forge 本身可以说是克隆。 这类工具,对于早期的产品原型构建可能有一定的作用。现在的 Twitter,Github,Airbnb 等,我相信和这个 Scaffold 工具没一毛钱的关系。
    leishi1313
        23
    leishi1313  
       2019-12-29 11:46:03 +08:00 via Android   ❤️ 1
    计算机也开始有民科了?
    22yune
        24
    22yune  
    OP
       2019-12-29 11:52:29 +08:00
    @hantsy 感谢回复!我的想法与 mda 非常类似,甚至可以说一样--模型驱动。我粗略看了一下,mda 的模型与我设想的不太一样,我想的模型包括业务逻辑,逻辑基于模型之间的关系,与显示相关的也应该是模型内部的形式。
    就像指令集基于几种类型的指令就可以完全表达各种各样的程序过程,我思考有没有可能基于模型表达业务逻辑的类似指令集(不一定是指令,可能是一种声明,指令我觉得有一种过程性的动作含义),如果能建立,那模型表达应该会是明确的清晰的。如果业务逻辑不是基于模型的,或者定义规则复杂难明的,我理解会出现你说的生成代码形式的问题。
    FeifeiJin
        25
    FeifeiJin  
       2019-12-29 11:55:40 +08:00 via Android
    很多的,比如现在流行的 low code 平台。
    氚云,简道云,airtable 等。
    把 curd 和通用业务逻辑封装后,普通业务员拖拽实现需求。
    22yune
        26
    22yune  
    OP
       2019-12-29 11:57:51 +08:00
    @676529483 是的 我也感觉最大的难点可能就在于基于模型的业务逻辑表达抽象。
    22yune
        27
    22yune  
    OP
       2019-12-29 12:05:23 +08:00
    @cedoo22 感谢回复!你说的 lombok 和 jsr 我接触过(不喜欢 lombok )。我想的是一个 class 经过 jvm 能解释成前台显示也能驱动里面的方法。或者经过不同的 jvm,有些解释成某种的前端显示,有些是另一种前端显示,有些是某种后端技术(包括持久化支持),有些是另一种后端技术。
    22yune
        28
    22yune  
    OP
       2019-12-29 12:20:28 +08:00
    @WildCat 感谢回复!看了一点,虽然 model 中有基础的 curd,但感觉跟其它语言的框架(上面有些回复说的)思想或方法类似。
    cedoo22
        29
    cedoo22  
       2019-12-29 12:23:36 +08:00
    @22yune jvm 生成前端,这个要自定义 jvm 吧。 目前,我是用 freemarker 根据数据库表 自动生成的前端页面。
    wangkun025
        30
    wangkun025  
       2019-12-29 12:26:46 +08:00
    砸场子啊。
    无脑回复:不可行。
    cedoo22
        31
    cedoo22  
       2019-12-29 12:28:28 +08:00
    @22yune class 经过 JVM ,这不就是 servlet 吗?只不过 controller 加个 判断, 是产生 servlet 还是或者是交给 处理类。
    alvinbone88
        32
    alvinbone88  
       2019-12-29 12:39:52 +08:00 via Android
    GWT?这东西早就被 Google 放弃了
    otakustay
        33
    otakustay  
       2019-12-29 12:40:24 +08:00
    wordpress ?
    22yune
        34
    22yune  
    OP
       2019-12-29 12:41:10 +08:00
    @cedoo22 感谢回复!
    你说的是我类比中表达的意思。
    只是这么做是行不通的,因为用 JAVA 写的还是面向对象或面向过程的思维方式。我想的业务模型定义更多可能是声明式定义(也有面向模型的过程)。这样写出来的 JAVA 代码是没办法反向出业务模型的。就算能反向也不行,这个模式转换太复杂。我想的是基于业务模型的定义即用于显示也用于驱动业务逻辑,就像你说的 servlet 一样。我想要的是通用的,servlet 不是通用的。
    qinglizi4869
        35
    qinglizi4869  
       2019-12-29 12:52:02 +08:00
    crud boy 做错了什么,就要丢饭碗 o(╥﹏╥)o
    22yune
        36
    22yune  
    OP
       2019-12-29 12:53:16 +08:00
    @FeifeiJin
    @gowk
    是的 基于这种平台的启发,想更进一步的方法。我在形式上看到了可能,简单情况可能就是这种平台的通用版。我在思考一种可扩展、通用规范的实现方案。
    wolfie
        37
    wolfie  
       2019-12-29 12:53:41 +08:00
    非开发人员鼠标点点拖拖配置的 CRUD 功能,还能集成流程还有表关联,市面上很多这种平台,通病就是性能极差。
    cedoo22
        38
    cedoo22  
       2019-12-29 13:00:45 +08:00
    @22yune 这种需求 , 确实无法做成通用的 , 只能是项目内部定制化, 细化一下、做成工具包。
    如果是实现功能,更多的还是通过生成 代码,而不是生成 ‘处理器’。
    takemeh
        39
    takemeh  
       2019-12-29 13:07:11 +08:00
    @qinglizi4869 #35 把他们解救出来从事更有意义的事
    22yune
        40
    22yune  
    OP
       2019-12-29 13:14:04 +08:00
    @cedoo22 最终应该还是不同技术的代码,'处理器'是另一个层面的解释器或者说可能是代码生成器,处理器支持的语义多一点,模型定义就更丰富一点。抽象出形式,使形式能复用。处理器就能解释成各种具体技术实现。
    lihongjie0209
        41
    lihongjie0209  
       2019-12-29 13:36:11 +08:00
    先不说代码生成, 你确定你可以把你的需求文档翻译为你所谓的 ‘模型‘ 吗?

    需求 > 需求文档 > 编码
    客户 > 产品经理 > 程序员

    我们把编码这一环节的参与者叫程序员, 你的模型也是一种编码形式, 所以参与者也是程序员, 只是换了一个叫法而已。
    MeteorCat
        42
    MeteorCat  
       2019-12-29 13:36:58 +08:00 via Android
    业务简单没什么,但是你要解决的是运营提出的奇奇怪怪需求
    22yune
        43
    22yune  
    OP
       2019-12-29 13:47:19 +08:00
    @lihongjie0209 业务系统里有业务模型这个应该是自明的。我主要的问题就是把这个模型表达抽象出来,能抽象出来就能'翻译',否则就是没抽象出来。所以你的问题就是我的问题,不要反问我了。
    你说的叫法倒是无所谓,他们的工作内容应该会是不一样了。从主要编码变成主要描述业务模型。
    22yune
        44
    22yune  
    OP
       2019-12-29 13:58:11 +08:00
    @lihongjie0209 重要的是不再像现在这样重复,bug 不用重复改,特性不用重复实现。每种技术实现一遍就够了。就像
    @takemeh #39 说的,做更有意义的工作,不重复、发挥创造力。
    xiexiping
        45
    xiexiping  
       2019-12-29 14:12:55 +08:00 via Android   ❤️ 1
    程序员总在想办法减少自己的工作岗位
    wanqiangcrack
        46
    wanqiangcrack  
       2019-12-29 14:16:36 +08:00
    CURD 只是一种针对存储系统的操作,核心的业务逻辑用 AI 是替代不了的。
    luozic
        47
    luozic  
       2019-12-29 14:18:25 +08:00
    手擼 DSL? 設計出來就是爲了這個的,我暫時就知道:jetbrains 的 MPS,基於 scheme 的 Racket ?
    CODEWEA
        48
    CODEWEA  
       2019-12-29 14:20:24 +08:00
    你想的太简单了,一句话:你如何用一个公共模型实现一个业务抽象后的模型?,你肯定还得对公共模型进行各种描述,到最后成本还不如直接实现一个业务模型
    22yune
        49
    22yune  
    OP
       2019-12-29 14:28:43 +08:00
    @CODEWEA 感谢回复!
    你说的可能是对的,你问的就是我的问题。业务模型的抽象我想大家都是没问题的,我是想更进一步对模型的描述的抽象。就用 JAVA 对象表示的模型的描述的抽象就两种:属性、方法。越抽象应该形式会越少。换个问法:模型的描述都有那些形式?
    luozic
        50
    luozic  
       2019-12-29 14:43:52 +08:00
    @22yune @CODEWEA 實際模型還會遷移,會變化,這部分用 MDA 生成代碼咋玩,直接不復用,每次用新生成的代碼?
    Mogamigawa
        51
    Mogamigawa  
       2019-12-29 14:48:48 +08:00
    恶魔!!!!!!!!!!!!!
    reself
        52
    reself  
       2019-12-29 15:19:01 +08:00
    所有妄图寻找银弹的尝试注定失败
    FeifeiJin
        53
    FeifeiJin  
       2019-12-29 15:37:54 +08:00 via Android
    @22yune 这种平台再往前进化的一个方向就是,可写代码的 paas 就是。
    22yune
        54
    22yune  
    OP
       2019-12-29 15:43:01 +08:00
    @reself '银弹'只是像现在这样听说过,我不知道这个想法是不是银弹,我更希望是像现在的包管理和构建工具一样是一种好的实践。用美妙的想法将现有的东西结合成整体的创造。
    howell5
        55
    howell5  
       2019-12-29 16:43:32 +08:00 via iPhone
    先规模化 graphql 也不迟
    wangxiaoaer
        56
    wangxiaoaer  
       2019-12-29 16:56:28 +08:00
    单个表的 curd 不是已经有库在做了吗?关键是根据业务对需要的表关联起来,可能还涉及到权限控制,这才是精髓,感觉很不好抽象出通用的。
    GeruzoniAnsasu
        57
    GeruzoniAnsasu  
       2019-12-29 16:58:04 +08:00 via Android
    您要找的是不是:




    .net framework
    winglight2016
        58
    winglight2016  
       2019-12-29 17:58:35 +08:00   ❤️ 1
    十多年前我曾经跟进过一个基于 UML 定义业务对象的开源框架:www.openmdx.org 可以参考一下
    947211232
        59
    947211232  
       2019-12-29 18:09:34 +08:00
    可行,只要你的系统能自己能完成项目需求的结构
    mmdsun
        60
    mmdsun  
       2019-12-30 08:46:08 +08:00 via Android
    微软的 webform ?各种拖控件事件绑定
    flashrick
        61
    flashrick  
       2019-12-30 08:55:16 +08:00
    别的工程都是建立壁垒,只有软件工程:“如果我不会编程,我该怎么编程”
    aaronysj
        62
    aaronysj  
       2019-12-30 09:08:27 +08:00
    mybatis plus
    TomVista
        63
    TomVista  
       2019-12-30 09:11:24 +08:00   ❤️ 1
    prisma,hasura 这俩库...
    LeeSeoung
        64
    LeeSeoung  
       2019-12-30 10:01:19 +08:00
    难的从来都不是 CRUD,而是把需求转成可以落地的实现方案。
    rocksolid
        65
    rocksolid  
       2019-12-30 10:09:14 +08:00
    一直有人做这个,但是 crud 人人都会,这种不仅增加学习成本,对于复杂业务逻辑也是难于普通 crud
    22yune
        66
    22yune  
    OP
       2019-12-30 10:11:00 +08:00
    @luozic 感谢回复!
    模型变化是常规场景。如果对模型定义的规范抽象出来了,对模型的定义肯定在这个范围内,变化也是定义过程。‘解释器’ 如果是通过生成代码再通过代码对应的解释器运行的话,代码要再生成一遍,就像 java 写的类修改后要重新编译一样。
    mauve
        67
    mauve  
       2019-12-30 10:25:32 +08:00
    不写 Java,不太懂楼主写的
    但说到不用 CRUD,我有一个发现:
    JAM Stack

    ### A modern architecture —
    Create fast and secure sites and dynamic apps with JavaScript, APIs, and prerendered Markup, served without web servers.

    Headless CMS 配合 Static Site Generator ( SSG,eg:Hugo Gatsby Nuxt.js Next.js Hexo …… )
    使用 SSG 生成静态页面,使用 CDN 分发,然后配合 Headless CMS 进行 CRUD 及权限验证,国外已经非常多,但国内几乎没有
    随之衍生的有 Headless E-commerce
    国内的很少很少,我知道就只有一个 nike 官网 https://www.nike.com/cn/

    Keyword:JAM Stack,Headless CMS,SSG
    noreplay
        68
    noreplay  
       2019-12-30 10:28:20 +08:00
    labView?
    stormgo
        69
    stormgo  
       2019-12-30 10:34:06 +08:00
    不知道你有没有用过 python 的 Django 框架,他的 admin 界面就是你定义一个 model 生成对应的前端界面已经后端自动增删查改,但是用的多你会发现用户要的不是一个功能强大的增删查改,耳塞基于这个数据模型下的各种实际业务开发,所以我觉得你的想法是好的,但是用户要的远远不是单一的 CRUD 能够解决的,而是切合实际业务开发的各种组合
    neilq
        70
    neilq  
       2019-12-30 10:57:41 +08:00
    如果有这种模型,那么定义模型就替代了编写 crud,model boy 替代了 crud boy,只不过是 crud boy 换了个语言
    22yune
        71
    22yune  
    OP
       2019-12-30 11:19:50 +08:00
    @stormgo
    部分 v2er 好像有些误解。我们现在是用业务模型描述业务。我思考的是‘一种模型定义规范‘,用于描述业务模型的,不是描述业务的。需求的是抽象描述业务模型的语义。你说的情况就是现在大部分的情况——定义一个数据模型,真正的业务逻辑用各种其他语言实现的(如 java、Python )。我希望设计一种通用的业务模型定义的规范(或语言)(带业务逻辑的)。基于这个规范定义的业务模型,就可以用不同的前端、后端技术去解释模型。绝大部分的情况基于规范就可以有默认的解释,应该要支持调整。现在的语言,语义都是确定的。这个业务模型定义语言我希望是抽象的形式(比如包含、主从),可以用多重语义(现在是前端显示与后端逻辑)。 看了上面回复列出的各种已有产品(都是同一种意图,可能真是在寻找银弹)不太成功的现状。我有点怀疑这种定义业务模型的语言是否能抽象出来或抽象出来是否有意义(支持简单情况的抽象是可以的,支持上面说的低代码开发平台 通用化)。
    MPS 还在了解,感觉对这个问题有帮助。
    xuyang2
        72
    xuyang2  
       2019-12-30 11:55:53 +08:00
    MuleSoft 了解一下
    hantsy
        73
    hantsy  
       2019-12-30 12:06:54 +08:00
    Jetbrains MPS 感觉是语言语法分析的吧,这类工具很多,JavaCC,ANTLR(Hibernate 的 HQL 是这个分析的,以前看过一部分源代码 ,现在好久没关注了,不知道有没有换)。

    我个人以前试过 JavaCC,以前对 NetBeans 插件开发感兴趣,NetBeans 语法分析支持 JavaCC 和 ANTLR,写插件如果要加入新语言的时候首先就是分析语法。不过现在好久没关注这些了。

    以上这些都是静态分析,现在 Eclipse 的 Language server protocol 好像都是支持运行时分析,不知道怎么回事,VSCode 中有些插件是 Java 语法支持也是用这个。
    hantsy
        74
    hantsy  
       2019-12-30 12:10:41 +08:00
    说到 MPS 我想到很多 IDL 语法工具。可以用一种中间语法即 IDL, 生成各种编译语言模型( java, js, c 等)。
    luozic
        75
    luozic  
       2019-12-30 12:21:40 +08:00 via iPhone
    软件工程要考虑已有部署运维版本的维护问题:已经部署的版本咋更新升级? 或者怎么从新版本降级到老版本,不是重新编译那么简单的事情。 并且现在大部分低代码生成都是 cms,或者都是为了中小规模实践,实际更好的描述是基于数据库编程 or 基于 sql 编程。
    hantsy
        76
    hantsy  
       2019-12-30 12:27:08 +08:00
    @luozic 基于数据库 SQL 编程才是悲剧。
    luozic
        77
    luozic  
       2019-12-30 12:33:52 +08:00
    @hantsy 我説的就是現在很多搞生成代碼的就是基於 sql 編程。
    zifangsky
        78
    zifangsky  
       2019-12-30 12:47:19 +08:00
    我看懂了,其实楼主思考的是如何创造强人工智能,可以根据我们人类给出的需求文档自动写代码那种
    stevenkang
        79
    stevenkang  
       2019-12-30 13:56:41 +08:00
    @zifangsky 听君一席话 胜读十年书啊!以前包括现在都有这种想法,做一个系统出来不用 CURD,但需求是人出的,要理解需求实现的功能,还是得人来实现,机器不可能完成了。
    encro
        80
    encro  
       2019-12-30 14:05:00 +08:00
    关键字:低代码,serverless,Fass,Bass。
    参考:appwrite,Apigee,firebase,Parse,strapi 等等。。
    encro
        81
    encro  
       2019-12-30 14:16:48 +08:00
    业务估计目前还没有办法理解吧,
    所以目前我建议可以考虑半自动:ui hub + biz hub + func hub + db hub,
    解析起来就是准备基于行业的四个仓库:UI 库,业务配置库,基于 fass 的函数配置库,数据库。

    也就是说要搭建一个 app,就是选选行业,选界面,选数据库,选好后配置一些规则。
    PopRain
        82
    PopRain  
       2019-12-30 15:16:07 +08:00
    没有银弹, 做下去,你就发现你做了一个 Winform,Webform , 功能还没有人家强大 。。。。 简单的事情可以应付、需求一复杂就完蛋。

    通用部分做成模块化可能是个比较可行的方案
    hantsy
        83
    hantsy  
       2019-12-30 15:33:36 +08:00
    @zifangsky
    昨天刚看完了美剧 [硅谷] ,最后一季跟上现在潮流,PiperNet 用上了 AI 和去中心化网络设计,放开了 AI 权限后,用 AI Bot 去优化压缩算法,一切想得很完美,结果因为 Monica 收到的一条信息少了一点(.),重新去思考整个网络架构,算法,发现了依赖 AI 的严重问题,不得不放弃整个项目,整剧完。
    mymike
        84
    mymike  
       2019-12-30 15:36:20 +08:00
    iaas paas saas
    hantsy
        85
    hantsy  
       2019-12-30 15:38:23 +08:00
    @luozic 我差不多快 10 年没写 SQL,如果现在要用 MySQL CLI 之类的 Client 命令行都要查资料。
    再说现在的项目,很多 RDBMS 也不再是唯一,有些不用,或者混用的项目很多。
    luozic
        86
    luozic  
       2019-12-30 16:12:34 +08:00
    @hantsy 剛剛的表達有錯誤,實際我想説的是一切以 database 爲中心編程,即使你沒有實際手寫 sql,或者 blabla,或者用 nosql 什麽的替代,最終你的 orm 還是其他的東西還是會自動去生成 database 裏面的模型,后面所做的一切基本都是以 databse 中的數據模型來去做進一步的功能。 所以,問題回到一件事情,是不是所有的功能都需要持久化,持久化是不是一定要使用數據庫,是不是一定要使用關係數據庫模型。
    svaj
        87
    svaj  
       2019-12-30 16:19:13 +08:00
    如果用 php 的话,有款框架叫 fastadmin curd 你建好表就可以直接生成想要的元素,都搞定了
    openthinks
        88
    openthinks  
       2019-12-31 09:13:43 +08:00
    @luozic Oracle APEX 平台就是直接基于数据库,使用 SQL 查询及控制数据
    joooooker21
        89
    joooooker21  
       2019-12-31 09:45:22 +08:00
    实现的前提应该是业务场景比较固定
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2928 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 14:59 · PVG 22:59 · LAX 06:59 · JFK 09:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.