知识卡片

算法是抽象的,与其表示相互独立

专业/工作 · 1289.a

内容

算法本身是抽象的概念实体,与承载它的具体表示是两回事——就像一个故事和讲述这个故事的某本书的区别:把书翻译成另一种语言或换一种版式出版,故事本身没有变。摄氏转华氏的换算既可以写成代数公式,也可以写成自然语言指令,还可以做成一个电路,三者表示形式不同,底层算法完全相同。这也让[[算法程序软件硬件的关系]]和[[进程是程序的动态活动,而非程序本身]]这两个概念完整地串联起来:算法是抽象的过程,程序是算法的一种具体表示,进程则是执行这个表示的动态活动。发散:这个三层区分解释了为什么”换一种语言重写同一个程序”通常不改变程序的本质行为——变的只是表示层,只要底层算法一致,用 Python 还是用 C 实现同一个排序逻辑,产出的排序结果理应完全相同。

参考来源

《计算机科学概论》第5章《算法》