前言
这一段时间在看Thinking in Java这本书,觉得受益匪浅,便想着将看书过程中所思所想记录下来,便有了这篇博文。其中引用部分均出自Thinking in Java。
正文
编程是什么?
编写程序。
怎么编写程序?
通过一些编程语言。
所有的编程语言的最终目的都是提供一种“抽象”方法。
所谓的抽象,其实就是将机器能懂的语言转换为人能操控的语言,也即所有编程语言的最终目的就是提供一种方法,让人能够自如的操纵机器。
一种较有争议的说法是:解决问题的复杂程度直接取决于抽象的种类和质量。
对于这种说法,笔者是持赞同态度的,在不同的编程语言上就可以看出一些端倪。汇编语言是一种对基础机器进行了少量抽象的语言,后来的很多“命令式”语言,比如FORTRAN,BASIC,C是对汇编语言的一种抽象,与汇编语言相比,这些语言已经有了很多进步——它们更加抽象,但是他的抽象原理仍然要求我们把很多的精力放在计算机的结构上,而非要解决的问题本身上。这样一来就会有很多的弊端,因为程序员必须在机器模型和要解决的问题模型之间建立一种联系,而这件事本身是在编程语言的范畴之外的,并且在不同的平台上机器模型与问题模型之间的冲突会尤为明显。
而面向对象的程序设计则在此基础上迈了一大步。对于问题模型而言,OOP的方式无疑更加灵活,因为程序员可以将问题模型抽象成为一个一个对象,而且对象之间可以进行灵活的配合与调整。传统的程序设计主张将程序看成是一堆函数的集合,或者直接就是对机器操作的一堆指令的集合,而面