图形化编程要怎么做

0. 简介

Scratch其实应该算得上最早做图形化编程的工程了。Scratch 是麻省理工学院的“终身幼儿园团队”在 2007 年 [5]发布的一种图形化编程工具,主要面对全球青少年开放,是图形化编程工具当中最广为人知的一种,所有人都可以在软件中创作自己的程序。而我们就在想是否能做一些工作,让一些复杂的指令集能够通过拖动变成可以被识别的功能呢。我其实在上大学时候就想做类似这样的一个东西。只是一直没有时间,这里作者首先发现了js君对于Scratch3.0的介绍和使用,也首先了解到如何对Scratch完成自定义组件的设计与编写。这部分主要的核心就在于JS代码的编写。又比如PythonEditor,这一个就可以用于python编程相关的操作。以及OpenBlock是开放原子基金会运营可以对各种开发板二次开发的系统。
在这里插入图片描述

1. 逻辑编排实现方式的选择

一直以来。从流程图层面,以线性的思维去思考,认为逻辑编排的意义并不大。因为,经过这么多年发展,事实证明代码才是表达逻辑的最佳方式,没有之一。用流程图去表达代码,最终只能是老板、客户的丰满理想与程序员骨感现实的对决。

直到看到Mybricks项目交互部分的实现方式,才打开了思路。类似unreal蓝图数据流驱动的实现方式,其实大有可为。

这种方式的意义是,跳出循环、if等这些底层的代码细节,以数据流转的方式思考业务逻辑,从而把业务逻辑抽象为可复用的组件,每个组件对数据进行相应处理或者根据数据执行相应动作,从而达到复用业务逻辑的目的。并且,节点的粒度可大可小,非常灵活。

具体实现方式是,把每个逻辑组件看成一个黑盒,通过入端口流入数据,出端口流出变换后的数据:
在这里插入图片描述
如果用流程图,上面这个编排,会被显示成如下样子:
在这里插入图片描述
两个比较,就会发现,流程图的思考方式,会把人引入条件细节,其实就是试图用不擅长代码的图形来描述代码。是纯线性的,没有回调,也就无法实现类似js promise的异步。

而数据流驱动的逻辑编排,可以把人从细节中解放出来,用模块化的思考方式去设计业务逻辑,更方便把业务逻辑拆成一个个可复用的单元。

如果以程序员的角度来比喻,流程图相当于一段代码脚本,是面向过程的;数据流驱动的逻辑编排像是几个类交互完成一个功能,更有点面向对象的感觉。

朋友,如果是让你选,你喜欢哪种方式?欢迎留言讨论。

另外还有一种类似stratch的实现方式:
在这里插入图片描述
感觉这种纯粹为了可视化而可视化,只适合小孩子做玩具。会写代码的人不愿意用,太低效了。不会写代码的人,需要理解代码才会用。适合场景是用直观的方式介绍什么是代码逻辑,就是说只适合相对比较低智力水平的编程教学,比如幼儿园、小学等。商业应用,就免了。

2. 低代码拖拽

对于低代码的拖拽场景无非就是考虑几点,一个是基础的拖拽功能,另外一个就是容器内组件的互相拖拽和嵌套拖拽。基于这些场景分析个人还是比较推荐使用 dnd-kit/core 它来做为拖拽引擎的实现选型的,除了基础的拖拽的功能外,dnd-kit 还提供了许多可自定义的组件和钩子,可以满足不同的拖拽需求,在 React、Vue、Angular、Svelte 等热门的开发框架 & 库下都有对应的实现,对跨平台的支持也非常不错。

除此之外 dnd-kit 的性能也有相当程度的保障,尤其是在 DOM元素 过多的时候能有效减缓操作卡顿和布局抖动。
在这里插入图片描述

3. 低代码分析

编辑器画布的布局分为容器布局和组件两侧。这种布局方式将任务划分为两个主要部分,使得容器布局负责行列的编排,而组件负责内容的显示,实现了各司其职的效果。

在编辑器画布中,容器布局负责定义和管理行和列的结构。它可以提供灵活的网格系统,使用户能够自由地定义和调整页面的布局。用户可以在容器布局中添加、删除或调整行列的大小和位置,从而实现对页面的整体布局进行控制。容器布局可以使用拖放功能,方便用户将组件放置到指定的位置。

而组件则负责呈现具体的内容。它可以是各种类型的UI元素,如文本框、按钮、图像等。用户可以通过在组件库中选择不同类型的组件,并将其拖放到容器布局中的指定位置来创建页面内容。组件可以具有自定义的样式和属性,用户可以对其进行修改和定制,以满足具体的设计需求。

通过将容器布局和组件分开管理,编辑器画布实现了更高的灵活性和可扩展性。用户可以随时修改容器布局,调整页面的结构,而不会影响组件的内容。同时,用户可以对组件进行独立的操作,修改其样式或属性,而不需要关注整体布局的细节。这种分离的设计使得编辑器画布更加易用和便捷,适用于不同类型和规模的项目。

4. 相关开源项目

4.1 flow-eda

flow-eda 项目是一种基于事件驱动的流式低代码编程应用程序,它的主要功能是采用可视化编程,以拖拽节点、连接组合节点的形式来完成流程绘制,达到低代码开发和实现业务编程的目的。

应用场景
  • 自动化流程业务处理,例如需要处理某个数据,可以用拖拽节点定义这些流程,反复使用。
  • 支持多线程并发处理,任意组合、编排,可组合与或非等各种复杂的逻辑流程,支持阻塞、等待、周期性执行等。
  • 网络爬虫,例如需要爬取网络上的一些特定信息,然后加以处理,支持输出展示、存储到数据库或者发送邮件。
  • 定时任务,可以定时执行一些业务,周期性执行,可以指定次数或者不限制,支持 cron 表达式等。
  • 基础的增删改查业务模型,可支持自定义 HTTP 接口,支持 websocket、MQTT 等协议,支持常用的数据库操作。
  • 业务执行流程可视化,在流程运行时,可以在 web 页面上实时看到执行状态可执行信息,包括输入输出参数等。
    在这里插入图片描述

…详情请参照古月居

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/548009.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大模型赋能:爬虫技术的全新革命

大模型加持下的爬虫技术革新:从BS4到提示工程的飞跃 在爬虫技术的演进历程中,内容解析一直是一个核心环节。传统的爬虫技术,如使用BeautifulSoup(BS4)等工具,需要逐个解析网页内容,通过XPath或C…

【NPS】内网穿透工具之 NPS

一、linux 安装 nps nps-releases:https://github.com/ehang-io/nps/releases 1.1、在 ubuntu下安装对应版本(非docker) 可以看到如下指令 wget https://ghproxy.com/https://github.com/ehang-io/nps/releases/download/v0.26.10/linux…

网络安全-自学笔记

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员(以编程为基础的学习)再开始学习 我在之前的回答中,我都一再强调不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,而…

weblogic JSP action的配置

action(如xxx.do)可以在Java文件中通过注解的方式配置,也可以在web.xml中进行配置 在java文件中配置的场合 @WebServlet(xxxx.do) 并实现支持的方法:doGet或doPost等 或者 @WebServlet(xxxx.do) 并实现service方法 所有method的处理方法都会先经过service方法 在web.x…

【24年物联网华为杯】赛题分析与初步计划

赛事介绍 官网链接:2024 年全国大学生物联网设计竞赛 (sjtu.edu.cn) 含金量:属于A类赛事 (注意:很多搜索结果的序号是按照选入时间排列的,与含金量无关,华为杯是23年选入的) Kimi Chat: 全国…

经历分享:我是如何出版了人生的第一本书的,成体系化的神级Golang进阶笔记,

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞…

轻松上手MYSQL:MYSQL初识(下)

​🌈 个人主页:danci_ 🔥 系列专栏:《MYSQL入门》 💪🏻 制定明确可量化的目标,坚持默默的做事。 轻松上手MYSQL:从零开始构建你的数据库世界 🚀 🚀欢迎来到My…

Qt nodeeditor ROI 组态软件

节点显示节点连接属性设置插件导入导出 展示:

【小贴士|Unity】华佗热更版本控制配置

现在越来越多的新项目选择使用HybridCLR,而不是以前的Lua。也不妨有的项目会配置打包机器人以及版本控制,但是这个版本控制的配置还真需要注意一些。(因为我就踩坑了) 如图所示,当你第一次执行HybridCLR/Generate/All后…

监控平台zabbix的认识与搭建

一. 监控系统的相关知识 1. 监控系统运用的原因 当我们需要实时关注与其相关的各项指标是否正常,往往存在着很多的服务器、网络设备等硬件资源,如果我们想要能够更加方便的、集中的监控他们,zabbix 可以实现集中监控管理的应用程序。 监控的…

基于51单片机的秒表设计—0.01精度、有提示音

基于51单片机的秒表设计 (仿真+程序+原理图+设计报告) 功能介绍 具体功能: 1.数码管显示,精度为0.01; 2.按键控制启动/停止,暂停/开始; 3.有一秒钟一次提示…

金三银四面试题(二十):单例模式知多少?

设计模式也是面试中的热门考题,基本这个部分都是问问你知不知道XXX设计模式,有什么用,优缺点,然后再现场手写一个demo。很多时候是和spring一起考的,问问你知不知道spring框架用了哪些设计模式。今天我们来先看看单例模…

信息系统项目管理师——成本管理计算专题(一)

常见考点如下: ①问项目预算、BAC、成本基准、应急储备、管理储备的含义及它们之间的区别 ②给出成本基准和管理储备求项目预算,或者给出预算求成本基准等等 ③看图找 PV、AC、EV、SV、CV、BAC、EAC、ETC等 ④根据题干求项目的PV、AC、EV、SV、CV、BAC、EAC、ETC等 …

骑行听音乐用什么运动耳机?五款宝藏机型汇总推荐

热爱骑行的你们,是否曾为选购一款合适的运动蓝牙耳机而纠结?市面上品牌众多、功能各异的运动耳机,究竟哪款才是你的运动良伴?今天,我就来聊聊运动蓝牙耳机的选购要点,并为你推荐几款高性价比的运动蓝牙耳机…

OMS系统集成案例分享:数环通轻松实现OMS系统对接

在数字化浪潮席卷全球的今天,订单管理系统(OMS)作为连接企业与客户的桥梁,正逐渐成为企业提升订单处理效率、优化客户体验的关键。然而,由于企业内部系统的复杂性和多样性,OMS系统与其他业务系统的集成往往…

OCR技术可以通过识别身份证区分性别么?

可以,只需将它识别成结构化的数据,然后根据性别进行筛选即可。具体操作方法如下: 1、到金鸣识别官网下载安装金鸣表格文字识别电脑客户端。 2、打开安装好的金鸣表格文字识别电脑客户端。 3、点击“添加文件”,在弹出的对话框中选…

【C语言回顾】数组

前言1. 数组2. 一维数组2.1 一维数组的创建2.2 一维数组的初始化2.3 一维数组的使用2.3.1 一维数组的下标2.3.2 一维数组的输入和输出 2.4 一维数组在内存中的存储 3. 二维数组3.1 二维数组的创建3.2 二维数组的初始化3.3 二维数组的使用3.3.1 二维数组的下标3.3.2 二维数组的输…

Lesson2: 算法的时间复杂度和空间复杂度

【本节目标】 1. 算法效率 2. 时间复杂度 3. 空间复杂度 4. 常见时间复杂度以及复杂度 oj 练习 1.算法效率 1.1 如何衡量一个算法的好坏 如何衡量一个算法的好坏呢&#xff1f;比如对于以下斐波那契数列&#xff1a; long long Fib(int N) {if(N < 3)return 1;retu…

【模板】差分

本题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 题目&#xff1a; 样例&#xff1a; 输入 3 2 1 2 3 1 2 4 3 3 -2 输出 5 6 1 思路&#xff1a; 一直以来&#xff0c;我总是不太理解差分和树状数组操作区别。 现在摸了一下开始有所理解了。 差分和树状数组的区别…

houdini assemble connectivity partion

官方文档 *****分开打包 非连续物体 各部份 打组 操作 partion connectivity assemble 三个物体&#xff0c;每个物体内的点&#xff0c;面线连接在一起&#xff0c;但每个物体之间分离 connectivity 查看点面数据属性&#xff1a;在原有属性上的变化 connectivity 对将归…