这篇文章抛开哪些从英文翻译过来的中国人读起来莫名其妙的术语谈谈什么是面向过程编程以及什么是面向对象编程。
首先,编程是要解决问题的,不管是老师流的编程作业亦或是老板给任务,编程都是在用电脑解决问题。而面向过程编程和面向对象编程都是解决问题的方法论,即这两个东西都概括的回答了这个问题:“如何解决这个问题?”
面向过程编程,换做中国话(它只是用中国字写了并不算中国话)说就是:让电脑解决这个问题。按照这个方法论,程序员要明确的写出电脑先干嘛,后干嘛。做个比喻,如果这个电脑是个人,那么这个问题是程序员教这个人,然后这个人独立完成的。
面向对象编程,就是让电脑虚拟出多个具有某些特定功能的工具,然后让这些工具互相配合解决问题。接着上面这个比喻,程序员教这个人(电脑)去创办一个公司,然后设立岗位(类),招募员工(对象),合理调度公司资源(封装性),在特殊情况下改变岗位职责(继承与多态)这样解决问题。在这样的比喻下,也就很容易理解为什么面向对象编程常常用于解决业务问题,而科学计算仍然倾向于面向过程的函数式编程。
这两个方法并不是互斥的,并不是说依据了这个方法论就一定不是依据那个方法论。他们不过是一个强调电脑做什么,一个强调电脑虚拟出来的东西做什么,其实还不都是电脑做的。
顺带解释下函数式编程,函数式编程也是强掉电脑做,但强调另一点,重复的工作用特定的函数完成。其实面向对象也是这么做的,但是函数式编程不强调谁(电脑还是对象(其实说是对象做,最终还不是电脑做))干这个事情。
所以面向对象就是这么个回事而已,接下来就好好学下面向对象的语言就行了,说实话,我都感觉用oop语言可以写出一个公司来,开公司前先用oop语言好好设计一下公司,以后开公司就知道该设立什么部门,找什么样的人。
若有理解不到位的,请指正。