大话coding 之面向对象概念之争
—— 今天想了想,大话C、C++这个范围太小了,我还是改成这个系列为“大话 coding” 吧。其实就是记录一下我自己的一些瞎想。。(每天没事干时。。就想些这问题)
小学就开始简单的接触编程。。但是几乎直到最近才对面向对象有个系统的了解。
大学的时候虽然有这个课程,但是说实话,只知一点表层的东西。。今天来讨论一下所谓的面向过程、半面向对象、完全面向对象吧。
C语言是完全的面向过程编程语言,其逻辑按照执行顺序进行,程序员在设计的时候也是以先后顺序,(这里一般称流程)来考虑与设计程序。
C++提供了面向对象的思想,但是就其面向对象性,很多人提出了质疑。说C++只能算一半面向对象,而JAVA、C#之类的才是完全的面向对象。(也有人说smalltalk之类才是完全的Object Oritened,不过我对其完全不懂。。。所以暂不介绍)
这里非完全面向对象与完全面向对象的主要区别是:main函数在哪。
C++ 中是一个独立的模块。而JAVA、C#中是在一个类中。
这就有意思了,
其实main函数具体在哪,并不太影响人们的代码编写与面向对象的设计思维,所以这个争论我觉得对于程序界的实现并没有太大影响,从而上升为一个哲学问题。
实际上该问题我觉得就等同于宇宙的起源说。
1,有人说宇宙起源于混沌,一个大爆炸,于是开始以光速放射,时间从那时候开始。
2,有人说宇宙是线性存在的,时间是绝对的,万物都在时间的一条基线内运动。
其实1就是所谓“完全的面向对象”,他把时间的起源也归从与物体之下。(宇宙的开始,导致时间的起源)这不就是所谓的main包含在对象中么?
2就是所谓的“不完全面向对象”,他把宇宙从时间中独立出来,时间绝对存在,一切物体在时间中运动。这不就是所谓的main不包含在对象中么?
说的相当凌乱。。而且很可能有很多错误,今天相当累了,暂写到这……
by the way:大话C、C++系列都是我每天上下半总共加起来1个小时骑单车时瞎想的,呵呵。