做了一个可视化代码编程工具 codesk - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
moonrailgun
V2EX    分享创造

做了一个可视化代码编程工具 codesk

  •  
  •   moonrailgun
    moonrailgun 2022-12-05 10:49:14 +08:00 3171 次点击
    这是一个创建于 1041 天前的主题,其中的信息可能已经有所发展或是发生改变。

    codeck 是一款蓝图可视化编程系统,其理念是,在网页中使用基于节点的界面创建任何编程语言能够编程出的脚本。其设计灵感来源于虚幻 4 引擎的蓝图可视化脚本。

    使用场景

    与一般的编程语言不同的是,codeck 的设计方向在于一些需要快速实现的地方,对于一些简单的编程场景,单独开一个项目的成本会相对较高。而基于网页的 codeck 则实现了随用随编程的理念,将快速验证的成本降低到一个很低的地步。

    使用 codeck, 你甚至不需要了解其背后的细节。我们会将很多内容封装成一个单独的节点,并通过一些 端点(pin) 将这些上下文暴露出来。

    常见问题

    • Q: 可视化编程是不是一个伪需求
    • A: 令人悲伤的是,确实在大部分场景下,特别是专业度要求比较高的场景下(这点在程序员行业中尤为突出),确实是一个伪需求。但是在特定的场合下,比如幼儿教育、非专业人员(比如美术人员)自行编写简单的逻辑快速验证等。当然,以上的两种场景都是有比较成熟的前辈在做了,而 codesk 会把开发重心放在快速制作简单的模板应用上。
    • Q: 怎么理解模板应用
    • A: 模板应用即是那种应用规模比较小,主要功能重复性很高,但是连接方式各种各样的应用。一个比较典型的例子是聊天机器人,从若干个数据源通过机器人应用在转发到另一个应用。像是这样的应用编写成本不高,逻辑简单,但是要单独维护一个项目的话显得过于杀鸡用牛刀。在网页端写serverless就是这样的一种场景,而 codesk 使用可视化编程的方式让他进一步简化了
    • Q: 节点都是非常简单的逻辑操作,使用可视化编程只会比直接写代码更加繁琐与难以维护
    • A: 基本逻辑节点只是为了补全逻辑操作,主要的内容将会由大的代码节点来完成。预期在一般情况下能实现 10 个以内的节点就能实现一个完整的应用。

    Roadmap

    codeck 在未来还会实现以下功能:

    • 发布独立包方便集成到其他应用
    • 插件系统
    • 变量类型定义
    • 模块
    • 函数
    • Nodejs 支持
    • 一键部署到 serverless 平台
    • 低版本兼容自动补全 polyfill

    目前的codesk还处于一个非常初级的地步,底层基本架构已经完善,后续会不断增加更多的节点以满足需求

    10 条回复    2022-12-15 09:22:18 +08:00
    penzi
        1
    penzi  
       2022-12-05 12:24:53 +08:00 via Android   1
    可视化的前提是有一些强力的模块已经封装好了,不懂代码的人只需要拖动一下方块就能把几个模块组合形成一个非常有用的程序。

    譬如一些机器人的编程,你不需要去考虑高低电平,只需要用几个方块告诉机器人怎么做。

    而不是用可视化来把一行代码转换成一个意义不明的大方块,没人有这个需要
    cp19890714
        2
    cp19890714  
       2022-12-05 13:13:34 +08:00
    我最近也遇到了这种业务场景,由业务人员维护少量简单逻辑,来实现快速变化。最后的方案是让他们写 JXEL 。
    事实证明,知识水平和智商正常的业务人员,半小时的简单培训后,就可以用代码写出基本逻辑。
    所以,业务人员只是不懂语言特性而已,但人家是懂逻辑的,人家是有辑思维能力的。
    lm93129
        3
    lm93129  
       2022-12-05 13:32:03 +08:00
    可视化变成目前比较适合在工控和 RPA 里面吧,RPA 现在很多就是拖拽的代码块,然后给代码块一些配置
    moonrailgun
        4
    moonrailgun  
    OP
       2022-12-05 14:41:29 +08:00
    @maggch97 所谓的强力模块也就是若干行代码组合成一个大模块。但是只有大模块是无法直接使用的,因此还是需要一些简单语句进行填充 /链接(你可以想象为 py 明明有很多现成的强大模块为什么还是要写一点代码才能用起来,因为需要一些简单的代码做胶水层)。目前只写了一些简单的代码不代表未来也只有这些,底层框架定下来往上加复杂的代码是非常简单的。

    @cp19890714 是的。基本的逻辑能力基本理科同学和大部分文科同学都是具备的,但是一些简单的功能并不需要让他们学会编程语言(在这点上我是很反对让文职人员学 python 来做报表什么的)

    @lm93129 底层架构实现了上层怎么变都不离其中。可视化编程本质上就是人机交互的一种方式,在 3d 领域也有很多这方面的成熟案例
    1wlinesperday
        5
    1wlinesperday  
       2022-12-05 18:34:33 +08:00
    感觉很像 darklang 有参考吗
    lookStupiToForce
        6
    lookStupiToForce  
       2022-12-06 14:19:58 +08:00
    如果能像一些代码可视化插件一样分析现有代码后能理出一个框架出来就好了(。
    lizhenda
        7
    lizhenda  
       2022-12-06 14:25:30 +08:00
    体验了下,慢好玩的。顺便问下,工作流图表是用的什么组件?
    bmwh123
        8
    bmwh123  
       2022-12-08 15:27:18 +08:00
    @lizhenda 看了下源码感觉是 konva
    op 做的挺好的 也给了我一些启发,确实比较适合给工程人员用,毕竟对于程序员来说代码才是更熟悉的,但是对业务人员来说这样的表现形式更加直观
    moonrailgun
        9
    moonrailgun  
    OP
       2022-12-13 17:54:24 +08:00
    @1wlinesperday 没有,主要参考了 unreal 。他实现的 cpp 的蓝图救我这个不懂 cpp 的小白一条狗命。你说的是这个么? https://darklang.com/

    @lizhenda 基于 konva 自己实现的。

    @lookStupiToForce 分析现有代码可以实现,但是没必要。可视化的大节点有一个很基本的设计目的是简化代码(包括一个节点对应多行命令,抽象操作)。真的一对一的话就过于复杂了

    @bmwh123 有兴趣的话欢迎一起来开发啊?开源项目欢迎贡献者
    lizhenda
        10
    lizhenda  
       2022-12-15 09:22:18 +08:00
    流程图做的比我目前用的 gojs 好 ~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2367 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 01:24 PVG 09:24 LAX 18:24 JFK 21:24
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86