杂文笔记

    返回首页    发表留言
本文作者:李德强
          面向对象是一种思想
 
 

        大学里有一门课叫《面向对象的程序设计》是以C++为例来讲述面向对象思想的,然而无论老师还是学生,都把C++的当做这门课程的主要学习内容,大家学习C++的语法、关键字,而不是把面向对象的思想做为主要内容来学习。现在中国处于开发领域的一线工程师也同样这样认为,他们看到C++、Java、Python等这些高级编程语言的书籍上都明确的说这些编程语言都是面向对象的,于是他们在学习了这些语言的语法之后,就自认为自己用这些语言写出来的程序是面向对象的。使用面向对象的编程语言编程和使用面向对象的思想编程根本就是两回事。使用面向对象的编程语言写出来的程序就一定面向对象的吗?我看不见得。

        因为大家并没有意识到,其实面向对象是一种程序设计的思想,而不仅仅是一门编程语言。这不仅让我想起了金庸先生笔下风清扬说的话:“世间有无数蠢才,以为将师父传下来的剑招学得精熟,自然而然便成高手,哼哼,熟读唐诗三百首,不会作诗也会吟!熟读了人家诗句,做几首打油诗是可以的,但若不能自出机抒,能成大诗人么?”现在回想起这句话来不禁让我感叹,世间万物,万变不离其宗。武功也好,编程也罢,都是一个道理。程序是死的,人是活的,如果不能活学活用,写再多的程序也成不了高手。

        面向过程与面向对象这两种思想其实并不矛盾,它们相互制约,相互补充。我们无法准确的说一段程序是面向过程的还是面向对象的。过程中包含对象,对象中也包含过程。这是一个对立又统一的编程思想。并不一定是哪一种设计好,哪一种设计坏。其实程序设计中只有相对合理与不合理,并没有绝对的面向过程或面向对象。

        很多人学用那些面向对象语言写出来的程序其实根本就算不上是面向对象的程序设计。他们不懂得封装、继承和多态(他们只在面试时才会想到这些重要的思想),只懂得用基本的顺序、分支和循环来写程序,遇到不会实现的功能就调用人家写好的程序库、程序包。从而将程序设计的一塌糊涂,杂乱的逻辑和臃肿。且不说在性能和移植上的问题,就只在满足基本功能上都难以胜任,对于功能需求的频繁变化导致他们的程序愈发的混乱低能。

        现在国内无论是大学、社会培训机构还是大小企业,在编程思想上下的功夫少的可怜,甚至没人认为编程还需要思想,只要按需求把程序编写出来不就行了吗?无论是学习编程语言还是学习设计模式、数据结构、算法设计,大多数情况都是教者不得其法,学者不明其理。大家无非都是为了应付考试、应付面试、应付工作。能真正把自己的智慧融入程序的人少之又少。

        我们说很多编程语言都是面向对象的,但使用面向对象的语言编写的程序却不一定就是面向对象的。很多人觉得C语言是面向过程的程序设计语言,但他们却不知道鼎鼎大名的Linux系统内核就是用C语言编写的,而内核程序都是使用面向对象的思想来设计的。也就是说使用C语言一样可以实现面向对象的设计。遗憾的是很多人只看到了编程语言的外表,而看不到它们内在的灵魂。使用C语言也好,使用C++或Java也好,能够让我们把程序写的漂亮、优秀的是我们的编程思想,而不是那些简单的基本语法。

    返回首页    返回顶部
  看不清?点击刷新

 

  Copyright © 2015-2023 问渠网 辽ICP备15013245号