• 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*2º + 1*2¹ + 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*8¹ + 3*8º = 43

    6.6.5、16进制的转换
    16进制:2B
    转10进制:2*16¹ + 11*16º = 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

  • 相关阅读:
    [Audio processing] FFMPEG转音频格式和采样率
    [操作系统] OS X Yosemite U盘制作
    [基础] 广义线性回归
    [基础] 一些英文术语
    [经典] 在未排序数组中返回topK大的数
    [参数方法] 贝叶斯估计(待补充)
    [参数方法] 最小二乘
    [Theano] Theano初探
    font awesome的图标在WP8浏览器下无法显示的问题解决
    SQL 获取各表记录数的最快方法
  • 原文地址:https://www.cnblogs.com/shengbowen1004/p/9977807.html
Copyright © 2020-2023  润新知