分享一个自己制作的代码生成器

350 天前
 LazyCoder0101

懒农 ( LazyCoder )

一款实现可视化生成代码的代码生成器


介绍

    懒农是一款实现可视化生成代码的代码生成器,如示例动图,使用懒农,可通过添加功能以及图示的可视化操作,实现即时代码生成和修改。

    但实际上,这个软件并不会生成代码,它能实现图示所示的效果,是因为在使用软件生成代码之前,导入了对应的数据文件

    如上图所示,这两个文件为客户端附带的示例数据文件,导入对应的示例数据文件后,便可使用该数据文件通过可视化操作生成对应源码,动图所示操作是使用 STM32 程序生成(正点原子探索者) 这个数据文件生成的源码示例。该数据文件生成的代码内容基本取自于 STM32 开发板厂商正点原子公开的探索者开发板裸机源码,使用该数据源可以通过可视化生成对应的电路控制程序。同样,要生成其他代码,也需要开发者针对某种业务场景,将所需生成的代码等内容做成数据文件,例如示例数据源的 微信公众号生成( FastBootWeixin ) 数据文件,该数据文件可使用 java 语言快速生成一个简易的微信公众号相关程序 (该生成源码仅作示范使用,不考虑实际用途,因为实际情况几乎可以说没人会这样做微信公众号开发) 。由于这种生成代码的思路并不涉及具体的编程语言,所以可以适应于多种编程语言。

    在制作数据文件的过程中,需要录入生成项目源码的固定文件结构等内容,如上图所示,除了要录入需要生成的代码文件内容,以及可以选择添加的功能的代码以外,还要编辑可以对代码进行可视化操作的操作层。录入对应的文字,并添加合适的控制组件。在使用数据文件生成源码时,客户端会根据录入内容生成对应源码和可以对其进行可视化操作的控制台,从而让用户可以根据控制台的文字内容和组件,按提示进行操作对代码进行更改,并通过提供的各种功能的选择组合生成自己所需要的代码。

这代码生成器能用来生成什么代码

    看到这里,可能不少人会觉得,这样的软件并没有什么太大的作用,这样生成代码的方式,没法应用于复杂的开发工作中。其实,这款软件,其最终的应用目的,是希望能提供给懂得一般电脑操作的人,用来生成自己所需要的一些简易程序的。

    有时候,对于很多人来说,有些需要进行人工进行的简易繁复的工作可以用程序来进行代替,这类程序往往没有复杂的程序逻辑,仅是实现某些简单的功能来解决一些实际需求,但这类程序往往没什么经济价值。说得通俗点,用户也不会想到要搞个程序来完成工作,找人也肯定不现实,不舍得花太多钱,哪怕真有开发者愿意为其进行开发需要的程序,也容易出现由于用户无法理解技术,或者开发者没能理解用户实际需求的情况,导致双方沟通存在问题,最终实现的效果没能满足用户的实际需求;或者说在使用过程中由于实际外部因素的改变,导致原来生成的程序需要调整才能满足实际情况。此外,像这类需求,由于不同的用户和不同需要,也要通过实际情况来判断和辨别,应该需要什么技术领域以及符合的编程语言,找具备对应技能的开发者进行定制化开发才能解决问题 (比如适合于 web 服务一类的需求,总不能找具备嵌入式开发功能的人来处理) ,而这对于用户而言,是他们难以靠自身能力来完成的。

    所以,对于这样一类难以产生巨大经济价值的需求,按照以往用户支付费用,并根据自身需求通过和开发者之间的沟通来满足用户的个性化需求,进行定制化软件开发的方式,无法切合实际情况。笔者开发该应用,也是想通过这款软件,提供一种协作方式,开发者围绕某种业务场景制作对应的数据文件提供用户进行可视化代码生成,当数据文件达到一定数量,用户可以根据自己的需求,通过一定方式找到自己所需的数据文件,并在开发者的引导下,使用数据文件生成所需代码。 (当然,有些代码并不适合通过这种方式生成,要解决该问题需对软件继续进行迭代改进) 由于这软件生成代码的思路并不涉及任何编程语言,所以当数据文件的数量和种类达到一定数量时,通过这种方式可生成多个领域和不同的编程语言的简易代码,如嵌入式应用程序、web 服务程序等,从而在种类、数量、功能、业务场景上对用户需求进行覆盖,一定程度上满足这类一般用户所需的简易程序开发需求。

    以嵌入式应用程序为例,各位可使用本应用软件附带的示例数据文件 STM32 程序生成(正点原子探索者) 数据文件生成代码实际体验,该数据文件大部分生成源码是直接使用正点原子公开的探索者开发板源码制作,使用懒农可通过可视化的方式生成对应的裸机源码。生成源码后,经过编译、烧录到开发板或者对应的硬件电路,便可实现相应的功能。

    看到这里,可能会有人觉得,懒农的做法根本是不切实际,不谈其他,单是像这类硬件电路的控制程序,相对于程序设计,其中的硬件电路设计到成品制作等所需的相关知识和技能,比程序编写本身的难度更大 ,生成程序以后,后续到最终成品实现的过程中,需要具备对应知识和技能的工作,根本不是一个只懂得一般操作的用户能够实现的,仅以这种方式生成代码,而不是用户最终所需的成品硬件,就想满足用户的需求根本就是空谈。

    诚然,对于生成所需的成品实物,仅生成代码远远不够,但是,能确定要生成的代码以后,不考虑电路布局等因素,其成品实物的硬件设计电路基本可以确定。而且对于这个领域,终端用户所需的需求对应技术基本是消费电子行业所需的板级硬件技术,板级硬件技术随着这么多年行业的发展,早已实现了模块化和集成化,对于一些并不算过于复杂的功能需求,仅从实现功能的角度考虑,很大程度上可以当成编译后烧录到对应 MCU ,并根据生成代码将各模块电路进行连接的事。如果数据文件可以生成可应用于实际的代码,通过这样的方式,开发者也可以以一种相对较低的成本提供后续的使用引导等工作。即便在这过程中用户可能存在一些问题难以自己解决,但其实只要这类需求能通过这样的方式得以整合,并形成经济价值,凭借目前的技术,当代码生成时,即所需条件已经明确后,也可以通过现有的技术手段去有针对性的对该类问题提供更为简易操作的方式供用户完成。就好比如今的修图和短视频编辑等,在面对终端用户特定的需求的情况下,可以提供简单易用的功能,以产品的形式让用户实现想要的效果,而不是一味地要求用户需要具备相应的技能。

    同样,对于 web 服务或者传统的客户端开发,由于 CS 架构和 BS 架构之间没有过于明确的技术划分;随着目前众多开源技术的涌现让开发的成本和难度降低;而且现在有众多的第三方互联网服务提供各种丰富的基础功能;对于像 UI 或者某些特定的代码,早已有可以进行可视化生成或者简易配置生成的工具可以实现;对于一般用户日常所需的一些并不复杂的单一功能需求,通过事先围绕特定业务场景编写的数据文件,以可视化的方式生成基本代码框架,对于一些不适合使用数据文件生成的代码,以结合其他工具配合生成,从当前技术的角度来说,一定程度上,目前已经具备实现的可能。而且,使用数据文件的方式,还可以让开发者能事先确认生成的代码所需要的环境,这样也可以进一步让快速编译和部署等工作有了实现的可能。

    笔者通过懒农所想要实现的,不仅仅是这个软件所表现的可视化生成简易程序的效果,而是希望可以以这个软件作为起点,能让更多开发者能关注并参与进来,进行对应的数据文件的制作以及对软件的持续迭代改进、还有所需配套环境的建设;通过现有技术等方面的整合和协作方式的改变,让技术得以进一步下沉,使得这类简易的应用程序需求得以快速实现,具备并整合为市场需求并形成经济价值的可能。


项目开源地址

CSDN 项目介绍

在这希望有兴趣的朋友可以点⭐鼓励一下。

客户端下载地址

作者联系方式

    如果您对懒农这个应用,想要反馈 Bug 、提供产品意见,甚至进行迭代优化,欢迎联系作者,或者加群讨论。


<sub>作者 qq:3606515004</sub>

<sub>作者微信:lanzai2020</sub>

<sub>qq 交流群:893613856</sub>
5259 次点击
所在节点    分享创造
24 条回复
orangie
334 天前
感觉有一点点意思,像是根据模板生成程序,但是奈何 readme 写得真不好,粗看一遍还是不知道怎么用,没看到演示用的生成的程序的效果。
forty
293 天前
现在几个月没更新了呀, 没什么新的改进了吗?
LazyCoder0101
286 天前
@forty 谢谢支持,不好意思,项目还在跟进,之前推广收到了一些用户的意见,在改中,最近被个人私事耽误了,暂时没精力处理,实在抱歉
LazyCoder0101
286 天前
@forty 如果阁下有兴趣,可以加我 QQ 联系

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/997589

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX