系统 跨领域的、综合性问题的解决方案开发者用户特点语言类型类型泛计算领域中应用开应用程序设计语言的某个或某一发工程Application类用户Programming Languages师多领域的计算 系统工 系统程序设计语言需求,以及多程师System ProgarmmingLanguages种类型的使用用户开发行为开发(续)规模例举MS Office;自动化办公构建Erlang通用操作系统在继续讨论之前,我们先来明确一下将要讨论的对象。
首先,我们要讨论编程(programming),一些场合中也被称为程序设计(programdesign)。可惜在不太严格的场合下,几乎所有编写软件的活动都被称为程序设计——这是相当可怕的事实。因此,必须明确地对它做一个定义,即我们用程序设计来特指在功能与程序这两个级别上编写软件。相应地,我们将其后的两个规模分别称为应用开发与系统构建,这也将是我们后续要讨论的话题。
这几类活动有着显著的区别。程序设计主要应对计算要素问题,产出是一般含义上的程序;应用开发主要应对程序组织问题,产出是有产品化概念的软件;系统构建主要应对跨领域问题,产出是可持续进化的系统——例如平台,
但凡与计算机有些关系的领域中,总会有人通过编写一些代码、脚本或批处理来解决问题。这些工作大体上也包含了我们此前讲到的种种计算要素。但是这些只能算作编程,它并不等同于我们在这里谈论的程序设计,它是后者的一个初级阶段。学院式的编程是一种狭义的、升级版本的编码工作,而作为一个软件工程师,程序设计才是我们的必备技能①。
奠定我们如今主要的程序设计方法的那些基础理论和思想,在上个世纪的七十年代就已经成熟了。也正是从那之后,程序设计才从编码工作中脱离出来,成为一个有意义的、独立的名词。接下来的讨论以Djkstra的论述为基点,包括:“计算的结构化s(f)”和“数据的结构化s(d)”两个方面,并且二者存在伴生的关系。
①我这样分类的很大一部分原因在于:有必要将整个软件开发、程序设计阶段需要完成的工作,纳入到我们的讨论范畴。yipindushu.com
我们应该已经知道:抽象含义上的数是没有类型的。当我们讨论某种数的时候,即是在讨论某一类型的数,而非数的全部。而我们之所以分出这个数的型别,是指该类数具有相同的性质,例如整数可以由1不断复合。同样,数据既然是数的系列,则数据的型别(即数据类型,Data Types)可以理解为系列性质的不同,亦即通过何种系列的抽象来分类数据。何种系列的抽象,即是数据结构①?。
①数据结构与数据类型,前者是方法本身,后者是方法的表示。大多数情况下,也不妨将它们认为是同一个东西。
②《结构程序设计》的第二篇中,作者霍尔(C.A.R Hoare,1980年图灵奖获得者)采用数学定义的方式来说明数据类型:设已知有限个的数,称其每一个为基数,所有基数的集合则为基型;由已知类型—-含已知结构型和已知基型——构成的类型叫做结构型。基型的构造成分唯一,也因此它被称为非结构型,它或是计算环境提供的,例如WORD与BYTE;或是程序员定义的有限个数,例如枚举。综上,(数据的)结构是一个过程,或称之为结构化。
所谓“排排座,吃果果,冬冬不在留一个”的故事大概是这样的:小朋友们排成一排或者许多排,然后老师给每个人发一个水果。之所以要先排排座,既是教大家规矩,也是避免老师发漏了或者发重了。大体上,我们的记忆里总会有这么一两个吃果果的场景——老实说,我现在看起来是在讲一个相当无聊的故事。
如果有一个有限大的空间用来放数据,我们能不能也将该空间规划成座位,然后将数据分发上去,从而使得每个局部空间上都有东西(或者还没有,就“留一个”)?这个问题之所以有讨论的必要,是因为只有我们将所有要处理的数据信息都放到计算机可以识别的环境中,计算机才能开始履行我们要它做的事情。
总的来说,我是在讲一个乏味的故事。但在计算机本质的抽象上,的确就是如此乏味。更为“生动”一点的叙述大概是这样:(1)我们要将所有的数据顺序地放到空间里去;(2)我们要考虑局部空间上有与没有数据这两种情况。
版权声明
本站素材均来源与互联网和网友投稿,欢迎学习分享
【节数以及对数据的性质的思考13:http://www.yipindushu.com/xuexifangfa/16447.html
推荐文章
09-13
1 让你在欢笑中充满正能量的语录!09-11
2 处暑俗语09-11
3 尘光私语09-13
4 构建人类命运共同体的正能量语录09-11
5 城市宣传推广用语