V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
xiaohulu
V2EX  ›  分享创造

BlockLang —— 软件拼装工厂

  •  
  •   xiaohulu ·
    xiaohulu · 2019-04-20 15:32:38 +08:00 · 2747 次点击
    这是一个创建于 2073 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

    BlockLang 是一个开源项目

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

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

    第 1 条附言  ·  2019-04-23 17:56:55 +08:00

    0.1.0 发布说明

    很激动,终于完成了第一个小版本 0.1.0 的开发。

    在规划 Block Lang 的开发路线时,我们意识到:

    1. BlockLang 的开发是一个漫长的过程,要做好打持久战的准备;
    2. 保持增量开发,让大家尽早看到一个完整的可使用的平台;
    3. 始终以社区的思路和姿态运营,即使社区中只有我一个开发。

    因此 0.1.0 版本立足于贯通软件的研发生命周期,已完成以下功能:

    1. 创建空项目
    2. 发布空项目
    3. 安装空项目
    4. 用户登录和注销

    0.1.0 版本共创建了三个项目:

    1. blocklang.com 存 blocklang 平台代码;
    2. blocklang-template 存项目的模板代码;
    3. blocklang-installer 是项目安装器,用于在用户主机上部署软件。

    后续开发中,会按月规划开发路线,于每个月第四周的星期二发布。

    0.1.1 版本重点是添加版本控制功能。

    最后,分享一个心得。

    1. 如果将现在的研发模式称为 编程式,则 blocklang 平台提供的研发模式可称为 拼装式
    2. 拼装式和编程式不是完全互斥的概念,拼装式是充分建立在编程式的基础上的,是在软件工程范畴对编程式的提升
    3. 而拼装式主要聚焦于业务层面,希望能提供一种新思路来快速响应变化。

    真诚欢迎大家的关注和意见。在交流时以充分表述清楚意图为优先,不要太顾忌我的感受!

    第 2 条附言  ·  2019-05-16 10:58:19 +08:00

    0.2.0 发布说明

    欢迎您了解 Block Lang 0.2.0 发布的功能。此版本增加三个功能:

    1. 在项目中创建空页面
    2. 在项目中创建分组
    3. 使用版本控制系统管理新创建的页面

    详见 github 上的发布说明

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

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

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

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

    我的理解也许还不够成熟,不过,您说的这些风险如果不解决,则拼装式也是真的很难推广开来。不过我也尝试着琢磨方案。
    也期待您的宝贵经验 :)
    YrX12138
        12
    YrX12138  
       2019-04-23 10:49:32 +08:00
    收藏一下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4125 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 05:22 · PVG 13:22 · LAX 21:22 · JFK 00:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.