- 浏览: 84573 次
-
最新评论
-
include:
我觉得,分层的好处在于,将一个复杂的问题映射到不同的问题域,每 ...
关于模块化 -
zhoubenke:
大哥能问你一个小问题不??
对于你来说是一个小问题
帮个忙好吧 ...
软件开发行业技术问题思考
文章列表
一直认为,契约是类型系统不可或缺的一部分,虽然现在的主流语言都缺乏它。我们知道,现在的组件都是隐藏其实现,公开其接口的。这为大型的复杂系统提供了必要的抽象机制,可是,现在的接口都是只描述了组件可以接受的消息类型(或者习惯上称作方法的签名),对于该组件在什么状态下可以接受该消息,该消息有什么要求和限制,以及组件对于该消息的响应是如何的都没有描述。这些是应该描述的。在支持契约的Eiffel语言中,它们被分别描述为 Precondition和Postcondition。契约不仅仅是一个类型安全的必要组成部分,它还是一个设计工具,可以借此理清各个组件的权利和义务等等关系。
近来突然感觉,契约这个东西可 ...
- 2006-10-15 17:38
- 浏览 1140
- 评论(0)
自从1970年NATO会议以后,软件工程这个词就正式进入了软件开发领域,并且占据了越来越重要的地位。不可否认,软件工程确实为软件开发带来了一些作用,但是软件工程的缺陷也是很明显的。其中涉及到好几个方面的核心问题,现在暂时无法解决。
第一个问题是人的问题。
人不是机器,虽然有时候经过比较严格的训练在某些时间段可以表现得跟机器差不多,但毕竟不是真正的机器,这就是说,人的输入和输出并不是恒稳的。这是软件工程没有办法解决的硬伤。
第二个问题是软件度量问题。
这个问题到现在为止,可以说根本没有一个实质性的解决方案。关于软件的复杂度,软件开发的工作量,开发中的软件的完成度,软件的价值等等方面,从来没有一个可 ...
- 2006-10-15 17:36
- 浏览 2022
- 评论(0)
针对这一行,主要是两方面的问题,一方面是软件开发行业内部的问题,一方面是软件开发行业外部的问题。
软件开发行业能够存在,主要是因为外部问题的存在。而由于软件开发行业的不成熟性,内部问题是现在该行业的主要问题。外部问题是该行业创造价值的地方,内部问题是该行业解决问题的地方。外部问题最终总是落实成内部问题解决掉的。有千奇百怪的外部问题,但是内部问题确是有限的。所以计算机科学研究的总是内部问题。
该行业的内部问题主要分成基本算法问题,资源管理和分配问题,运行环境问题,各种特定媒体的编解码问题,网络通信问题,IO和人机交互问题。它们各自落实成计算机行业中非常出名的几门课程,例如OS,DB等等。
值 ...
- 2006-10-15 17:34
- 浏览 2722
- 评论(1)
Ajax是为了应对让人不耐的WebApp的高延迟而搞出来的一套技术框架。
原始的WebApp的Browser和Server是串行运行的,一边工作时,另一边等待。这浪费了整个系统的运算能力。Ajax在Browser端引入一个执行引擎,它一边应付user的请求,一 ...
- 2006-10-15 17:32
- 浏览 1796
- 评论(0)
上回书说到可执行文件的格式,这一节详细描述一下。
可执行文件是由头和体组成的。这跟别的复杂一点的文件一样。它的体分成一些叫做节(section)的东西,这是它的特色。另外比较有特色的东西是:我们一般把可执行文件 ...
- 2006-10-15 17:28
- 浏览 2397
- 评论(0)
这是该系列的第二部分。
上次说道,OS主要分成计算的管理,存储的管理和IO的管理,其中,计算的管理从OS的角度来看是最重要最根本的。
注:我们暂时不考虑并发。
我们现在要从一个动态的角度看问题了。基于程序存储+图 ...
- 2006-10-15 17:27
- 浏览 1699
- 评论(0)
对操作系统的研究已经很久了,一直以来比较喜欢这方面的东西,从现在开始,我要把我所了解的OS的各个方面一一描述出来。基本的描述风格事先抽象后具体,先轮廓后细节。
OS其实是一个大家都知道一些的概念。但是我说得 ...
- 2006-10-15 17:25
- 浏览 1649
- 评论(0)
抽象:抽象就是有选择的忽略。至于为什么要忽略,忽略什么,这个是由人选择的:)。抽象的用处在于处理复杂性。人类处理复杂性的基本方法就是抽象,有意的忽略某些从这个角度看过来无关大局的东西以求得整个系统的简单和清晰。抽象是因人而异,因角度而已,因层次而已的。抽象可以分层。也就是说抽象地输入也可以是抽象而不是实体。抽象并不是完全相同的,甚至可以说,对于不同的人,抽象一般是不同的。
虚拟:恩,这个概念比较复杂,原始的意义是非真实的。虚拟一般是概念世界里的实体。由于概念分为内涵和外延两个层面,外延表示物理世界里的实体,而内涵总是对外延的归纳和抽象,说到概念,我们一般强调的是概念的内涵。从这个角度说,概念本身 ...
- 2006-10-15 17:25
- 浏览 1114
- 评论(0)
为了让叙述简化,先定义几个用到的术语:
函数:可以给出输出的那种抽象体,变量可以认为是无参数函数。对于成员函数或者更习惯的叫做方法的那种函数,我认为它就是隐含了对象参数的函数。
类型系统是现在OO语言的核心和基石。类型系统是保证正确性的基础,现在的编程语言大多强调静态安全性,其实就是编译时类型正确性。动态类型系统对应着运行期类型检查,保证运行时的类型正确性。经常所说的安全性其实就是类型正确性。
类型转换是对类型系统的公然藐视。它不是安全的。可能会引入很多问题。有时候,我们可能会觉得需要类型转换,但是那是错觉,我们可以定义一个函数,接受某种类型的对象,返回另一种类型的对象。所以类型转换是不必 ...
- 2006-10-15 17:22
- 浏览 2216
- 评论(0)
C没有抽象数据类型的能力,C++支持ADT,同时支持OO,而且还是多继承的OO,同时支持接口继承和实现继承。
所以引出一大堆问题和冲突。
其中最主要的是关于初始化的问题。
我们知道,C/C++严格区分初始化和赋值,很多人觉得挺奇怪,初始化不就是初次赋值么?呵呵,似乎就是,又似乎不是。初始化是在定义的时候赋值。
那位说了,这有啥好处?这涉及到一个程序状态正确性的说明性方法的问题。具体的说:就是涉及到断言的问题。
断言一般分为三种,静态断言、动态断言和不变性断言。所谓静态断言就是论断静态情况下成立的那种断言,初始化就是明显的静态行为。动态断言就是论断程序动态行为中符合的断言,典型的例子就是 ...
- 2006-10-15 17:21
- 浏览 1514
- 评论(0)
C++使用::运算符搞定很多东西,其中最基本的一个用处就是用来决议多继承中的重名成员。::运算符的本质是:左操作数是一个scope,右操作数是这个scope内的名字,可以是scope,class,member或者function,variable等等,从左操作数指定的scope中找到有操作数这个实体。看起来非常优雅,不是么?可是,它有好几个缺陷。
一、现实的常见的缺陷。分散在代码中,一旦改变会引起很多地方同时都需要改。其实这就是决策不能集中作出的一个典型现象。
二、理论上的缺陷一。它丧失了虚拟性也就是多态性。这个问题说小也小说大也大,如果你就想静态调用,那么ok,非常好。如果我们需要多态性,那么 ...
- 2006-10-15 17:20
- 浏览 3555
- 评论(0)
先从基础概念说起。
模块就是一组相关的实体的集合。该定义如此的简练以至于含糊不清,不过该概念非常强大,整个软件开发行业都是因为引入了该概念而充分发育起来的。比如我们常说的模块化什么的。
进一步的说,模 ...
- 2006-10-15 17:18
- 浏览 1785
- 评论(0)
在C中,尤其是C++中,= 0是一个非常常见和奇怪的语法之一。
0,在基本的上下文中被评估为int型的整数字面值,这个是最容易理解的。它能够被读.不能够写。就算用它赋值给浮点数,也是整数字面值并加上类型转换完成的。同 ...
- 2006-10-15 17:17
- 浏览 1638
- 评论(0)
在 lambda 演算中,每个表达式都代表一个只有单独参数的函数,这个函数的参数本身也是一个只有单一参数的函数,同时,函数的值是又一个只有单一参数的函数。函数是通过 lambda 表达式匿名地定义的,这个表达式说明了此函数将对其参数进行什么操作。例如,“加 2”函数 f(x) = x + 2 可以用 lambda 演算表示为 λ x. x + 2 (λ y. y + 2 也是一样的,参数的取名无关紧要) 而 f(3) 的值可以写作 (λ x. x + 2) 3。函数的作用 (application) 是左结合的:f x y = (f x) y。考虑这么一个函数:它把一个函数作为参数,这个函数将被 ...
- 2006-10-15 17:16
- 浏览 1428
- 评论(0)
公理集合论是19世纪末康托尔创立的。由于罗素悖论及一系列别的悖论,使得原始的朴素的集合理论被迫采用数学中最常用的办法——公理化方法——来避免悖论。我们来看看维基百科上怎么描述集合公理:
1. Axiom of extensionality: Two sets are the same if and only if they have the same elements.
2. Axiom of empty set: There is a set with no elements. We will use {} to denote this empty set.
3. Axiom of pa ...
- 2006-10-15 17:09
- 浏览 1695
- 评论(0)