质疑"我的大脑不能再处理面向对象了"

12-06-12 banq
                   

一篇译文:我的大脑不能再处理面向对象了,作者认为他的大脑更适合处理面向过程,也就是函数式编程。

我个人观点:面向对象号称以适合人的大脑来思考软件,而面向函数或面向过程,则是让人的大脑以CPU方式去思考。该文作者的脑袋已经不是正常人脑袋,而是被改造成机器算法脑袋了。

这两种区别正如Windows和Linux的区别一样,Windows让一切都对象化,都是一个个对象窗口,小孩无需学习都会使用,这种方式延展到苹果 iPhone几乎无不如此。

而Linux则必须让人学习Linux函数命令,然后人通过shell或perl或python与linux交互。

两者思维方式特点和优缺点应该一目了然了。

[该贴被admin于2012-06-12 11:44修改过]

                   

10
cxz7531
2012-06-12 11:31

“面向对象适合于人的大脑”这个还真不一定,事实上多数人是习惯于面向过程的思维方式。

面向对象,基本上是一种管理思维。而中国的高考,特别是数理化教育,只能选拔擅长过程式思维的人才来。

中国大学毕业的学生,面向过程基本是自然而然的,面向对象需要反复磨练才能学会。

[该贴被cxz7531于2012-06-12 11:34修改过]

banq
2012-06-12 11:43

2012-06-12 11:31 "@cxz7531"的内容
中国大学毕业的学生,面向过程基本是自然而然的,面向对象需要反复磨练才能学会 ...

认可这点,关键是教育导致的,现在的软件教育是让你以机器方式去思维,这样才显得你比较专业。就像古时你如果不学习“之乎者也”,你就好像不会写文章一样。

当你学会之乎者也,再想像平常人说白话文,能不难吗?

有人说:我们的软件教育课程是参考老外的,应该没有问题,其实老外从中小学开始比较注重哲学基本方法学教育,另外,他们空闲娱乐时间比较多,这样,很多基本正常人的思维世界观他们早就有了,而面向对象其实是一种正常对世界进行分类封装的自然思维方式。

有人说,既然我们已经被教育成这样,那就用面向过程和面向函数方式,但是问题是,面向函数并不能完全替代面向对象,面向对象在系统复杂以后的维护拓展上有独特的作用,所以,能够驾驭并在这两种思维世界中切换才是根本。

混合面向对象和面向函数的设计

OO思维案例

[该贴被banq于2012-06-12 12:13修改过]

banq
2012-06-18 19:05

面向函数编程实际直接以方法函数为第一,也就是不受Class类限制,也就会产生“无主行为”,直接导致混乱。

职责驱动开发思想中,我们将方法行为称为职责,从这两个词面理解,方法行为和职责行为有什么区别呢?

或者说,什么样的方法行为才称为职责行为呢?这里隐藏了一个主语主角,当一个方法行为被强烈显式声明归纳于一个“主人”时,那么,这些行为可以认为是它的职责行为,是它职责所在,它要对自己的行为负责。

在一个可管理的世界中,如果我们将所有的方法行为都能归纳到其主人边界内,那么,很显然这个世界是井然有序的,比如人类社会,如果每个人不对其行为负有职责,那么法律何以惩治它,社会比如陷入混乱,骚乱的本质是打砸抢行为属于无主行为。

所以,当我们把客观世界镜像到软件世界中时,将各种行为进行角色化,归主化,实际是为了建设一个灵活易于维护拓展有序的系统。

那么面向函数这种堪称“无政府主义”行为模式在什么情况下可以允许呢?这个隐式的边界是纯计算机技术领域,比如云计算这个边界内计算功能是第一,也没有必要归计算功能进行归类,因为我们要的就是突出显式计算;还有在浏览器这个容器里,我们使用JS这样面向函数很方便,也无需归主,因为这些函数第一要求就是对浏览器页面进行操作,和服务器进行交互,这里动作是第一,也不要担心其产生混乱,因为有前端浏览器容器这个隐式边界限制它。

在UNIX或LINUX我们都是函数方法第一,因为通过Shell直接命令Linux干活,虽然在这里我们不需要归主,但是也产生问题,对Linux很多命令无法面面俱到,想达到某个目的时,很费劲才找到,这是函数无政府的结果;而在Windows里我们一般可以在相应的管理边界中找到相应的命令,比较轻松,因为命令有序管理着。