js:语言精髓笔记5----语言分类
计算模型:源于对计算过程的不同认识;
1.基于不同计算模型一般分为://教科书的一般分类
- 命令式语言;
- 函数式语言;
- 逻辑式语言;
- 面向对象程序设计语言;
2.基于程序本质分类: //编程的经典法则:算法+数据结构=程序;
- 命令式: //基于数据结构
- 结构化编程(冯诺依曼:计算机系统以存储和处理为核心)【面向存储的编程】;
- 面向对象编程;
- 说明式: //基于算法
- 函数式;
- 其他;
命令式语言面临的问题:如何抽象数据存储;
结构化编程:通过运算去改变内存;
- 结构:
- 控制结构:顺序,分支,循环;
- 组织结构:表达式,语句行,语句块,过程,单元,包等;
- 数据结构(命令式语言所关注的存储):基本数据结构,复合数据结构;
- 问题:
- 数据具体含义与关系;
- 面向数据存储形式的算法,脱离使用环境,算法结构也缺乏通用性;
- 僵化的类型和逻辑影响业务逻辑表达;
面向对象编程:对象系统:数据/行为/关系
- 优化:
- 更加细化的可见性设定,更好的数据封装性及数据域管理;
- 使用继承解决通用性;
- 使用多态解决业务逻辑冲突;
- 对象是更高层次的数据抽象,但它仍是对以结构的认可而不是以对算法的认可为前提的;//所以仍然是在结构影响算法当中;
面向接口的编程方法:
- 接口:更高层次的抽象,只暴露数据体的逻辑行为能力,而不暴露这种能力的实现方法和基于的数据特性;
- 接口基于的原则并不是结构确定则算法确定,而是在共同的规约描述下的算法功能的确定;
3.多范型语言:具有交叉分类特性的语言;其中JS支持函数式,命令式和(基于原型)面向对象;
js:语言精髓笔记5----语言分类的更多相关文章
- js:语言精髓笔记12--动态语言特性(2)
对于括号内: 通过赋值时发生的重写: (Object1 = function() {}).prototype.value = 100; var obj1 = new Object1; console. ...
- js:语言精髓笔记11--动态语言特性(1)
语言:程序最终被表达为数据(结构)和逻辑(算法),命令式和说明式/函数式语言分别从这两方面分类: 动态:在语言陈述时无法确定,必须在计算机执行时才能确定语言关系:JS是完全动态语言,导致其不确定性一般 ...
- js:语言精髓笔记9--函数式语言特征
形式化运算系统的研究: 图灵:提出图灵机形式系统,通过0,1运算系统来解决复杂问题: 冯诺依曼:提出了冯诺依曼体系:即通过修改内存反映运算结果: 阿隆左.丘奇:提出新的运算范型Lambda演算,计算机 ...
- js:语言精髓笔记8--对象系统
封装: 一把对象系统,封装是由语法解析来实现的,即语法作用域:但js是动态语言,因此只能依赖变量作用域: js的变量作用域只有表达式,函数,全局三种:所以js只能实现public和private两种封 ...
- js:语言精髓笔记7----原型继承
面向对象有三个基本特性:封装,继承,多态:如果都满足的话称为面向对象语言:而部分满足则称为基于对象语言: 数据类型实现模型描述: JavaScript对象模型: 构造过程:函数->构造器 构造器 ...
- js:语言精髓笔记1--标识符与基本类型
标识符: 命名: 语法以及类型----语法关键字 //逻辑 值(的存储位置)----变量和常量 ...
- js:语言精髓笔记3----语句
JS语句分类:(注意语句都是有返回值的) 声明语句: 变量声明语句: 标签声明语句: 函数声明语句: 表达式语句:(表达式加分号) 变量赋值语句:具有声明一个变量的隐式效果: 函数调用语句; 属性赋值 ...
- js:语言精髓笔记2--表达式
表达式:由运算符和运算元构成:JS中没有运算符的表达式称为单值表达式:没有运算元,孤立与代码上下文的运算符是不符合语法的:(表达式是有返回值的) 单值表达式: this引用: 变量引用: 直接量: n ...
- js:语言精髓笔记10--闭包
闭包: //JS函数式风格中,在内部保存数据和对外无副作用这两个特性主要就是通过闭包实现的: 函数与闭包: 一个函数是一段静态代码,它是一个代码书写时已经编译期,静态概念:闭包是函数在代码运行过程中 ...
随机推荐
- Altera的几个常用的Synthesis attributes
各厂商综合工具,对HDL综合时都定义了一些综合属性这些属性可指定a declaration,a module item,a statement, or a port connection 不同的综合方 ...
- 关于angularjs 中自定义过滤器
包子认为,在angularjs中,经常需要用到自定义过滤器,来过滤相应的功能,自定义过滤器非常的简单,我就直接贴代码啦 其中input就是你需要进行操作的对象,,,用法就直接就是 是不是很easy.. ...
- Stockbroker Grapevine(floyd)
Stockbroker Grapevine Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 28231 Accepted: ...
- [Unity3D]计时器/Timer
原地址:http://blog.sina.com.cn/s/blog_5b6cb9500101aejs.html https://github.com/xuzhiping7/Unity3d-Timer ...
- 使用HTML5 Web存储的localStorage和sessionStorage方式
localStorage(本地存储),可以长期存储数据,没有时间限制,一天,一年,两年甚至更长,数据都可以使用.sessionStorage(会话存储),只有在浏览器被关闭之前使用,创建另一个页面时同 ...
- hibernate.cfg.xml配置文件和hbm.xml配置文件 模板
hibernate.cfg.xml配置文件格式 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE ...
- Linux netstat详解
做计算机管理员,我们都必要了解一下netstat这个命令,它是一个查看网络连接状态的工具,在windows下也默认有这个工具.Netstat命令详解 netstat命令怎样使用 如何关闭TIME_WA ...
- CentOS 关闭蜂鸣器声音
也许你会遇到像我这样的情况,每次使用Linux终端,当听到发出“嘀嘀”的声音时候,我都有种把我的机箱拆掉把那个内置的蜂鸣装置拽下来的冲动.按 Tab时候“嘀嘀”,按空格时候“嘀嘀”,每个在vi中错误的 ...
- STM32canopen调试
问题1:用usbcan监测不到can口的报文 属于接线问题 CANopen程序总使用的是can1 对应的接下口在J1的1和2口,而其接口排序是从外向里排序,故最外面的为1号接口,由于接线时,按照左边的 ...
- C++基础知识面试精选100题系列(1-10题)[C++ basics]
[原文链接] http://www.cnblogs.com/hellogiser/p/100-interview-questions-of-cplusplus-basics-1-10.html [题目 ...