从编译器的角度 理解程序的逻辑结构

从编译器的角度 理解程序的逻辑结构

一 逻辑结构之我见

先说一下结论如果从人的思维的角度上看,程序的逻辑结构有三种,
分别是顺序结构,分支结构和循环结构。但是如果学习了汇编语言,
从机器的角度上看,已经分不出分支和循环了,它们都是用跳转指令。

从编译器的角度上看,分支结构和循环结构都能逻辑等价地改写成
顺序结构的语句。本质上只有顺序结构。与顺序结构并立而存的,
只有并发结构。在单个CPU,单核的状态下,计算机指令的执行
是顺序性的,流水线式的执行。分支与循环只是方便人脑对逻辑的
理解罢了。

二 分支结构与表格查表法表示逻辑的优劣比较

第一点是它们逻辑上可以表达出完全一样的逻辑语义。
第二点是在表达复杂的逻辑时,多层嵌套的条件语句,不如查表法
的程序可读性好。
第三点是条件语句,可以使用调试器进行调试,设置断点,方便调试语句。
查表法写的语句,仅能用测试法检查语句的质量,调试法没有了用武之地。

三 循环结构与递归法表示逻辑的优劣比较

第一点是它们逻辑上可以表达出完全一样的逻辑语义。
第二点是在表达复杂的逻辑时,循环不如递归法的可读性好。
第三点是,在调试时,循环容易一点。
第四点是,相比与循环语句,写递归的语句,更容易写出死循环的情况,
且不容易被发现。

四 编程的一点经验之谈

如果是系统底层的库的开发,程序的执行性能优先于可读性。
如果是应用层的开发,程序的可读性远远优先于执行性能。
可读性好意味着程序员本身的开发效率高,团队协作效率高。
也意味着系统可维护性也比较好。应用层的代码修改的概率是
非常高的。如果代码可读性不好,项目很难维护下去。写出智力
一般的人都看得懂的代码是第一位的。

执行性能好,主要是指需要的CPU的指令周期数比较少。对于系统
底层的代码库,是计算密集型的,需求的变动几乎没有。对于需要被
调用数以亿计的数学函数,每节省一个毫秒的执行时间意义是非常重大的。
也许几十年前写成的fortran,c等的库代码还在系统上运行着呢。

你可能感兴趣的:(开发方法,编程方法,逻辑结构)