[答疑]领域特定语言DSL属于伪创新吗(谷爱凌)

DDD领域驱动设计批评文集

做强化自测题获得“软件方法建模师”称号

《软件方法》各章合集


Zeyu 2024-1-4 9:20

马丁福勒的领域特定语言DSL是否有阅读的价值?属于伪创新吗?

UMLChina潘加宇

这个问题就有点伪创新

图片

,让人误以为DSL是Fowler发明的(粉丝日常惊呼:竟然不是!)。

图片

问题应该是:

1. 马丁福勒写的《领域特定语言》是否有阅读的价值?

2. DSL属于伪创新吗?

问题1的回答:

Fowler的书写于2010年,是一本DSL的普及书籍,不反对阅读。

问题2的回答:

DSL不是伪创新,和其他各种“模型驱动”一样,是提高软件复用级别的路线之一。它把领域知识组织成“语言”的形式,构造一门DSL和构造一门编程语言没有本质区别。

UML可以看作软件建模领域的一门DSL。

DSL的概念早就存在,Fowler在书的前言中也说:

图片

图1 摘自《领域特定语言》,Martin Fowler,英文原书出版于2010年

图2摘自1986年的某期IEEE Expert,文章介绍了Lockheed(洛克希德)公司的软件技术中心。

图片

图片

图2 摘自IEEE Expert, November 1986

文章中除了提到“领域特定语言”、“代码生成”之外,还提到了“基于AI的软件开发环境”!

★注意,公司名只有Lockheed,后面没有Martin。要等到1995年,Lockheed才和Martin Marietta合并为Lockheed Martin。

**********

天下没有免费的午餐。把各种复杂领域知识和逻辑组织成“语言”,难度要比用UML画画类图要高。大多数人建模都还搞不定呢,还搞什么元建模。网络上那些教你轻松创建DSL的文章和教你轻松用EA画类图是一样的,是很轻松,但离真正解决问题还很远。

**********

还是要提一下:

DSL不是伪创新,但如果某位热衷于DDD的人士和你谈DSL,那可就不敢保证了。

就像量子物理不是伪创新,但如果一位文科教授写了一篇量子物理论文,或者谷爱凌发了一个量子物理教学视频,那得留个心眼。

图片

图3 谷爱凌微博截图

**********

搜素了一下2001-2005年间的《非程序员》,里面也有一些DSL的内容:

图片

图片

图片

图片

UMLChina公众号精选(20240108更新)

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

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

相关文章

本地部署Canal笔记-实现MySQL与ElasticSearch7数据同步

背景 本地搭建canal实现mysql数据到es的简单的数据同步,仅供学习参考 建议首先熟悉一下canal同步方式:https://github.com/alibaba/canal/wiki 前提条件 本地搭建MySQL数据库本地搭建ElasticSearch本地搭建canal-server本地搭建canal-adapter 操作步骤…

shp与数据库(插入数据)

前言 正文 geopandas与shp文件创建表和录入数据 解释一下上面的代码 查询cd2表的geometry字段 查看一下表 前一篇博客的冲突 问题的解决 POLYGON与MUTLIPOLYGON的说明 解决问题的代码 修改表的创建 shapefile和sqlalchemy插入数据 数据库查询 最后 前言 前一篇讲解…

与AI合作 -- 写一个modern c++单例工厂

目录 前言 提问 bard给出的答案 AI答案的问题 要求bard改进 人类智能 AI VS 人类 前言 通过本文读者可以学到modern C单例模式工厂模式的混合体,同时也能看到:如今AI发展到了怎样的智能程度?怎样让AI帮助我们快速完成实现头脑中的想法&…

【hcie-cloud】【17】华为云Stack灾备服务介绍【灾备方案概述、备份解决方案介绍】【上】

文章目录 前言灾备方案概述灾备的定义灾备的重要性故障和灾难对业务连续性带来的挑战灾备系统的衡量指标RTO与RPO分析 灾备等级标准数据中心容灾解决方案全景图云灾备服务总结架构华为云Stack灾备服务总览 备份解决方案介绍云备份服务介绍备份服务架构介绍云备份服务组件功能介…

界面原型设计工具有哪些?看看这9个

界面原型设计是现代设计师必备的技能之一。在设计数字产品或应用程序时,界面原型是将概念转化为具体可交互界面的重要步骤。对于新手小白来说,选择一款易于上手且功能强大的界面原型设计工具至关重要。本文将介绍 9 个常用的界面原型设计工具&#xff0c…

计算机体系结构动态调度(计分板及Tomasulo)学习记录

1.动态调度核心思想:允许就绪指令越过前方停顿指令,提前进入运行(乱序执行) 就绪指令指不存在资源冲突、操作数已就绪的指令,例如,计分板算法使用计分板来实现,Tomasulo使用保留站来实现&#…

苹果电脑交互式原型设计软件Axure RP 9 mac特色介绍

Axure RP 9 for Mac是一款交互式原型设计软件,使用axure rp9以最佳的方式展示您的作品,优化现代浏览器并为现代工作流程设计。同时确保您的解决方案正确完整地构建。Axure RP 9 for Mac为您整理笔记,将其分配给UI元素,并合并屏幕注…

swing快速入门(三十九)进度对话框

🎁注释很详细,直接上代码 上一篇 🧧新增内容 🧨1.模拟耗时操作 🧨2.使用计时器更新进度对话框 🎀源码: package swing31_40;import javax.swing.*; import java.awt.event.ActionEvent; import …

【debug】为什么ansible中使用command出错

碎碎念 在使用ansible执行command的时候,遇到执行会出错的command 比如执行source打算读取环境变量的时候 错误提示为: 没有那个文件或目录:source 一开始以为是错误提示有问题,一直在testrc的路径上检查,但是同样一行命令使用…

C++八股学习心得.8

1.const知道吗?解释其作用 const 修饰类的成员变量,表示成员常量,不能被修改。 const修饰函数承诺在本函数内部不会修改类内的数据成员,不会调用其它非 const 成员函数。 如果 const 构成函数重载,const 对象只能调…

聊聊 Java 集合框架中的 ArrayList

其实 Java 集合框架也叫做容器,主要由两大接口派生而来,一个是 collection,主要存放对象的集合。另外一个是Map, 存储着键值对(两个对象)的映射表。 下面就来说说 List接口,List存储的元素是有序、可重复的。其下有三个…

配置git服务器

第一步: jdk环境配置 (1)搜索【高级系统设置】,选择【高级】选项卡,点【环境变量】 (2)在【系统变量】里面,点击【新建】 (3)添加JAVA_HOME环境变量JAVA_HO…

展台搭建的基本要求

一、选址及总平面布置 展厅人流量大,对选址和总平面布置的要求如下:展厅选址应位于市内或郊区交通便利的区域。大型展览馆应有足够的群众活动广场和停车面积 ,并应有室外陈列场地。室外场地要考虑环境的绿化和美化。各功能分区之间联系方便又互不干扰。建…

实现LCM在docker之间的通信

目录 1.docker容器互联 新建网络 连接容器 2.设置环境变量 3.在两个docker之间实现通信 1.docker容器互联 新建网络 $ docker network create -d bridge test-net 连接容器 运行一个容器并连接到新建的 test-net 网络: $ docker run -itd --name lcm_1 --network tes…

极智项目 | 实战Paddle戴口罩检测

欢迎关注我的公众号 [极智视界],获取我的更多项目分享 大家好,我是极智视界,本文来介绍 实战 Paddle 戴口罩检测项目。 本文介绍的 实战 Paddle 戴口罩检测项目,提供完整的可以一键执行的项目工程源码,获取方式有两个…

AI红娘开启约会新时代;网易云音乐Agent实践探索;微软生成式AI课程要点笔记;ComfyUI新手教程;图解RAG进阶技术 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 👀 Perplexity 官宣 7360 万美元B轮融资,打造世界上最快最准确的答案平台 https://blog.perplexity.ai/blog/perplexity-rais…

yyds,4 个 Pandas 必备神器!

Pandas是我们日常处理表格数据最常用的包,但是对于数据分析来说,Pandas的DataFrame还不够直观。 今天我们将介绍4个和Pandas相关的Python包,可以将Pandas的DataFrame转换交互式表格,让我们可以直接在上面进行数据分析的操作。 P…

天洑软件与常州大学成立电子信息专业学位硕士研究生联合培养基地

2023年12月27日,天洑软件与常州大学微电子与控制工程学院成立电子信息专业学位硕士研究生联合培养基地,授牌及企业导师聘任仪式于常州大学西太湖校区隆重举办。天洑软件前瞻技术研究院院长张儒受邀与会。 开幕式上,微电子与控制工程学院党委书…

NUXT3学习笔记

1.邂逅SPA、SSR 1.1 单页面应用程序 单页应用程序 (SPA) 全称是:Single-page application,SPA应用是在客户端呈现的(术语称:CSR(Client Side Render)) SPA的优点 只需加载一次 SPA应用程序只需…

Docker实战08|Docker管道及环境变量识别

上一篇文章中,讲解了如何通过Go语言实现对Docker Cgroup的资源限制 具体文章可见《Docker就应该这么学-07》 有需要的小伙伴可以回顾一下。 接下来本文会详细介绍一下Docker 管道及环境变量识别 管道及环境变量识别 获取代码 git clone https://gitee.com/mjr…
最新文章