所有的编程语言都提供了抽象。
不同的编程语言提供了不同的抽象。汇编语言提供了对计算机底层的抽象。命令式程序设计语言(如:FORTRAN, BASIC, C)是对汇编语言的抽象。这些语言依然需要程序员像计算机一样思考与解决问题。程序员必须建立起计算机模型和问题模型之间的关系。编写代码的过程就是从问题域映射到方法域。
除了对计算机模型的抽象,程序语言还提供了对问题模型的抽象。面向对象语言允许程序员对问题进行描述。当然,面向对象语言依然和计算模型有关联,每个对象都有各自的状态和可以执行的操作,就像一个小型计算机。