1
Need4more 43 天前 ![]() 在数学和运筹学中,“Programming”一词的核心含义是**“规划”** (或“计划”)
Linear Programming → 线性规划(而非“线性编程”); Integer Programming → 整数规划; Nonlinear Programming → 非线性规划。 DP 的发明者是美国数学家理查德·贝尔曼( Richard Bellman ) ,他在 1950 年代为解决多阶段决策过程 的优化问题提出了这一方法。 翻译到中文这边,都遵循“Programming = 规划”的逻辑,因为它们本质是优化方法,而非计算机编程。 话说研究算法的本来就是搞数学的那批人吧,现代人学习算法可能跳过了数学知识。 |
2
TWorldIsNButThis 43 天前 via iPhone ![]() 说个题外话
计算机作为新学科,其实是没多少术语的,都是从日常用语里找个词就用了,除了少数几个借词 比如 polymorphism 和函数式编程从范畴论里搬了一堆的概念,不像医学之类的老学科有一整套词根造词 stack 就是一叠 heap 就是一堆 string 就是一串 thread 就是织布机上纺织用的线(所以理解为什么 1 、java 做 virtual thread 的项目叫 project loom 2 、有栈协程又被称为 fiber 纤维 了吧) handler 就是把手 memory 就是记忆 所以对于母语是英语的人看编程里的这些词和母语是中文的人看什么栈堆字符串线程句柄内存完全是两个画风 |
3
w568w 43 天前 ![]() 我一直觉得 Dynamic Programming 这名字起得很诡谲。
先不说 Programming 单词的误导,Dynamic 也很意义不明:为什么就管这个算法叫「动态」?难道其他算法(比如搜索)不是动态的? 我觉得还是叫「记忆化搜索」( Memorized Search )比较好。既避免发明新词,又能触及 DP 的本质。 |
4
kneo 43 天前 ![]() 这是个算法。
你要是真学习过,就不存在被名字误导。 你要是没学习过,不误导你也不会。 只有在做选择题的时候,瞎蒙发现蒙错了,才会:哦,被”误导“了。 或者在和别人聊天的时候,不懂硬聊,发现这个逼不是自己能装的。 你帖子里的这位竞赛选手花了一年,是在”掌握“这个算法,不是因为理解不了这个名字。至于他说”内存分配“,只是对”外行“的揶揄。就像你亲戚以为你是修电脑的。 |
![]() |
6
joinmouse OP @w568w
这个文章中有详细的介绍,美国数学家理查德·贝尔曼( Richard Bellman )为什么起名叫这个,有一部分当时政治因素,可以直接看最后的一段 https://www.vidarholen.net/contents/blog/?cat=23 |
7
mayli 43 天前
@w568w 数学上 programming 同义词是 optimization ,中文叫最优化,或者优化,或者规划,计算机早期都是数学借过来的一些学科。
数学名词都太抽象了。 |
![]() |
8
joinmouse OP @Need4more 是的,学这些相关算法的人可能还是以学编码的为多,可能也有一种知见障。帖子的主题就是: “Dynamic programming” is not referring to “computer programming”,可见这个“programming”在很多编程者眼中是很容易理解成计算机的编程
|
![]() |
9
joinmouse OP @TWorldIsNButThis 哈哈哈,其实我也认为很多专有名词中文翻译的很牵强,会让人很困惑。不过名词只是一个概念,有时候适当的忽视这种概念去理解可能会更好
|
10
w568w 43 天前
@joinmouse #6 这个小插曲我确实有所耳闻的。所以 DP 其实是用来糊弄不懂编程领导的大词,背后并没有深思熟虑的词义,流传下来就挺没品的。就像 robust 翻译成鲁棒一样,都是一拍脑门的结果
|
11
kneo 43 天前
@joinmouse > 帖子的主题是 “Dynamic programming” is not referring to “computer programming”
HN 上那个主题,没毛病。 HN 上的 comment ,也没毛病。 但是你这个帖子: > 国际信息学奥林匹克竞赛( IOI )的金牌选手也描述自己花了一年时间才想明白这里的"dynamic programming"到底是什么 我认为是相当强烈的误导。结合你的标题“给老外带来的误导”和这句话之后的“会给人带来多少不必要的误导”,好像让人以为这位选手因为把“动态规划”当成了“动态的编程”浪费了一年的时间。 你肯定会说这不是你的本意。我也只说这是一个误导。 |
12
kneo 43 天前
@kneo 我又看了下后面,这个人花了一年时间原来是因为那个年代没有教材,所以他真的不知道 dynamic programming 是什么意思……只能说这东西不学是真不会。
|
![]() |
13
geelaw 43 天前 via iPhone
@w568w #3 为了应付管钱的人起的,dynamic 充满了正面与积极的色彩。
另外那个东西的英文叫做 memOIzed search 不是 memORIzed search ,字面翻译叫做“备忘化搜索”,memoize 是 memo(randum/-a) 备忘录 + 化。当然,记忆化和备忘化意思差不多就是了。 |
![]() |
14
realpg PRO 研究高阶算法的本来就是学数学的主场
现在的行业内有大量计算机的在搞 但凡数学到一定程度就不会认为 programming 是编程的意思 |
![]() |
17
CJ2r4u3EH4lrM7aR 42 天前 via Android ![]() 靠,鲁棒性用了这么多年我说啥了吗?还惯着他了
|