程序=数据结构+算法
以上的公式是常用来解释程序到底是什么的一种,虽然不完全准确但也概述了程序是什么。数据结构用生活来打比方的话,相当于思想或思维,算法是具体实施的行为。
算起来也写了一段时间的程序了,越来越感到数据结构的重要,但还是想吐槽一上来就学基础的教学方式是一种反人类的方式:舍本逐末的方式,学开车上来先学汽车是怎么制造的、怎么动起来的;学电脑先学电脑底层怎么工作的原理。
难道人类自古以来正确的使用工具方式不是先用工具,如果要深入研究时再去理解其原理吗,非实用的和不结合实际的学习真是不可理解。
以上是一些关于应试教育所带来问题的个人想法,因为我学习编程最开始对于数据结构接触并不是很多,接触的都是最常用的,要是是一开始就死扣数据结构,我不感觉有很大的可能我现在不是从事编程这个事情。
到底是脚决定大脑,还是大脑决定脚(思维决定行动,还是行动决定思维),在我看来应该是相互的,实践中我们会生产出更好的思维,更好的思维让行动可以持续。
程序分为大中小型程序,而对于维护不同级别的程序所需要的工程人员也是不同的,数据结构就是来规定这个的,对于小型程序来说,数据结构应该尽量的简单,同时要留有扩展余地。因为是小型的,用来维护这个程序的资源是有限的,但也可能是因为有限的资源决定这个程序一开始要是小型的,如果一个小型的程序数据结构设计的复杂,程序语言里把这种行为叫做过度设计。
放在生活中,过度设计大概就是这样一个故事:一个人想吃鱼,于是造了船,造船需要木头和造船的技术,于是这个人就去学怎么造船和砍伐木头,船造好了又想鱼打回来得储存,于是又去造储存鱼的仓库,几年过去这个人还是没吃到鱼。那么这个人为什么一开始不去买条鱼呢?或者因为没鱼可以买的话也需一个钓鱼竿就可以解决他想吃鱼这个目的了。
虽然以上这个故事在现实生活中可能没有发生过,但有些时候我们却真实做着类似的事情,只是身在局内而看不到。
数据结构不仅仅会引发过度设计问题,同时在使用不恰当时引起整个程序难以维护和扩展。在设计数据结构时有两个极端:太简单和太复杂。
太简单
太简单的数据结构设计,往往是要什么给什么,这种设计在应对新的需求和变更时往往是不断在原来的数据结构中增加新的结构给予应对,最终结果就是数据结构臃肿的难以维继。
生活中用一句老话描述的话应该是:算盘珠,拨一下,动一下。孩子常常是这种行为模式,因为他们思想简单,考虑问题不全面。
太复杂
太复杂的数据结构设计其实比简单更是灾难,因为太复杂的数据结构设计让整个程序庞大,这就需要庞大的工程资源去维护,一处更改引起几处不期望得到的变动,这种复杂的数据结构在应对新的需求和变更时,开发周期漫长,维护难度巨大,成本上是昂贵的,而且太复杂的数据结构设计,很少有人能知悉全部总体的程序逻辑与结构,这样的数据结构一旦在某个重要衔接部分出现问题,所要调动的资源是巨大的,且这种资源调动也不一定能解决问题。
生活中这种行为典型例子,就是瞻前顾后以及组织机构臃肿,思前想后而不能决定到底该如何行动,互相扯皮推诿使事情。
数据结构的设计也是需要平衡的,平衡的数据结构能够让程序健壮,生活也是需要平衡的,平衡的生活是获得幸福感的关键。
偏方制白癜风北京白癜风介绍