终于明白为什么初学 依赖注入 时,总是搞不清依赖的意思

2021-01-12 17:55:35 +08:00
 BeautifulSoap

以前第一次接触依赖注入时,看着各种介绍文章介绍 “依赖” 这个词的意思,总是处于那种虽然看得懂讲了什么,但是总感觉有点懵的状态,虽说之后也是理解了,但对这种曾经和别人的隔阂感总是有种奇怪的感觉

最近在整理知识写文章的时候才猛然发现到底是什么原因,原来这是个语文或者中文表达的问题

因为在中文里(这里指普通人或者第一次接触依赖注入这类概念的人), 依赖 这个词是个动词,即 A 依赖 B,或者作为名词的时候用法也是非常固定的 A 对 B 有依赖 这种句式

但是依赖注入中,依赖 这个词的意思是反过来代指对 A 有依赖的那些项目。用这种意思来做表述的话就是: A 的依赖是 B 。这种用法是普通的中文表述中是非常奇怪的也几乎见不到的,这也就导致初期的理解会变得有一定困难。更加正确的说法我觉得应该是 依赖项A 的依赖项是 B

然后我想了下,会出现这种问题的原因可能还是出在翻译上,英文叫 Dependency Injection,就这么直接粗暴翻译下就是依赖注入。可是 DI 这个词中的 Dependency 对应到中文里比较合适应该是 依赖项 这个词,也就是说是 依赖项注入。这方面可以参考下日语中对 DI 的翻译: 依存性の注入 ,有把这部分意思翻译出来。

这次的发现虽然是非常小的事情,但让我再次加深了下面两条的理解:

  1. 翻译真的很难,一个好的翻译有时候真的能降低理解概念的门槛

  2. 一个人一旦学会了某个知识,就无法想象这个知识在不会的人心里是怎样的。比如这次,懂了依赖注入概念的人可能很多人都没有意识到,在不懂这个概念的人眼里,“依赖”这个词是有一定理解障碍的。这也提醒我,在写文章或者教别人的时候,需要更多站在不懂这个知识的人的角度来思考怎么传达自己的知识

3095 次点击
所在节点    分享发现
22 条回复
johnsona
2021-01-12 17:57:40 +08:00
注入依赖
killerv
2021-01-12 18:02:27 +08:00
是的,翻译是很重要的,参考“鲁棒性”
wangxiaoaer
2021-01-12 18:06:32 +08:00
你想多了,在 DI 这个语境下,依赖是个名词。
feather12315
2021-01-12 18:07:24 +08:00
…从来没感觉依赖这个词难理解过,倒是初学编程时候,对递归不理解。
表达的是:每个人对词汇的理解难易是不同的,这东西没法强行统一。
我倒觉得依赖项更难理解。
fiveelementgid
2021-01-12 18:09:49 +08:00
DI 啊,我一开始也看了半个月才看懂,加油咯
BeautifulSoap
2021-01-12 18:14:43 +08:00
@wangxiaoaer
我顶楼里可没说过 DI 里的“依赖”不是名词,只是 DI 里依赖的用法在普通中文里不怎么见到
EPr2hh6LADQWqRVH
2021-01-12 18:19:25 +08:00
所以说大学生过四级很重要啊,四级不过怎么搞懂外面进来的这些东西呢
BeautifulSoap
2021-01-12 18:25:46 +08:00
@feather12315 我觉得还是能评判的,把这词汇和解释做一定的给不懂或没接触过的人看,问他们是否能大致理解或理解起来有没有负担就行了

我上面有提到过,一个人一旦学会了某个知识,就无法想象这个知识在不会的人心里是怎样的。这也是很多人不擅长教人知识的原因。“这知识你怎么就是不懂!这么笨!” “这定律怎么就不理解!” ,在我教过一些人之后这就是我最大的感悟,教人这事真的是需要训练和多站在不懂的人的角度来考虑的。可能这也是为什么好多大学教材写得让人感觉不是人话的原因吧
BeautifulSoap
2021-01-12 18:28:17 +08:00
@fiveelementgid @avastms
是的,我之前学 IoC 、DI 、DIP 的时候真的就是后来直接跑去看英文的 wiki 和相关引用的文章,才算有了一定的理解
fiveelementgid
2021-01-12 18:32:13 +08:00
给你一个 asp.net core 的文档里的:DI 实际用于在一个管理系统中标注一个 interface 和与他对应的 class,当你在 constructor 使用这个接口的时候他会给你创建一个对应的 object (也称为 constructor injection)
fiveelementgid
2021-01-12 18:33:03 +08:00
@BeautifulSoap emmmmmm 我英语也不好,建议你丢掉中文文献,多看看就会了
lidlesseye11
2021-01-12 18:43:26 +08:00
手动点赞
要翻译首先得中文水平牛逼,其次得能理解原作者想表达的思想,第三得用心推敲。
国内目前还没见到过的不错的译者。
yeqizhang
2021-01-12 18:47:39 +08:00
nice,java 里通常就是说属性值的注入...
lxilu
2021-01-12 21:57:31 +08:00
注入依赖 +1
liyaoo
2021-01-13 08:35:58 +08:00
是的,开始我也理解为动词,就很懵逼
ninja543
2021-01-13 08:52:38 +08:00
日语理解哈哈哈,其实看英文文献带两本字典就够了,英英和英日,便于理解
SmiteChow
2021-01-13 11:13:37 +08:00
翻译是否准确还需要对照原文看,如果不看原文是不能下结论的。

依赖注入通常来讲需要编程序言支持反射机制( reflection ),通常由框架( framework )在运行时动态获取用户代码元信息( code meta )。

但随着语言特性的发展,解包( destruction )成为了新的更加简洁的实现方式。
SWALLOWW
2021-01-13 15:39:44 +08:00
就是中文,道地性你们能理解吗
no1xsyzy
2021-01-14 09:44:06 +08:00
@lidlesseye11 不局限于纯粹技术内容的话,随想散文和小说都有翻译做得不错的……
应用文翻译更难(需要对这方面技术有了解?)?
还是说应用文跨语言比较容易,翻译的收益不是很大?

@BeautifulSoap 你主题里的解释太复杂了
简单地说,就是你理解为
〔动〕〔宾〕
依赖  注入
而其实这个词是
〔偏〕〔正〕
依赖  注入

另外,“注入依赖” 是动宾结构的动词性短语,但结合了中文动词当名词的用法,确实本土化。
尤其是当放在介词后面的时候,动宾结构会自动地被当作介宾结构的宾语(“通过注入依赖”)。
BeautifulSoap
2021-01-14 10:22:34 +08:00
@no1xsyzy 并不是的,我虽然没法从语法角度来阐述,但是我的想法是:

1. 依赖作为动词理解的话 依赖(动)注入,会让人理解成:xxx 依赖注入这项技术,自然这是不正确的,而且也会让人费解

2. 依赖在动词之外还有种名词化的用法,但是这个时候的用法是非常固定的,类似 我对你的依赖;你是我的依赖。如果将其“依赖注入”中的依赖理解成名词这种意思,那么理解出来的意思就是: 在 A 中注入对 xxx 的依赖。虽然这句式看起来和依赖注入的意思——在 A 中注入它所依赖的 xxx 非常像,但是意思却是完全不对的

我在学习依赖注入的时候,主要是陷入了第二种的理解偏差中

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

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

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

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

© 2021 V2EX