标签:数据对象 处理 描述 抽象 一点 并且 定义 条件 选择
1.语录摘抄
(0) 关于变量名和复合过程
"一般而言,计算得到的结果都是非常复杂的,如果每次都需要使用它们,就需要记住并且重复的写出它们的细节,那会非常的不方便.实际上,构造复杂的程序,也就是为了进一步创造出越来越复杂的计算对象,解释器使这种逐步构造过程变得非常方便,因为我们可以通过一系列动作,逐步创建起所需要的名字和对象的关联."
"复合过程通过对过程提供名字,就可以把这样一个过程当成基本的单元来操作.过程定义应该可以隐藏细节.这样过程使用者可能不必要自己写这些过程,而是从其它程序员哪里作为一个黑箱接受它.用户在使用一个过程的时候,应该不需要弄清楚它是如何实现的"
(1)关于为什么需要定义立方这样的概念?(p37)
"如果我们总是针对每一个特定的数值进行执行立方的操作过程,并不明确定义立方这一过程.这样就把自己置在了一个非常糟糕的境地,迫使我们永远在语言恰好提供的基本操作的层面上(乘法)进行工作,而不能够基于更高级的操作去工作.我们写出的程序能够计算立方,但是所用的语言却不能够表示立方.人们对功能强大的程序设计有一个必然的要求,那就是能够为公共模式命名,建立抽象 而后直接在抽象的层次上工作.过程提供了这种能力."
(2) 关于高阶过程的思考?
"在研究复合过程的时候,将复合过程作为一种至关重要的抽象机制,因为它使我们将一般性的计算方法,用这一程序设计里的元素明确表示.现在我们看到,高阶过程能如何操作这些一般性过程,以便建立进一步的抽象.作为编程者,我们应该对这类可能性保持高度的敏感,设法从中识别出程序中的基本抽象,给予它们进行进一步的构造,并且推广它们进行更加高级的抽象.当然,这并不是说总要尽可能抽象的去写程序,程序设计专家们知道如何根据工作的情况,去选择合适的抽象层次.但是,能基于这种抽象去思考是非常重要的,只有这样才能够在新的上下文中应用它们.高阶过程的重要性,就是在于使我们能够显式地使用程序设计语言的要素去描述这些抽象,使我们能够像操作其他计算元素一样去操作它们."
(3)为什么使用复合数据?
"因为可以提升我们在程序设计时候所位于的概念层次,提高程序设计的模块性,提高语言的表达力,正如同构造复合过程可以让我们在更高的概念层次上处理计算工作一样,构造符合数据的能力,也将使我们得以在比语言提供的基本数据对象的更高的概念层次上,处理与数据有关的各种问题."
2.个人思考
程序设计就是从基本的元素,构造出复杂的代码,就像文学作品是文字一个个积累起来,交响乐是一个个音符形成,而绘画作品是颜料一点点的平涂.然而,越是宏大而作品,复杂性也会成倍增长,那么在这样的情况下如何来控制复杂性,使能够进行全局思考,又尽可能对细节做到无微不至呢?解决方案就是进行抽象,抽象实现了分层和模块化,能够让我们每次只关注一部分内容,而封装了其它部分的细节,这就为专注当下的思考提供必要条件,否则,因为太过于复杂的细节导致永远在做重复的和低级的工作,而无法进行高层次的思考,这样所导致的问题就是全局上方向性的误判,和细节上的种种漏洞,最终导致无可挽回的失败.一个优秀程序员本质的差别不在于对于一个语言的语法的熟悉程度,或者框架和模块的使用,当然这些无疑是重要的,假如要通过编程来实现功能.但是更重要的则是这里说的抽象能力.因为抽象能力代表了可以驾驭更加复杂的系统,这就是架构师了,负责一个小的模块是任何一个程序员的基本功,否则就无法自己的工作.但是,驾驭复杂系统掌控全局,却是这个行业中稀缺的能力,尽管我们一直说这个行业人太多了,但是对于这种人才,实际上还远远不够.
"不想当元帅的士兵不是好士兵".当然,不是每个人都可以当元帅,也不是当元帅,可以有功名利禄.所以要去当元帅,而是,有了可以自己掌控全局的机会,可以尽情的去实现自己的想法,这是非常与众不同的事情,人生的意义就在于自我潜能的开发和自我实现,但是假如不身临其境,潜能只能是潜能,永远会沉睡.对于程序员也是如此,应该有一颗成为架构师的心,而这里的最基础的一步就是首先要记住去做抽象,让你的代码更具有一般性,而后,不断地练习,直到可以做出合适的抽象.随着自我意识和能力的提升,最终你就可以具备驾驭复杂系统的能力,从而利用编程这个媒介,对世界发出你对于做某件事情的最强音.
"苟日新,日日新,又日新"
标签:数据对象 处理 描述 抽象 一点 并且 定义 条件 选择
原文地址:https://www.cnblogs.com/znn041622/p/12543675.html