如果程序的数据包涵代码和数据两部分:
面向过程编程 就是以代码为主,用代码控制数据,描述解决问题的方法。
面向过程编程 就是以抽象数据为主,所有处理都围绕数据展开,依赖抽象编程
编程语言知识点:
1 . 流程控制:使用if...else , while, break,continue 代替 过于强大,结构差,不便阅读的goto.
for, switch,foreach 则可让代码更简洁,清晰。
2. 函数:随着程序代码变得越来越庞大,把握全局逐渐变得困难起来,同时有可能需要多次用到非常相似的操作,于是诞生了函数 。
把代码的一部分视作一个有机整体,切分出去并为之命名的程序设计机制(便于理解和可重复使用,早期有子程序的称谓)。栈。
3. 错误处理:
- 用返回值及引用参数传达出错信息。 C,GO采用这一模式
- C++ ,JAVA,C# 使用throw , try ... catch
- JAVA,C# 中 可以使用try ... catch ... finally。使用finally,出口只有一个,实现成对操作的无遗漏执行。
- JAVA 采用检查型异常,要明确声明可能跑出的异常,因为"The Trouble with Checked Exceptions",所以C#未引人。
- swift此前采用c的模式,2015开发者大会上提到将引入异常处理机制。
可追加错误类型和可主动触发错误的异常处理机制。
4. 命名和作用域(动态作用域、全局作用域、静态作用域),命名空间。public private protected internal
5. 类型:数据如何读取,需要依赖人们为数据附加的类型信息。
- CPU对操作数的存放方式:Little_endian(从低字节到高字节)和Big_endian(从高字节到低字节)。
- 以2进制表示10进制,约3.32(log10 / log2)个bit位表示一位。
- 整形:最高位为符号位。负数采用补码的方式,从而将减法转变为加法。(补码:除符号位外 按位取反 再 加 1 )
- 浮点:
以32位为例:
最高位为符号位,
之后8位是表示位数的指数部分(0~255,减去127,得到-127~128,-127表下溢出:0,128表上溢出:无穷小或无穷大,剩下的为位数)
剩下23位为尾数部分,表示小数点以下的部分(通过移动小数点使整数部分变成1后的小数部分)。
如: 1.75 二进制:1.11 ,无需移位, 符号位:0,指数部分 0111,1111(127),尾数部分:110,0000,0000,0000,0000(0.5 + 0.25)
3.875 二进制:1.1111 * 2, 符号位:0,指数部分 1000,0000(128右移一位),尾数部分:111,1000,0000,0000,0000
范围 :-126 / 3.32 ~ 127 / 3.32 约-38~38
精确度:23/ 3.32 ,6~7位有效数字
64位则符号位为11位
范围 :-1022 / 3.32 ~ 1023 / 3.32 约-308~308
精确度:52/ 3.32 ,15~16位有效数字
自定义类型:结构,联合,枚举,类。使用基本数据类型通过组合定义新的类型。
访问控制:功能上实现封装,代码上解耦
抽象类、接口
泛型、模版
动态类型
6. 容器(数据结构):
7. 对象与类
面向对象编程里的 对象是现实世界的模型。归纳并建立模型的方式多种多样,语言不同,选择也不同,类是最方便的,却不是必须的。
JS中通过将函数和变量放入散列,以实现将相关联的函数、变量集中到一起的功能。
函数式语言里,则会采用闭包的形式。
perl 使用包的形式
8.继承
采用封装来建立抽象数据模型,但仅仅只有封装还不够,事物之间是普遍联系的,还需要继承和多态来描述他们之间的关系
继承需要谨慎使用,否则代码可读性降低,而且扩展困难。遵守 里氏替换原则
C++为多重继承,多重继承使用方便,但会产生冲突,JAVA的解决办法就是只容许单继承,用接口实现多重继承的功能。同时单继承便于统一管理内存。
9. 抽象类,接口
抽象类可以有一个抽象方法
而接口则所有方法都是抽象方法
----------------
程序语言是为了寻求便捷而诞生的,正是因为对便捷的不同需求。 才促成了各种程序语言的发明。
语言设计的取舍:
易用性与功能,安全性与效率,稳定性与可扩展性。
C:结构化编程 + 高效 + 功能强大 + 易于学习
诞生于1972年
the c programming language 1978由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言
1989.12 第一个完整的C语言标准,简称“C89”,不过人们也习惯称其为“ANSI C”。
最新标准在2011年12月8日发布,称为ISO/IEC9899: 2011,简称为“C11”。
C++, 1979年发明,最初称“带类的C”,1983年正式更名为C++
重视代码执行效率,语言规范相应的非常复杂。
JAVA 1991年构想,92年初步实现,95年公开发布。
目标是实现体系结构中立,而万维网的发展成就了JAVA,因为万维网需要可移植程序。JAVA对网络编程的意义就如同C对系统编程的意义一样:都是改变世界的革命性力量。