Blog
Blog
PHODAL

很早以前,我便想着写一篇文章吐槽一下数字化时代。如果你熟知我在开源世界的贡献(代码 + 内容),就知道我一直是开源软件、自由软件的拥趸:RMS 一直是对的 [🐶🐶🐶] 。

需求代码化,即将软件开发需求抽象为特定的领域语言,并使用管理代码一样的方式来管理需求,追踪需求的变化 。同时,为通过新的 API 来对接版本管理系统,以可视化需求,演变为看板代码化。

不同的微前端框架都源于它们的使用场景,也受限了它们不能满足于其它场景。受限于使用场景,这些微前端框架都需要不同程度的改造,才能满足各自的需要。

随着持续部署、DevOps 在各个企业的推进,越来越多的企业已经有完善的基础设施,软件开发团队只需要一个在线的 IDE,就可以完成开发工作,这就进入了云开发时代。

PS:过去的几个月里,我陆陆续续和不同公司的人一起讨论了开发、研发的未来。光是发我写过的几篇文章的链接,已经不能很好地解决问题。所以我决定写一篇长长的文章,来帮助更多地人理解:研发的未来在哪里?

这个故事很长,不过我并不想讲得太长。原先,关于这个问题的答案只有一个。只是我在写 Ledge 的时候,发现了一些有意思的东西。因此,我决定写一篇不太不短的文章来讲述一下。

Serverless 越来越火,无代码编程也提上了议程,还有云开发也在风口浪尖。那么,未来会是怎样的呢?

这篇文章的草稿差不多在我的 todo 列表里躺了一年,直到最近,看到我的同事在吐槽手动创建步骤的繁琐性。我才想起来,我曾经想写一篇这样的文章,但是我在我的博客( https://www.phodal.com ) 上找了好久,也没有发现。然后,我终于在我的 To-Do 应用中看到了它的身影。 虽然说是模式总结,到底只是个人经验。受限于个人经验,可能有些许的不足之处。若是各位读者愿意指出来,那自然感激不尽。 ## 开发过程:IDE 代码片段『精选』 > IDE 代码片段『精选』即在 IDE/编辑器中,通过插件或者内置组件,对特定语言、框架、技术等提供自动化的代码填写。 代码集这个东西,自然比较是比较有意思的。在我们的日常开发中,我们经常会使用到,它的名字有多样多样,如 - AutoComplete - Snippets - 智能感知 - …… 它倒也没有什么特别之处,在我们输入一些词的时候,给我们建议,如在 IDE 里输入 `list.for`,过程中就可以生成如下的代码: ```kotlin for (item in list) { } ``` 嗯,就这么简单,是不是经常使用到。 ## 开发过程:语言、框架抽象 DSL > 语言抽象 DSL,即通过编辑器、IDE 内置对于语言和框架的抽象,使开发人员可以通过编写 DSL 便可以生成特定语言的代码。 它特别适合于编写简单的模板代码,如 HTML、XML 等。作为一个开发人员,那么最常看到的例子就是 Zen Coding/Emmet,这个东西非常炫,输入 `ul>li*5>a[href="#"]`,然后按一下 tab,你就可以快速生成如下的代码: ```html
``` 嗯,它特定适合于编写结构化的代码格式。 ## 创建时:模板化代码生成 > 模板化代码生成,即在代码 or IDE 中内置特定系统、团队的代码范式,随后通过特定的参数,来生成适合于该团队和该系统的代码。 考虑到前端领域创建模板的复杂性,创建的过程中,需要同时创建 `*.component.scss`、`*.component.spec.ts`、`*.compnent.ts`、`*.component.html`,所以在前端领域非常之流行。最简单来说,Angular 开发人员通过 `ng g` 就可以生成各式各样的代码。 事实上,我觉得对应于后端开发也是如此,毕竟创建一个 CRUD API 可能需要 `model`、`repository`、`api`、`service` 等。不过,依我的观察来看,后端开发人员一般都没有 GET 到这项技能,因为 gradle 太 TM 难用了。 尽管,大部分框架都自带了类似的生成器,但是大多数时候,都得自己撸一个适合于架构的模板。所以,这里推荐一下适用于前后端的框架。 ### Angular Schematics > Schematics 是前端开发工作流工具,例如:创建一个组件、变更配置项至当前项目,并且不限制任何语言环境。 ### Plop > Plop 是一个微型生成器框架。它提供了一种以一致的方式生成代码或任何其他类型的纯文本文件的简单方法。 嗯,这两个框架,大家自己了解一下。 ## 创建时:DSL 生成代码 > DSL 生成代码,顾名思义就是通过 DSL 的方式,来生成代码,再集成到系统中开发。 最常见的一个例子就是我最近使用基于 Antlr 编写的 Chapi,便是这种模式。又或者是,对于一些模式化的开发的系统来说,它们也是通过类似的方式来生成大量的模板。 注意:通过这种模式生成的代码,往往是不会进行二次开发的。因为随着引擎的更新,这些代码会被覆盖住,导致难以维护。 如 Antlr 这样的框架,只需要通过: `antlr -Dlanguage=Java -listener -visitor CPP.g4 -o chapi/ast/antlr -package chapi.ast.antlr` 编译生成到指定的目录。于是乎,我们就可以 `import chapi.ast.antlr`,集成到系统中使用。 ## 构建时:DSL / 代码生成代码 > 构建时代码生成代码,即在构建的时候,才进行代码生成。 对于稳定的系统来说,可以只在构建时才运行代码生成。平时的时候,都是通过生成临时代码的方式。嗯,常见的 Angular 框架就是类似的方式运行的。 在开发的过程中,我们都是通过编码 DSL 或者是一种不同于最终运行语言来编写的。 ## 运行时:元编程 > 元编程(Metaprogramming)是指某类计算机程序的编写,这类计算机程序编写或者操纵其他程序(或者自身)作为它们的数据,或者在运行时完成部分本应在编译时完成的工作。 这一点大家都很熟了,我就不再重复描述了。 ## 未来 随着,无代码编程/低代码编程越来越流行,代码生成的基础架构来越来越火。

人的智商不够、又或者是脑容量不足以容纳这么多的知识。所以,对于个人来说,我们工作的时候,依赖于文档、笔记、文章,来帮我们回忆起这些知识;对于组织来说,知识传递是需要知识管理的一个关键因素。

在 Ledge 知识平台 发布的这一周多里,我一直在思考如何让这个项目做得更好。在和 CSDN 编辑的讨论中,我意识到我可以把这个过程中的相关经验分享出来。因为毕竟大部分的开源项目做得不好。

Feeds

RSS / Atom

最近文章

存档

2026 (2 个月)
2025 (12 个月)
2024 (12 个月)
2023 (12 个月)
2022 (12 个月)
2021 (12 个月)
2020 (12 个月)
2019 (12 个月)
2018 (12 个月)
2017 (12 个月)
2016 (12 个月)
2015 (12 个月)
2014 (12 个月)
2013 (9 个月)
2012 (3 个月)
2011 (1 月)
2010 (1 月)
1991 (1 月)

分类

标签

作者