既然传统的计算机空间存在问题,那么如何设计新的计算空间形式?这里有几个必须考虑的因素:运行效率,支持进程、线程、对象,存储结构等,基于这几个因素,采用简单的进程空间内的函数分段模式。以前的x86设计有任务段,这个任务段可以支持当任务切换时,自动保存任务的寄存器等数据,在一个任务内,他不能保存函数切换时的栈地址、堆地址,对函数调用的栈溢出也不能防范,而且在开发操作系统时段模式也没有得到很好的使用,如windows操作系统的程序进程各段都一样,没有分出各种内存空间段,这样用户程序事实上可以存储任何数据包括指令部分。因为这种不明确的分段模式,造成程序员在编程时不认真规划数据结构,指令与数据混在在一起,内存经常违规存取、超界、溢出。如果当初设计函数调用功能时,设计出可以让函数自身方便管理的函数段模式就不会出现这种弊端了。
另外由于计算机内存事实上是一种线性结构,他的内存单元是按照地址存取的,相邻内存单元的地址相差一个固定值,这种内存结构可以方便存取,但必须为各种数据精心安排内存单元数量,并让指令按内存单元地址存取数值。这样的设计对于机器运行效率很高,但对于编程人员来说是一种负担,必须时刻保证数据内容地址的正确性,否则计算出来的数据可能是错误的。
为了方便程序员编程方便,web应用程序的函数空间数据不用地址存取,直接用数据的标号存取,这样程序员不用在费神去计算数据地址,也不用去动态安排数据空间。如
乔布斯=“伟人”
QQ=“山寨集成”
…
乔布斯 与 QQ 两个数据在函数空间直接用数据标示就可以存取了,不存在数据地址,程序员也根本没有办法找到数据的地址。Java语言号称消灭指针,但语言中还再用 new 来分配数据空间,他只能是一个表面没有地址而内部有地址的语言设计,而javascript 语言在数据空间设计中比java更加超前,也直接用符号来存取数据,程序员再设计javascript脚本时,就完全不用考虑数据空间的问题(不过,现代的编译器非常厉害,在动态编译javascript脚本时,可能会用真实的地址去代替符号的访问方式)。
总结上述,为web应用程序及操作系统设计的空间为开发效率、多任务运行的需要,简化了日常程序语言开发中的各种数据结构,采用分段式的函数空间组成进程空间可以满足web应用程序开发设计的需要,后面将论述web应用模型。