03-《人月神话》巴赫、UML和领域驱动设计伪创新:中译本纠错及联想

news2024/11/28 18:49:14

DDD领域驱动设计批评文集

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

《软件方法》各章合集


2001年,我们翻译《人月神话》的时候,由于水平有限,译文中存在不少错误。

这些年,随着阅历的增长,在重读的时候偶尔也会有“原来这里的意思是这样啊,之前搞错了”的感受。

2023年,清华大学出版社推出《人月神话》典藏纪念版,大幅度修正了译文。在此,把修订译文时的一些联想和感受写成若干文章分享。

图片


图片

图片

第4章的这个段落里,有这么一句话:form is liberating,意思是:形式即解放。

之前我们翻译成:没有规矩,不成方圆。似乎意思差不多,现在想来,味道是有区别的。

形式即解放,意思是:如果给艺术家限定某种形式,反而是解放了艺术家的创造力。作者在这里是把计算机架构类比成音乐创作了。

形式定下来之后,艺术家就不用去操心形式,他可以把精力放在真正要创造的地方。

UML就类似于这样一种“形式”。针对表示法达成共识后,建模人员就可以把精力聚焦到要表达的内容上面来。

但是,很多人并不喜欢用有“形式”的表示法,因为一旦他“解放”之后,会被人发现,其实他没有能力。

因此,他宁可把精力花在创造各种自己特有的乱七八糟图。光是这个,他就花了很多精力。这时候,他就有理由说:你看,我已经花了很多精力了,不是我不想创造,而是我没有时间了。

我多次批评的各种领域驱动设计伪创新以及其他伪创新,都可以对号入座。

为什么有人喜欢画乱七八糟图>>

第二个错误,就是Cantata这个地方。Cantata,20多年前,我们年轻不懂,翻译成“歌剧”。

其实,巴赫(Bach)没有写过任何一部歌剧:

图片

巴赫写的是Cantata(康塔塔)。康塔塔是没有舞台表演,没有服装布景的,像下面这个视频,可以看到演唱者手中的乐谱本封面上的“Bach”:

,时长00:14

而歌剧是有舞台,有服装,有布景的。下面是歌剧《费加罗的婚礼》片段:

,时长00:12


UMLChina公众号文章精选(20231111更新)按ABCD工作流分类

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

推动卓越创新:了解 4 种研发团队架构如何优化您的组织

揭示敏捷实践中常犯的12大错误,了解如何避免这些敏捷失败 陷阱,找出问题根源并采取有效改进措施,提高项目成功率。立即连线 Runwise.co 社区敏捷专家获得专业建议,或 Runwise.co 在线学习敏捷方法实战课程,提升您和团队…

go当中的channel 无缓冲channel和缓冲channel的适用场景、结合select的使用

Channel Go channel就像Go并发模型中的“胶水”,它将诸多并发执行单元连接起来,或者正是因为有channel的存在,Go并发模型才能迸发出强大的表达能力。 无缓冲channel 无缓冲channel兼具通信和同步特性,在并发程序中应用颇为广泛。…

代码随想录算法训练营 ---第四十五天

前言: 昨天的题做过之后,今天的题基本上都很简单,但是要注重一下细节。 第一题: 简介: 动态规划五部曲: 1.确定dp数组的含义 dp[i]:爬到有i个台阶的楼顶,有dp[i]种方法 2.确定dp…

CSS之弹性盒子Flexible Box

我想大家在做布局的时候,没接触flex布局之前,大家都是用浮动来布局的,但现在我们接触了flex布局之后,我只能说:“真香”。让我为大家介绍一下弹性盒子模型吧! Flexible Box 弹性盒子 在我们使用弹性盒子时&…

泛型你掌握多少?包装类你深入了解过吗?快进来看看吧~

目录 1、泛型是什么——引出泛型 2、泛型的使用 2.1、语法 2.2泛型类的使用 2.3、裸类型 3、泛型如何编译 3.1、擦除机制 3.2、为什么不能实例化泛型类型数组 4、泛型的上界 5、泛型方法 5.1、语法 5.2、举例 6、通配符 6.1、什么是通配符 6.2、统配符解决了什么…

2017年五一杯数学建模C题宜居城市问题值解题全过程文档及程序

2017年五一杯数学建模 C题 宜居城市问题 原题再现 城市宜居性是当前城市科学研究领域的热点议题之一,也是政府和城市居民密切关注的焦点。建设宜居城市已成为现阶段我国城市发展的重要目标,对提升城市居民生活质量、完善城市功能和提高城市运行效率具有重要意义。…

正则表达式回溯陷阱

一、匹配场景 判断一个句子是不是正规英文句子 text "I am a student" 一个正常的英文句子如上,英文单词 空格隔开 英文单词 多个英文字符 [a-zA-Z] 空格用 \s 表示 那么一个句子就是单词 空格(一个或者多个,最后那个单词…

An example of a function uniformly continuous on R but not Lipschitz continuous

See https://math.stackexchange.com/questions/69457/an-example-of-a-function-uniformly-continuous-on-mathbbr-but-not-lipschitz?noredirect1

十七、事件组

1、事件组是什么 1.1、举例说明 (1)学校组织秋游,组长在等待: 张三:我到了李四:我到了王五:我到了组长说:好,大家都到齐了,出发! (2)秋游回来第二天就要提交一篇心得…

leetcode刷题详解五

117. 填充每个节点的下一个右侧节点指针 II 关键点:先递归右子树 画一下就知道了,画一个四层的二叉树,然后右子树多画几个节点就知道为啥了 Node* connect(Node* root) {if(!root || (!root->left && !root->right)){return ro…

针对操作系统漏洞的反馈方法

一、针对操作系统漏洞的反馈方法 漏洞扫描指基于漏洞数据库,通过扫描等手段对指定的远程或者本地计算机系统的安全脆弱性进行检测,发现可利用漏洞的一种安全检测(渗透攻击)行为。在进行漏洞扫描后,需先确定哪些是业务…

二叉树:leetcode1457. 二叉树中的伪回文路径

给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。 请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。 给定二叉树的节点数目…

SSD FTL 映射管理

映射的种类 根据映射粒度的不同分为如下几种 1.块映射 一个逻辑块(logical block)映射到一个闪存物理块(physical block) 优点是:映射表需要空间小,对大Block size顺序读写,但是对小尺寸数据的写入性能很差。因为即使…

基于改进莱维飞行和混沌映射粒子群优化算法(LPSO)-BP神经网络的时间序列预测模型

基于改进莱维飞行和混沌映射粒子群优化算法(LPSO)原理: 通过引入混沌映射机制,对其群体进行初始化,增加粒子群个体的多样性;然后在粒子群个体的位置更新公式上引入改进的莱维飞行机制,提高搜索精度,帮助粒…

重庆数字孪生技术推进制造业升级,工业物联网可视化应用加速

重庆数字孪生、5G、人工智能、物联网、大数据等新一代信息技术的出现及终端计算设备的发展,带来了研发模式、生产模式、消费模式、体制机制的系统性变革,企业应该建设适应工业4.0时代发展要求的新型生产体系。巨蟹数科数字孪生智能工厂通过部署多样化用例…

Java EE 进程线程

JavaEE 进程&线程 文章目录 JavaEE 进程&线程1. 进程1.1 概念1.2 进程管理1.3 PCB (Process Control Block) 2. 线程2.1 概念2.1 线程与进程的区别2.3 创建线程 1. 进程 1.1 概念 什么是进程? 进程是操作系统对一个正在执行的程序的一种抽象 我们可以打开…

Android 相机库CameraView源码解析 (二) : 拍照

1. 前言 这段时间,在使用 natario1/CameraView 来实现带滤镜的预览、拍照、录像功能。 由于CameraView封装的比较到位,在项目前期,的确为我们节省了不少时间。 但随着项目持续深入,对于CameraView的使用进入深水区,逐…

2006-2023年2月地级市城投债数据

2006-2023年2月地级市城投债数据 1、时间:2006-2023年2月 2、指标:省份、城市、证券代码、证券简称、债券简称、证券全称、债券初始面值单位元、债券最新面值交易日期20221231、发行总额单位亿元、债券余额日期20221231单位亿、起息日期、计息截止日、…

2018年10月9日 Go生态洞察:Go Cloud的Wire与编译时依赖注入

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

火柴棒等式

枚举 只要在保证等式正确的基础上判断火柴棒有没有用完就可以 因为数比较小,而且我不知道最大的等式中的数是多少,索性就设置为999了 还好对效率要求不大(doge) 要不然就得自己慢慢改最大数来试了 代码如下: #in…