BlockLang —— 软件拼装工厂

2019-04-20 15:32:38 +08:00
 xiaohulu

转眼间,做业务系统的软件开发已有十个年头,从刚开始的激情满满,到周而复始地一个接一个的做项目,虽然竭尽全力将一些常用的代码或模式封装到框架中,但依然感觉到了无尽的重复,而正是这无尽的重复在逐渐的吞噬着我的工作热情。

我意识到,虽然我热爱软件研发,但目前的业务系统软件研发模式,让大家深陷在沼泽中,逐渐没有了生活。

如果我们做过一件事情之后,我们能够将我们已做过的事情(如已编写过的代码)提取到框架中,供更多的人去调用,而不是重复发明轮子;如果能够将我们在项目中已获得的经验固化为平台中的一个能力,然后为平台用户赋能,这样每个人的起点都是站在巨人的肩膀上。如果能够形成这样的机制,则我们的工作内容将不会再出现大大减少无聊和冗余的重复,并且会极大的提供工作质量和效率,出现全新的软件研发模式。

这样技术前提下的软件研发模式,也能极大的促进业务系统的高速发展,因为开发一个软件的周期大大降低,甚至能够做到实时反馈,业务专家不用再在提出一个认为很简单的需求,却在一个月之后看到与预期相差甚远的功能。而是可以边提需求、边开发、边确认。

于是,我辞掉了工作,着手搭建这样的一个平台,并完全开源,也希望能吸纳各方面的人才参与。

平台名字叫 BlockLang, 也就是块语言,使用这个“块状的语言”像摆积木一样拼装出业务系统。

BlockLang 相信“每个人都可按照自己的需求,拼装出称心的软件”。

BlockLang 致力于打造一朵“百花齐放、百鸟争鸣”的软件云,实现软件定义软件。

告别传统的业务系统开发模式,人人都能高效率的拼装出高质量的业务系统。

BlockLang 是一个开源项目

  1. 源码托管在 https://github.com/blocklanghttps://gitee.com/blocklang
  2. 演示站点在 https://blocklang.com

诚邀志同道合的编程手艺人加入( QQ 群 619312757 ),一起开启业务系统研发新模式。

2718 次点击
所在节点    分享创造
12 条回复
airyland
2019-04-20 23:14:59 +08:00
网站一片空白?
xiaohulu
2019-04-21 00:40:41 +08:00
@airyland 我使用 chrome 和 firefox 浏览器打开正常,请问您使用的浏览器及版本?
binghe
2019-04-21 03:30:12 +08:00
感觉这个和我前两年提出的问题有些类似。我当时说的是后台业务系统可以像大部分 CMS 一样,可以在后台自定义“模块”,自定义“字段”等功能。
xiaotuzi
2019-04-21 07:26:25 +08:00
手机打开一片空白
xiaohulu
2019-04-21 07:31:30 +08:00
@binghe 嗯,我们遇到的问题,和想要解决的问题,应该是相似的。
xiaohulu
2019-04-21 07:32:08 +08:00
@xiaotuzi 哦,我只在手机版 firefox 上测试,手机自带的浏览器,我测试下。
xiaohulu
2019-04-21 09:06:11 +08:00
@xiaotuzi 您用的是华为浏览器吧。原本不打算支持 ie11,没想到华为浏览器上也显示不出来了。华为浏览器和 ie11 不会是一个内核吧。
xiaohulu
2019-04-21 09:27:32 +08:00
@xiaotuzi 感谢您的反馈,手机华为浏览器上页面空白问题已修复。
xiaotuzi
2019-04-21 18:52:55 +08:00
@xiaohulu 能看了
ParallelMao
2019-04-21 21:59:29 +08:00
面对简单的业务需求,如果想要做成类似这种动态的模式,个人认为最简单的办法是后端服务提供简单的 restful api (针对某个业务实体的增删改查操作),前台搭建一个类似 GraphQL API 的服务,通过定义 查询语言来实现业务逻辑。这一点楼主所做的块语言也可以解决。

但是当遇到更加复杂的业务场景,不同实体之间的联系错综复杂,是及其难以用类似上面那种模式解决的。首先抽象业务这个事情在面对复杂业务时本身就很难,即便是一个非常固定的需求,更何况其实需求也是在不断变化的。其次各种组件(实体)进行互相依赖之后,性能优化,问题定位啥的问题也会变得复杂起来。最重要的是,不同开发同学的对软件的理解是不同的,一个事情,可能 A 抽象出来的结果和 B 抽象出来的结果完全不同,再加上后期可能无限变动,每次变动都需要将抽象修改为最合理的方式,其实这个成本也还是蛮大的。这种情况下个人认为很难去通过这种自动化的方式很好地解决。

所以我目前的经历来看,软件开发完全通过底层实体的拼装实现上似乎可行,但潜在的风险和成本太高了其实不是很适合使用。
xiaohulu
2019-04-22 10:03:07 +08:00
@ParallelMao 感谢您的回复,很中肯。每次变动,带来的成本的确是很高的,不管是编程式,还是拼装式。为了应对变化,编程式中抽象出了各种模式,封装出各种框架,但业务层面的变动成本依然很高。拼装式某种程度上能降低变动的成本,但的确正如您所言,这就需要更加通用和合理的抽象,也就是做组件的成本是提高了,同时也可以模仿 rust 语言的强检查的编译器机制,在拼装的过程中引入相对全面的检查。

所以,我的理解,就如封装变化点一样,我们将变动的成本封装到了组件了,从而降低业务层面的变动成本。

我的理解也许还不够成熟,不过,您说的这些风险如果不解决,则拼装式也是真的很难推广开来。不过我也尝试着琢磨方案。
也期待您的宝贵经验 :)
YrX12138
2019-04-23 10:49:32 +08:00
收藏一下。

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

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

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

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

© 2021 V2EX