Linux C编程一站式学习笔记——第六章
来源:互联网 发布:那个软件看寅唱会 编辑:程序博客网 时间:2024/05/20 07:17
机器语言称为第一代语言(1GL,1st Generation Programming Language),汇编语言称为第二代语言(2GL,2nd Generation Programming Language),C、C++、Java、Python等可以称为第三代语言(3GL,3rd Generation Programming Language)。目前已经有了4GL(4th Generation Programming Language)和5GL(5th Generation Programming Language)的概念,主要区别在于,4GL以后的语言主要不是通过输入、输出、基本运算、测试分支和循环这些基本指令来编程的,4GL以后的语言更多是在描述要做什么(Declarative)而不是描述具体一步一步怎么做(Imperative),具体一步一步怎么做完全交由编译器或解释器决定。
函数式编程(Functional Programming)
命令式编程(Imperative Programming)
int factorial(int n){int result = 1;while (n > 0) {result = result * n;n = n-1;}return result;}int factorial_Recursive(int n){if (n == 0)return 1;else {return n * factorial_Recursive(n - 1);}}
在整个递归调用过程中,虽然分配和释放了很多变量,但是所有的变量都只在初始化时赋值,
没有任何变量的值发生过改变,而上面的循环程序则是通过对n和result这两个变量多次赋值来达到同样目的的。前一种思路称为函数式编程(Functional Programming),而后一种思路称为命令式编程(Imperative Programming),这个区别类似于第 1 节 “程序和编程语言”讲的Declarative和Imperative的区别。
全局变量被多次赋值会给调试带来麻烦,如果一个函数体很长,控制流程很复杂,那么局部变量被多次赋值也会有同样的问题。此外,以后我们会讲到,对全局变量多次赋值会影响代码的线程安全性。因此,不要以为“变量可以多次赋值”是天经地义的,很多编程语言都在避免Imperative的方式,例如Erlang语言规定变量的值不允许改变。用C语言编程主要还是采用Imperative的方式,但是要记住,为变量多次赋值时要格外小心,在代码中多次读写同一变量应该以一种一致的方式进行,至于什么才算是“一致的方式”很难定义,也有个人风格的因素,需要读者在编程中自己体会。
- Linux C编程一站式学习笔记——第六章
- Linux C编程一站式学习第六章
- Linux C 编程一站式学习笔记——第七章
- Linux C 编程一站式学习笔记——第八章
- Linux C 编程一站式学习笔记——第十章
- 【C++】学习笔记十四——C++ primer plus第六版第4章编程练习
- 《Linux高性能服务器编程》学习笔记——第六章 高级I/O函数
- Linux C编程实战——第六章 文件操作
- 读《C专家编程》笔记-第六章
- Linux C编程一站式学习 笔记
- 《linux c编程一站式学习》笔记1
- 《linux c编程一站式学习》笔记2
- Linux.C编程一站式学习-笔记
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第六章 选择结构
- C++primer学习笔记-第六章语句
- Java学习笔记—第六章
- 鸟哥linux 学习笔记 第六章
- 1_C# 高级编程(第六版)学习笔记——第1章 .Net 体系结构
- weka api调用小程序
- CentOS 编译安装git,解决github HTTPS 403错误
- HDU 3367
- POJ2528 海报问题(线段树+离散化)
- thinkphp中的import问题
- Linux C编程一站式学习笔记——第六章
- awk substr 左、右取字符
- Android一个Demo搞定所有控件
- ios unwind
- Android 扩大触摸的触发区域 TouchDelegate
- 输出杨辉三角
- Struts逐步学习(1)-环境搭建
- Linux驱动学习6(ioctl的实现)
- PHP根据IP地址获取所在城市具体实现