9th week blog(History of Program)

Posted shengbowen1004

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9th week blog(History of Program)相关的知识,希望对你有一定的参考价值。

object的发展史:

一.面向对象的发展史。(分为三个阶段)

(一)初级阶段

  20世纪60年代挪威计算中心开发的Simula 67,首先引入了类的概念和继承机制,它是面向对象语言的先驱。该语言的诞生是面向对象发展史上的第一个里程碑。随后20世纪70年代的CLU、并发Pascal、Ada和Modula2等语言对抽象数据类型理论的发展起到了重要作用,它们支持数据与操作的封装。犹他大学的博士生Alan Kay设计出了一个实验性的语言Flex,该语言从Simula 67中借鉴了许多概念,如类、对象和继承等。1972年Palo Alno研究中心(PARC)发布了Smalltalk72,其中正式使用了“面向对象”这个术语。Smalltalk的问世标志着面向对象程序设计方法的正式形成,但是这个时期的Smalltalk语言还不够完善。

(二)完善阶段

  PARC先后发布了Smalltalk72、76和78等版本,直至1981年推出该语言完善的版本Smalltalk80。Smalltalk80的问世被认为是面向对象语言发展史上最重要的里程碑。迄今绝大部分面向对象的基本概念及其支持机制在Smalltalk80中都已具备。它是第一个完善的、能够实际应用的面向对象语言。但是随后的Smalltalk的应用尚不够广泛,其原因是:
1)追求纯OO的宗旨使得许多软件开发人员感到不便。
2)一种新的软件开发方法被广泛地接受需要一定的时间。
3)针对该语言的商品化软件开发工作到1987年才开始进行。 

(三)现阶段

  从20世纪80年代中期到90年代,是面向对象语言走向繁荣的阶段。其主要表现是大批比较实用的面向对象编程语言的涌现,例如 C++、ObjectiveC、Object Pascal、CLOS(Common Lisp Object System)、Eiffel和Actor等。这些面向对象的编程语言分为纯OO型语言和混合型OO语言。混合型语言是在传统的过程式语言基础上增加了OO语言成分形成的,在实用性方面具有更大的优势。此时的纯OO型语言也比较重视实用性。现在,在面向对象编程方面,普遍采用语言、类库和可视化编程环境相结合的方式,如Visual C++、JBuilder和Delphi等。面向对象方法也从编程发展到设计、分析,进而发展到整个软件生命周期。
到20世纪90年代,面向对象的分析与设计方法已多达数十种,这些方法都各有所长。目前,统一建模语言(Unified Modeling Language,UML)[9]已经成为世界性的建模语言,适用于多种开发方法。把UML作为面向对象的建模语言,不但在软件产业界获得了普遍支持,在学术界影响也很大。在面向对象的过程指导方面,目前还没有国际规范发布。当前较为流行的用于面向对象软件开发的过程指导有“统一软件开发过程” [6] (也有人称为RUP)和国内的青鸟面向对象软件开发过程指导等。
当前,面向对象方法几乎覆盖了计算机软件领域的所有分支。例如,已经出现了面向对象的编程语言、面向对象的分析、面向对象的设计、面向对象的测试、面向对象的维护、面向对象的图形用户界面、面向对象的数据库、面向对象的数据结构、面向对象的智能程序设计、面向对象的软件开发环境和面向对象的体系结构等。此外,许多新领域都以面向对象理论为基础或作为主要技术,如面向对象的软件体系结构、领域工程、智能代理(Agent)、基于构件的软件工程和面向服务的软件开发等。

 

二.JavaScript发展史,JavaScript概念。
1.1 、JS发展史:
山寨打败原创(微软,网景)
1.1.1、1995年,表单验证。
1.1.2、Netscape(网景),布兰登(Brendan Eich)
1.1.3、标准:ECMAScript (国际标准化组织及国际电工委员会 )

1.2、JS的概念:
网页交互、客户端脚本语言(与服务端脚本语言不同)
1.2.1、JS是一种专为与网页交互而设计的客户端脚本语言。
1.2.2、程序是有序的指令的集成。
1.2.3、JS 是一种具有面向对象能力的、解释型的程序设计语言。
1.2.4、基于对象和事件驱动并具有相对安全性的客户端脚本语言。
1.2.5、不需要在一个语言环境下运行,只需要支持它的浏览器。

1.3、JS的作用:
验证发往服务器端的数据、增加 Web互动、加强用户体验度等.
1.3.1、表单验证
1.3.2、用户互动
1.3.3、网页特效

1.4、运行平台:
IE,firefox(火狐),chrome(谷歌),欧朋,苹果等浏览器。

1.5、客户端脚本语言的特点
JS脚本语言的特点:
1.5.1、脚本语言。解释型、逐行进行解释。
1.5.2、基于对象。基于对象、可以创建对象,可能使用现有的对象。 
1.5.3、简单。弱类型的变量类型,对使用的数据类型无严格要求。
1.5.4、动态性。采用事件驱动,不用经过服务器可对用户的输入做出响应。
访问网页时,鼠标在网页中进行鼠标点击或上下移、窗口移动等操作,JS可直接对这些事件给出相应的响应。
1.5.5、跨平台性。不依赖于操作系统,仅需要浏览器的支持。
JS可以在任意机器使用,前提机器上浏览器支持JSt脚本语言,大多数的浏览器都支持JS脚本语言。

2、javascript的组成。
2.1、JS由三部分组成。
ECMAScript、BOM、DOM
2.1.1、核心 : ECMAScript
欧洲计算机制造商协会
2.1.2、BOM
2.1.2.1、浏览器对象模型
2.1.2.2、Browse Object Model,
2.1.2.3、提供与浏览器交互的方法和接口(API),
2.1.2.4、利用BOM控制浏览器显示页面以外的部分。
2.1.3、DOM
2.1.3.1、文档对象模型
2.1.3.2、Document  Object Model,
2.1.3.3、提供访问和操作网页html内容的方法和接口。

2.2:JavaScript 和 ECMAScript
2.2.1、含义相同。
2.2.2、JavaScript 的含义 比ECMA-262 中规定的多。

2.3、编辑工具和运行平台
2.3.1、编辑工具
HBuilder,Dreamweaver,sublime Text,Notepad++,文本等..
2.3.2、运行平台
IE,firefox(火狐),chrome(谷歌),欧朋,苹果等浏览器。

3、JavaScript的标签。
3.1、标签
3.1.1、文件引入
<script type=" 文件类型 " src=" 路径 " ></script>
3.1.1.1、 
3.1.1.1.1、 type 脚本语言的类型 type = text/javacript
3.1.1.1.2 、src 要引入的外部文件 src = " 路径 "
3.1.1.2、注意:
3.1.1.2.1、不可以使用单标。
3.1.1.2.2、不可以在引入了外部文件的标签中写代码。

3.1.2、代码
alert( " 每句话后面要写分号结束! " ) ;
3.1.3、 
document.write( " 可以输出任何HTML的代码 " );

3.2、JS与HTML的执行顺序
3.2.1、从上朝下,谁在前先执行谁,无特殊需求。
3.2.2、JS代码一般写在<head>与</head>中间,也可在html文件的任何地方。
3.2.3、可以出现多个JS标签。

3.3、JS的注释
3.3.1、单行注释 //
3.3.2、多行注释 /* */

4、JS的数据类型,变量。
4.1、字面量、直接量。
程序中直接显示的数据
4.1.1、数字字面量 Number : 100
4.1.2、字符串字面量 String :" 张三 "
4.1.3、布尔字面量 Boolean : false / true
4.1.4、正则表达式字面量 : /abc/gi
4.1.5、对象字面量为空 Object : null
4.1.6、对象字面量表达式 Object :{x:1, y:2}
4.1.7、数组字面量表达式 Array :[1,2,3,4,5]

4.2、变量的定义
4.2.1、使用 var
 var age;       //var 是关键字,age是变量名
4.2.2、 赋值:age = 20;
4.2.3、 定义的同时赋值: var age=20;
4.2.4、可以一次定义多个变量:
var name=“zhangsan", age=18,weight=108;
4.2.5、JS是弱数据类型,容错性较高, 赋值后才确定数据类型
var temp;             // temp 时啥数据类型?不确定 
temp = 12;             // temp 变量是数字类型
temp = “hello”;      // temp 变量变成了字符串类型
alert(typeof temp); // typeof 判断数据类型

4.2.6、关键字和保留字

4.2.7、标识符和命名规范
4.2.7.1、标识符
JS定义的符号,即:变量名、函数名等。
4.2.7.1.1、 标识符组成
任意的大小写字母、数字、下划线(_)和美元符 ($)。
4.2.7.1.2、不能以数字开头。
4.2.7.1.3、不能有关键字和保留字。
4.2.7.1.4、区分大小写。
例:age和Age表两个不同的变量。
强烈不建议使用同一个单词的大小写区分两个变量。

4.7.2、变量的命名
4.7.2.1、匈牙利命名法。见名知意
4.7.2.2、驼峰命名法。

4.8、数据类型
4.8.1、Boolean:  布尔类型
4.8.2、Number:数值类型、数字(整数,浮点数float)
4.8.3、String:字符串类型
4.8.4、Array:数组类型
4.8.5、Object:对象类型
4.8.6、Null、Undefined:特殊类型 
4.8.7、NaN:非数值类型
4.8.8、Function:函数类型

4.9、typeof
typeof 操作符用来检测值或变量的数据类型。
返回类型有:
undefined   未定义
boolean     布尔值
string         字符串
number       数值
object         对象、数组或者null 
function     函数
array 数组

4.10、Undefined 类型
4.10.1、只有一个值,undefined 。
4.10.2、使用 var 声明变量,无初始化,变量值为 undefined 。
例:var box;
alert(box);//undefined
4.10.3、定义变量,声明的同时赋值 。

4.11、Null 类型
只有一个值,null 。
表示一个空对象引用(指针),而 typeof 操作符检测 null 会返回 object 。
例:var box = null;
alert(typeof box);

4.12、Undefined 与 Null 的关系。
4.12.1、null (父母)派生 undefined(子女),
ECMA-262 规定
当 undefined == null 即值相等时,则 返回 true。
4.12.2、数据类型不同。
null 返回是 Object类型
undefined 返回是 undefined 类型。
例:var box;
var car = null;
alert(typeof box == typeof car); // 值相等,类型不同

4.13、Boolean 类型
4.13.1、两个值(字面量):true和false。
true = 1,false = 0。
4.13.2、JS区分大小写,所以True 和 False 或者其他都不是 Boolean 类型的值。
例:var box = true;
alert(typeof box);
4.12.3、Boolean 可以将一个值转换为 Boolean 值,可以使用转型函数Boolean()。
var hello = " Hello World! ";
var hello2 = Boolean(hello);
alert(typeof hello2);
4.12.3.1、Boolean 类型转换规则
String: 非空字符串为true,空字符串为false 。
Number: 非0数值为true,0或者NaN为false 。
Object: 对象不为null,则为 true,null为false 。
Undefined: undefined 为 false 。

4.13、Number 类型
包括:整型、浮点型。
4.13.1、整型
例:var box = 100; // 十进制整数
alert(box);
4.13.2、浮点类型
必须包含一个小数点,且小数点后面必须至少有一位数字
例:var box = 0.8;
var box = .8; // 有效,不建议

5、运算符的简单使用。
5.1、算术运算符。
+(加)、-(减)、*(乘)、/(除)、%(取余,求模)
5.2、字符串和变量的拼接。
+
5.3、关系运算符。
>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、
==(等等于,值相同)、===(全等于,值和类型都相同)、
!=(不等于,值不同)、!== (不全等于,值和类型都不同)
5.4、逻辑运算符。
与(且)&&、或 ||、非 !
5.5、赋值运算符。
+=(加等于)、-=(减等于)、*=(乘等于)、
/=(除等于)、%=(取余等于,求模等于)
5.6、自增和自减。
++a(先加)、a++ (后加)
--a、a--

5.7、类型转换
字符串转换数字类型:parseInt( )、parseFloat( )
parseInt( )       是把其它类型转换为整型;
parseFloat( )  是把其它类型转换为浮点型(小数)
四舍五入Math.round(78.566)--->78

6、进制转换。
6.1、内存
就是大量的开关,每个开关,
可以存储一个1或0,称为一位(1bit),
每八位称为1字节(1byte)
1byte = 8位 
1KB  = 1024byte  
1MB = 1024KB       
1GB = 1024MB     
1TB = 1024GB     
...
1PB, 1EB
1位:是二进制的0或者1
6.2、二进制: 0, 1 (0~1)
6.3、八进制: 0, 1, 2, 3, 4, 5, 6, 7 (0~7)    
6.4、十进制: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 (0~9)
6.5、十六进制: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F (0~15)
6.6、进制的转换
6.6.1、常用值: 2的次方
2^2 = 4   2*2
2^3 = 8   2*2*2=8
2^4 = 16  2*2*2*2=16
2^5 = 32
2^6 = 64
2^7 = 128
2^8 = 256
2^9 = 512
2^10 = 1024
2^11 = 2048

6.6.2、2进制的转换
2进制:101011
转10进制:(从右往左)
1*2o + 1*21 + 0*2^2 + 1*2^3 +0*2^4 + 1*2^5 = 1+2+0+8+0+32 = 43
转8进制:(从右往左3个一组 101 011):53   
转16进制:(从右往左4个一组 0010 1011):2B

6.6.3、10进制的转换
10进制:43
转2进制:32+8+2+1 = 101011
转16进制:32+11 = 2B
转8进制:40+3 = 53

6.6.4、8进制的转换
8进制:53
转10进制:5*81 + 3*8o = 43

6.6.5、16进制的转换
16进制:2B
转10进制:2*161 + 11*16o = 32+11 = 43
8进制和16进制转非10进制,
可以先转换成10进制,再由10进制转
--------------------- 
第二个发展史参考与CSDN
原文:https://blog.csdn.net/qq_36781893/article/details/71321405 

三.atan2(y,x)和pow(x,y)的意思。

1.atan2(y,x)

 

     atan2(y, x)是4象限反正切,它的取值不仅取决于正切值y/x,还取决于点 (x, y) 落入哪个象限:

 

         a.当点(x, y) 落入第一象限时,atan2(y, x)的范围是 0 ~ pi/2;

         b.当点(x, y) 落入第二象限时,atan2(y, x)的范围是 pi/2 ~ pi;

         c.当点(x, y) 落入第三象限时,atan2(y, x)的范围是 -pi~-pi/2;

         d.当点(x, y) 落入第四象限时,atan2(y, x)的范围是 -pi/2~0. 

2. pow(x,y)

    函数pow(x,y)实现运算x^y,即x的y次方,这里x和y都为整数。

    算法的基本思想是,减少乘法次数,重复利用结算结果,例如:
x^4,如果逐个相乘的话,需要四次乘法。如果我们这样分解(x^2)*(x^2)就只需要2两次乘法,因为x^2的结果我们可以重复利用。所以我们最好做对称的分解指数y,然后求x^(y/2)的平方。

 

资源来源:https://www.cnblogs.com/lbjiu/p/9900903.html

















































































以上是关于9th week blog(History of Program)的主要内容,如果未能解决你的问题,请参考以下文章

9th week blog

9th week blog

9th week blog

March 02nd, 2018 Week 9th Friday

March 01st, 2018 Week 9th Thursday

February 28th, 2018 Week 9th Wednesday