一、算法 + 数据结构 = 程序

程序=数据结构+算法是由N.Wirth(沃斯)提出来的。

程序是计算机指令的某种组合,控制计算机的工作流程,完成一定的逻辑功能,以实现某种任务;

数据结构指的是数据与数据之间的逻辑关系。具有两个层面上的涵义--逻辑结构和物理结构;

算法指的是解决特定问题的步骤和方法。是程序的逻辑抽象,是解决某类客观问题的数学过程;

二、堆栈=堆+栈

堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。

堆栈是一种存储部件,即数据的写入跟读出不需要提供地址,而是根据写入的顺序决定读出的顺序

堆的特性-低地址-值类型

1、顺序随意

2、堆可以被看成是一棵树,如:堆排序

3、一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表

4、堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定,通常是用来存放对象,调用这些对象的速度要相对来得低一些

5、堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便

6、堆的大小受限于计算机系统中有效的虚拟内存,堆获得的空间比较灵活,也比较大

栈的特性-高地址-引用类型

1、后进先出(Last-In/First-Out)

2、由编译器自动分配释放 ,存放函数的参数值,局部变量的值等

3、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放

4、栈由系统自动分配,速度较快,但程序员是无法控制的

5、存在栈中的数据可以共享

6、栈顶的地址和栈的最大容量是系统预先规定好的,如果申请的空间超过栈的剩余空间时,将提示overflow,栈获得的空间较小。

    

三、编译器、编辑器、解释器

编译器

1、编译器就是将“高级语言”翻译为“机器语言(低级语言)”的程序

2、编译器源程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。

源代码一般为高级语言 (High-level   language), 如Pascal、C、C++、C#、Java等,

目标语言则是汇编语言或目标机器的目标代码(Object   code),有时也称作机器代码(Machine code)。

编辑器

1、编辑器是软体程序,一般是指用来编辑电脑文档案的编写软件。例如:Microsoft Word

解释器

1、解释器是能够执行用其他计算机语言编写的程序的系统软件,它是一种翻译程序。它的执行方式是一边翻译一边执行,因此其执行效率一般偏低,但是解释器的实现较为简单,而且编写源程序的高级语言可以使用更加灵活和富于表现力的语法。但是相对的这个直译的行为会比编译再运行来得快。

2、解释器运行程序的方法有:

1).直接运行高级编程语言 (如   Shell 自带的解释器)

2).转换高级编程语言码到一些有效率的字节码 (Bytecode),并运行这些字节码(如:Ruby)

3).以解释器包含的编译器对高级语言编译,并指示处理器运行编译后的程序(如:JIT)

四、JAVASCRIPT=ECMA+DOM+BOM

1、JavaScript是什么

JavaScript 是一种具有面向对象能力的、解释型的程序设计语言。更具体一点,它是基

于对象和事件驱动并具有相对安全性的客户端脚本语言。因为他不需要在一个语言环境下运

行,而只需要支持它的浏览器即可。它的主要目的是,验证发往服务器端的数据、增加 Web

互动、加强用户体验度等。

2、JavaScript 特点

1)、松散性

JavaScript 语言核心与 C、C++、Java 相似,比如条件判断、循环、运算符等。但,它

却是一种松散类型的语言,也就是说,它的变量不必具有一个明确的类型。

2)、对象属性

JavaScript 中的对象把属性名映射为任意的属性值。它的这种方式很像哈希表或关联数

组,而不像 C 中的结构体或者 C++、Java   中的对象。

3)、继承机制

JavaScript 中的面向对象继承机制是基于原型的,这和另外一种不太为人所知的 Self 语

言很像,而和 C++以及 Java 中的继承大不相同。

3、JavaScript 历史

1997 年,JavaScript 1.1 作为一个草案提交给欧洲计算机制造商协会(ECMA)。第 39

技术委员会(TC39)被委派来“标准化一个通用、跨平台、中立于厂商的脚本语言的语法

和语义”。由来自 Netscape、Sun、微软、Borland   和其他一些对脚本编程感兴趣的公司的程序员组成的 TC39 锤炼出了ECMA-262,该标准定义了叫做   ECMAScript 的全新脚本语言。

4、JavaScript 实现

尽管 ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的部分,当然,也不是唯一被标准化的部分。实际上,一个完整的 JavaScript 实现是由以下 3 个不同部分组成的:

•   核心(ECMAScript)

•   文档对象模型(DOM)

•   浏览器对象模型(BOM)

ECMAScript 描述了该语言的语法和基本对象;

DOM 描述了处理网页内容的方法和接口;

BOM 描述了与浏览器进行交互的方法和接口;

五、ECMAScript

ECMA-262 标准:

ECMAScript 可以为不同种类的宿主环境提供核心的脚本编程能力,因此核心的脚本语言是与任何特定的宿主环境分开进行规定的

Web 浏览器对于 ECMAScript 来说是一个宿主环境,但它并不是唯一的宿主环境。事实上,还有不计其数的其他各种环境(例如 Nombas 的 ScriptEase,以及 Macromedia 同时用在 Flash 和 Director MX 中的 ActionScript)可以容纳 ECMAScript 实现。

ECMAScript 描述了以下内容:

•   语法

•   类型

•   语句

•   关键字

•   保留字

•   运算符

•   对象

ECMAScript 仅仅是一个描述,定义了脚本语言的所有属性、方法和对象。其他语言可以实现   ECMAScript 来作为功能的基准,JavaScript 就是这样:

每个浏览器都有它自己的 ECMAScript 接口的实现,然后这个实现又被扩展,包含了 DOM 和 BOM。当然还有其他实现并扩展了 ECMAScript 的语言,例如 Windows 脚本宿主(Windows Scripting Host, WSH)、Macromedia 在 Flash 和 Director MX 中的 ActionScript,以及 Nombas ScriptEase。

ECMAScript 符合性

在 ECMA-262 中,ECMAScript 符合性(conformance)有明确的定义。一个脚本语言必须满足以下四项基本原则:

•   符合的实现必须按照 ECMA-262 中所描述的支持所有的“类型、值、对象、属性、函数和程序语言及语义”

•   符合的实现必须支持 Unicode 字符标准(UCS)

•   符合的实现可以增加没有在 ECMA-262 中指定的“额外类型、值、对象、属性和函数”。ECMA-262 将这些增加描述为规范中未给定的新对象或对象的新属性

•   符合的实现可以支持没有在 ECMA-262 中定义的“程序和正则表达式语法”(意思是可以替换或者扩展内建的正则表达式支持)

所有 ECMAScript 实现必须符合以上标准。

六、DOM

DOM(文档对象模型)是 HTML 和 XML   的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档。HTML 或 XML 页面的每个部分都是一个节点的衍生物。

DOM 通过创建树来表示文档,从而使开发者对文档的内容和结构具有空前的控制力。用 DOM API   可以轻松地删除、添加和替换节点。

DOM Level 2 引入了几种 DOM 新模块,用于处理新的接口类型:

•   DOM 视图 - 描述跟踪文档的各种视图(即 CSS 样式化之前和 CSS 样式化之后的文档)

•   DOM 事件 - 描述事件的接口

•   DOM 样式 - 描述处理基于 CSS 样式的接口

•   DOM 遍历和范围 - 描述遍历和操作文档树的接口

七、BOM

BOM 主要处理浏览器窗口和框架,不过通常浏览器特定的 JavaScript 扩展都被看做 BOM 的一部分。这些扩展包括:

•   弹出新的浏览器窗口

•   移动、关闭浏览器窗口以及调整窗口大小

•   提供   Web 浏览器详细信息的定位对象

•   提供用户屏幕分辨率详细信息的屏幕对象

•   对   cookie 的支持

•   IE 扩展了 BOM,加入了 ActiveXObject 类,可以通过 JavaScript 实例化 ActiveX 对象

由于没有相关的 BOM 标准,每种浏览器都有自己的 BOM 实现。有一些事实上的标准,如具有一个窗口对象和一个导航对象,不过每种浏览器可以为这些对象或其他对象定义自己的属性和方法。

05-11 12:49