程序 = 数据结构+算法
几乎所有学过计算机的人都知道这个公式,但是为什么会有这样一个公式?这个公式对吗?程序是什么?数据结构是什么?算法是什么?为什么能够组合在一起这么表达?我希望在这里能给大家讲清楚。
程序本身可以认为是对这个现实事物的一个模拟。它之所以能模拟世界,就是因为它具有数据结构和算法。数据结构是静态的,只表达了数据之间的位置关系。算法是动态的,因为算法的定义里面很重要的一条就是“可执行”。算法弥补了数据结构的不足,它可以比较数据,修改数据。因此数据结构的静态性和算法的动态性是互补的,它们组合起来形成的表达力是无穷的。表达力是什么?我认为,A的表达力,就是所有能够抽象为A的事物。比如数字5的表达力,5只狗,5只猫,5头牛,都可以用5来表达。但是5不能表达6只狗,6只猫,6头牛,更重要的是5不能表达“从5增加1变为6”的过程。数据结构和算法就不仅可以表达数字还可以表达数字的加减,突然间你会发现数据结构和算法不能表达什么,其实还是有的。