1.面向过程编程
“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。
- 特性:模块化 流程化
- 优点:性能比面向对象高, 因为类调用时需要实例化,开销比较大,比较消耗资源;
- 单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
- 缺点:没有面向对象易维护、易复用、易扩展
例如下面这个学生入学的例子:
“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。
例如下面这个学生入学的例子:
第一梯队思想,是计算机编程领域最为核心而根本的思想。因其威力强大,且无处不在,简直是天神般的存在。
编程没什么神秘的。本质上,编程与写作、绘画、雕塑一样,也是一种手艺,一种探索和求解问题的方式。只不过,编程高度依赖于算法步骤的正确性和可行性,需要高度的理性。
理性有三种类型:逻辑理性、沟通理性和思想理性。编程属于逻辑理性。逻辑理性要求逻辑层次是缜密无矛盾的,不能有一丝纰漏,否则可能会导致全盘溃败。逻辑理性是一层层堆叠起来的。上层的缜密依赖于下层的缜密。
构建逻辑理性的缜密性:
第二梯队思想,虽然不如第一梯队思想那么通用广泛,却也是编程领域的重要思想,有着举足轻重的地位。
一个规模为N的问题的解可以由规模为S(S<=N)的同样性质的问题的解来构造。
举个简单的例子,1+2+3+4+5 = 1 + (2+3+4+5) = 1 + (2 + (3+4+5)) = 1 + (2 + (3 + (4+5))) = 1 + (2 + (3 + (4+(5))))。 N 个数的和等于第 N 个数加上 N-1 个数的和。
递归技术是一种非常有效的程序设计技术。很多数据结构都有递归特性。列表、字符串、二叉树、JSON等。
第三梯队思想,是程序执行流程的高层构建块,能够用来构建灵活而强大的指令流程。
管道是类 Unix 系统的经典发明。管道将左边程序的输出传给右边程序的输入,可以轻易将连接的多个实用程序组成一条流水线,实现强大而多样化的功能(小程序、微功能)。
比如如下命令:在当前目录及子目录下的所有 .java 文件中查找匹配模式 pattern 的字符串,显示文件名,行号及匹配的行内容。
find . -name '*.java' | xargs awk ' $0 ~ /pattern/ { printf "%s : Line %s :\n%s \n" , FILENAME, FNR, $0 } ' | sed 's/^[[:space:]]\{1,\}/ /'