作者:小余(Yice)  来源:博客园   酷勤网收集 2008-05-11

摘要
  所有的初学者们,面向结构的语言并没有过时,如果你们的老师在没有先让你学好面向对象之前就让你上马学习面向对象,那么他就是用一种不负责任的态度进行教学。浮沙之上岂能筑高台。先静下心来,切忌浮躁,一步一个脚印才能走得更远。

如果你是一个初学者,正在努力的学习各种软件开发的技能,希望今后能够从事软件开发工作。那么在学习的过程中,就先丢掉面向对象,对于你来说面向对象是一颗毒瘤,他不会给你带来软件上更高层次理解,恰恰相反,你的逻辑思维正在被它慢慢的毒化,一堆似有似无的概念会把你的理解彻底毁掉,从而很难清楚的理解到底程序的本质如何,当你只会念叨“一切皆对象。”却挤不出一行代码的时候,那说明你已经病入膏肓。

应该说百分之九十九的计算机专业都开设有面向对象这门课程,我们现在所使用的大部分语言都是高级语言,例如:Java,C#这类的纯面向对象的语言。虽然大学课程中在开设面向对象之前都会先教受学生学习类似C语言这种面向结构化的开发语言课程作为学习的基础。 “C,都过时了,现在都是java 和C#的天下。”我想不少初学者都会用这种不屑的眼光来看待这些所谓落伍的课程。我们都知道一个盖楼的基本道理:“先打实地基,然后再在上面按照先前的设计修建好各种楼宇。”盖楼需要先打地基,地基要结实才能保证大楼傲然挺立,如果没有地基,再好的楼宇也迟早会坍塌。而且再漂亮的楼宇你也无法看到它的地基。

面向对象的提出主要是解决面向结构软件开发中代码可复用性和可维护性不佳的问题,从软件学的本质来说,面向对象并没有改变软件运行的本质,所改变的只是代码开发中问题处理和思维方式,所有的高级语言都是经过编译器的处理转换成后成为一条一条的指令代码。所以如果希望能够对程序有比较好的理解,就需要了解运行的实际状态。透过高度抽象的层层烟幕看清实质是做软件开发的基本功力。如果要对编程语言进行归类,最简单而有实效的划分就是汇编指令编程语言和高级编程语言,无论是C,C++,C#,Java都是一种高级编程语言。不论是哪一种高级编程语言,最终的形式都会转换成CPU运行的一条一条指令后运行,目前计算机的CPU中还无法直接运行高级编程语言的代码。

是不是说学不好结构性的编程语言就无法学好面向对象呢?答案应该是肯定的,面向对象是在结构性编程语言上抽象而来的,应该说面向对象所处在的层次要远远高于结构性编程语言,面向对象的学习难度和周期都要高于面向结构的编程语言。面向对象的技术起点也是基于面向结构,在面向对象的开发过程中需要开发大量的函数,这些函数用的都是结构化处理的思想。如果你连基本的结构性程序都很理处理的一塌糊涂,你如何在更高的层次上进行抽象?

是不是用面向对象语言写出来的程序就是面向对象呢?有多少人用面向对象的语言写出的代码是一片混乱,重复使用的代码没有进行抽象。一个类中的函数分不清楚什么时候应该用Private, Protected,Public。类对于他们来说就像是面向结构中的一个文件,只是用来进行管理代码。

所有的初学者们,面向结构的语言并没有过时,如果你们的老师在没有先让你学好面向对象之前就让你上马学习面向对象,那么他就是用一种不负责任的态度进行教学。浮沙之上岂能筑高台。先静下心来,切忌浮躁,一步一个脚印才能走得更远。不是说你知道了类,对象,属性之后就表示你会了面向对象。

Feedback

#1楼 [楼主]       2008-05-11 10:46 by 小余(Yice)      

自己先鄙一下

#2楼 2008-05-11 10:58 by 落木萧萧      

同意上述观点.爬金字塔要从它的基座开始.结构化思想是面向对象的基石;面向对象是面向组件的基石;面向组件是现在热吹的面向服务架构(SOA)的基石.

#3楼2008-05-11 11:04 by soundbbg

The problem you told is not easy for Chinese which mum language is not english , I'm using Linux ,it's a pity for Linux using chinese is not easy.. why? because computer system isn't Our's found..

Most of this (C/C++/C#/JAVA) are wrote in English Understanding..

#4楼2008-05-11 11:06 by soundbbg

I agree with you , But you didn't Say Anything useful ..

#5楼2008-05-11 11:08 by 海风0101

不尽全对,现代的软件开发需要大量的软件工人而已,他们不需要搭地基的技能,只要能砌砖和刷墙就OK了。

#6楼2008-05-11 11:11 by 路过

我路过,说一句话吧..其实你说的有道理,就好像2楼说的一样,其实这是中国暂时没有办法改变的事实,现在大家都以Spring.net作为框架,你说能不受控吗..虽然是开源的,而且很不错,但是从本质上来说..这些都不是我们自己的..其实我们都成了高级工人..

我觉得如果哪天中国自己在这个体系上有了长足的发展,才能解决这个问题,而现在,我们只能接受,反思,努力

#7楼2008-05-11 11:17 by 伍迷      

引用
----------------------------
是不是说学不好结构性的编程语言就无法学好面向对象呢?答案应该是肯定的,面向对象是在结构性编程语言上抽象而来的,应该说面向对象所处在的层次要远远高于结构性编程语言,面向对象的学习难度和周期都要高于面向结构的编程语言。
----------------------------

我不太赞同您的观点,事实上正是由于现在的教育都是先面向过程再面向对象,而使得很多人一开始都只会过程的思考问题,从而在转向面向对象时,感觉入手的困难。

我曾经做过实验,直接给从来没有学过编程的人讲面向对象语言的开发,也就是说从类,实例讲起(当然,当中也是需要讲解变量、判断、循环、函数等基本知识)我感觉,尽快让学员进入面向对象的思维方式是很好的办法。

比如要求编写一个时钟小程序。两种人,一种是有一定面向过程经验的学员,一种是没有什么经验的学员。尽管我已经讲过面向对象,但是第一种学员,还是很自然的在一个Form里写时钟的代码。而第二种学员,会首先想到建立一个时间类,Form只是时间类的一个实例应用。哈,完全不同的两种思维方式,你觉得哪一种好呢?

当我要求,由指针式时钟转为数字式时钟时,第一种学员终于明白,自己的习惯思维使得没有想到面向对象的思考问题。而第二种学员由于一开始学习时就强调先找当中的对象(即时间对象和界面UI对象),所以他们反而没有什么成见,学会从对象上思考问题,是很重要的思维方法。

我不反对对算法和数据结构的深入研究,但从学习的角度,我认为先面向过程再面向对象是没有必要的。直接面向对象应该能更快的进入当前程序员应该有的角色当中。

#8楼 [楼主] 2008-05-11 11:21 by 小余(Yice)      

--引用--------------------------------------------------
落木萧萧: 同意上述观点.爬金字塔要从它的基座开始.结构化思想是面向对象的基石;面向对象是面向组件的基石;面向组件是现在热吹的面向服务架构(SOA)的基石.
--------------------------------------------------------
软件开发就是按照这个序列逐步演化而来的,后者都是在前人的基础上进行优化和提高,来解决在开发过程中的一些问题。

#9楼 [楼主] 2008-05-11 11:23 by 小余(Yice)      

--引用--------------------------------------------------
soundbbg: I agree with you , But you didn't Say Anything useful ..
--------------------------------------------------------
这篇blog不会确实没有多少实质性的用处,但是希望能够给初学者一个提示,给他们一个建议。如果真正要希望改变这种现状,可能我们要讨论的整个软件教育体制的问题。

#10楼2008-05-11 11:24 by 金色海洋(jyk)      

重磅炸弹哦。

为什么需要 软件工人 ?

Spring.net 框架 又是什么呢?

知其然,不知其所以然。

乱了吧。

#11楼2008-05-11 11:30 by 560889223      

同意楼主。尽管在教授C++等面向对象的语言,但并没有把面向对象的概念讲透彻,反而造就了一堆一知半解的学生。

另外,汇编、操作系统等计算机基础的课程,确实需要好好地研习,才能在计算机行业走得更远。

#12楼 [楼主] 2008-05-11 11:30 by 小余(Yice)      

--引用--------------------------------------------------
海风0101: 不尽全对,现代的软件开发需要大量的软件工人而已,他们不需要搭地基的技能,只要能砌砖和刷墙就OK了。
--------------------------------------------------------
建筑和软件有很多共性,但是也有很大的区别,对于建筑中我们可以将工人分成转瓦匠和泥水匠,软件中也可以进行这些划分,但是软件行业毕竟是一个人的脑力劳动,软架行业中要求我们所需要具备基本的开发技能是共通的,那么就要求从事切砖和刷墙的开发人员要有从业的基本能力,这个能力也就是我所说的地基那部分能力。

#13楼2008-05-11 11:31 by 金色海洋(jyk)      

@伍迷
如果让我实现一个时钟小程序 的话,我首先想到的是 flash 形式的时钟。
恩,很漂亮,而且网上有很多现成的代码,找一个过来就ok了。

然后呢,还有一个 js 脚本形式的 时钟,找一个过来,封装一下,然后clock.Start 。


==================


从一个极端到另一个极端,不是一件好事吧。

#14楼2008-05-11 11:31 by LeonSun      

个人感觉,面向过程和面向对象并不冲突,只是两种思维的方式而已,要是硬说面向对象解决了面向过程的复用性等等的问题,我想这只是在面向对象“邀功”时才应该说的话吧。它们只是通过不同的思考角度来解决问题罢了,而且他们之间也并没有先后主次之分。

总之,面向过程和面向对象是两种思维方式,并不能说其中一种是思维上的毒瘤。

#15楼 [楼主] 2008-05-11 11:34 by 小余(Yice)      

--引用--------------------------------------------------
路过: 我路过,说一句话吧..其实你说的有道理,就好像2楼说的一样,其实这是中国暂时没有办法改变的事实,现在大家都以Spring.net作为框架,你说能不受控吗..虽然是开源的,而且很不错,但是从本质上来说..这些都不是我们自己的..其实我们都成了高级工人..

我觉得如果哪天中国自己在这个体系上有了长足的发展,才能解决这个问题,而现在,我们只能接受,反思,努力
--------------------------------------------------------
我不打算在这里评论中国教育体制的问题,毕竟这个是一个很沉重的话题,我目前无法撼动这个体制上的能力,目前的我只是一个石子,希望能够激起一点涟漪,影响到一点真正想要在软件开发中发展自己的初学者。

#16楼2008-05-11 11:38 by 伍迷      

@金色海洋(jyk)
你也太实用了吧,显然你没理解我的意思,我只是举学员学习时的例子,并不是说时钟应该如何才能编好。难道有了IE,就不需要别的浏览器了吗?

对了,据我了解,金色海洋你就是非常典型的例子,从面向过程开发过来后,发现工作中不够用了,开始学习面向对象,但却有很多思维上的转换困难,如果一来就接受面向对象的学习,这种困惑就会少很多,或许在时间和精力上都要少很多。

当然,我这里没有任何蔑视面向过程的意思。只是从成长的角度来谈如何学习编程的问题。

#17楼2008-05-11 11:44 by A.Z!

一派胡言乱语。
什么是编程语言,谁定义了编程语言,为什么有人在一些编程语言和编译器上附加一些额外的扩展?
是不是用面向对象语言写出来的程序就是面向对象呢?这是肯定的,至于这个编程者构建的符合语法定义的对象和实际追求的抽象对象间的差距,这是由编程者决定的。
为什么pascal最终在教学书上被淘汰了?因为它不符合现在流行的编程思想和编程工具。而C语言却的有着承上启下的灵活结构,并且不断的修正,是被实际使用的工业语言。
LZ的标题应该改成在面对对象的布局之前,是不是应该牢固一个过程的编程基础?
实际上考察任何对象化的语言的语法定义,都有过程的部分,而这部分在很多语言上是极其的相似的,最好的例子就是java与C#。
如果真的世界上每所大学都把汇编之类的微控制的语言当作一种主流语言来进行教学,程序员真的都和陈XX不远了。
编程的核心思想是什么?我的看法是以最小的代价,写出最优的数据定义和数据处理逻辑,一方面是代码声明的数量,简单说就是行数(尊重自己的话这个要用$或yen来计算)另一方面是运行时的最优化,这个工作编译器和诸如.net的运行时机制都在帮你辅助的完成。
最后,对一个编程者来说语言不是最至关重要的,如果不了解x86的cpu,如果你不了解windows api,script api,以及他们背后的复杂的内幕,就更本不可能写出好的桌面级的汇编,窗体,浏览器程序。


#18楼 [楼主] 2008-05-11 11:54 by 小余(Yice)      

伍迷: 引用
----------------------------
我不太赞同您的观点,事实上正是由于现在的教育都是先面向过程再面向对象,而使得很多人一开始都只会过程的思考问题,从而在转向面向对象时,感觉入手的困难。
我个人的开发从面向过程到面向对象时,应该比较轻松的一件事情,而如果是一开始就从面向对象切入的时候,而不具备有良好的面向过程的能力,他在转型的时候反而会有点问题,他们在代码处理的时候就如何规划和复用代码的考虑就会有不足。
--------------------------------------------------------
我曾经做过实验,直接给从来没有学过编程的人讲面向对象语言的开发,也就是说从类,实例讲起(当然,当中也是需要讲解变量、判断、循环、函数等基本知识)我感觉,尽快让学员进入面向对象的思维方式是很好的办法。
我不反对对算法和数据结构的深入研究,但从学习的角度,我认为先面向过程再面向对象是没有必要的。直接面向对象应该能更快的进入当前程序员应该有的角色当中。

用面向对象的思维去考虑问题,要求学员具备有很高的抽象能力,如果没有连好的开发基础能力,这种抽象能力可能是一种空洞能力,和开发出来的代码就会出现脱节。
--------------------------------------------------------
我曾经做过实验,直接给从来没有学过编程的人讲面向对象语言的开发,也就是说从类,实例讲起(当然,当中也是需要讲解变量、判断、循环、函数等基本知识)我感觉,尽快让学员进入面向对象的思维方式是很好的办法。
切实我所接触不少从经过培训机构培训后的新人,都会用面向对象的思维去考虑问题,但是反观他们的写出来的代码,我觉得很难体现出面向对象的味道在内,恰恰相反,连程序的基本结构都处理的有不少问题。
--------------------------------------------------------


#19楼2008-05-11 11:54 by yangjun      

哈哈.百家争鸣.

#20楼2008-05-11 12:01 by 伍迷      

@小余(Yice)
当然,你说的也不无道理,你所提到的

“我所接触不少从经过培训机构培训后的新人,都会用面向对象的思维去考虑问题,但是反观他们的写出来的代码,我觉得很难体现出面向对象的味道在内,恰恰相反,连程序的基本结构都处理的有不少问题。”

也是事实。

不过这只是中国目前教育落后的现状,不是不应该先学习面向对象的原因。哈,面向对象真的比面向过程难吗?您有空阅读一下我写的《大话设计模式》的附录一(不是广告的意思),应该就能理解我的意思。而且我的观点并不是我自己想出来的,我看过很多国外的大师的作品,都有提到及早学习面向对象的好处。

#21楼2008-05-11 12:04 by Shinn      

许多没对象的初学者很容易写出面条式代码,只会在按钮响应事件里填代码。注意是填,而楼主的意思就是,要填就填吧。最后每个页面代码都很长。甚至一个ASPX页面可以超出2000行,然后极少有单独的类。

看起来好像也能运行,可是你想过没,最后的维护者往往不是开发者本人。维护起来是非常麻烦的。

再者,我认为java或者C#并不需要c基础。对于有经验的程序员来说。语言只是工具而已。先设计出程式的架构然后填就是了。我认识一个人,大学学的是dephi。后来工作中有用VB,有用java,用过notes函数编程.现在改用C#都没有问题.

编程关键是思想.面向过程编程和面向对象都是,问题是你熟悉了一个就很难改正过来。就像你养成了吸烟的习惯,想戒掉是很难的。
有些自以为无所不能的程序员,只会在双击按钮之后填代码。当然他也能在空隙里填代码完成任务,可这样行吗?

#22楼2008-05-11 12:10 by 文野      

面向对象与面向过程都与语言无关,这是两种不同的思维方式。面向对象在解决复杂度、代码复用方面是肯定优于面向过程的。只是我们很多人受大环境的影响,要么受自己过去过程化思维定式的影响,要么得到那些并非对面向对象理解比较深入的“师长”的教导,使我们实际的应用做不到真正的面向对象。
在面向对象前要先学面向过程,这如同人是从猿猴进化来的,所以人生下来应该做做一只猴子一样可笑;如果说面向对象是毒瘤,那么进化成人的博主已经是病入膏肓了。

#23楼2008-05-11 12:11 by 金色海洋(jyk)      

@伍迷
不好意思,我在第13楼的回复,是开了一个玩笑,也有点捣乱的意思,在这里向您道歉。

其实我知道你的意思,你的书我也在看,也是很有收获的。

面向对象设计一个时钟的话,可能需要考虑下面几点:

1、获取起始时间。可以获取电脑时间或者通过属性设置。

2、启动时钟。比如间隔一秒重绘一次页面,不对,应该是时间计算吧。就是做一个函数、或者是事件。

3、绘制表盘。可以使指针的形式,也可以是,数字的形式,还可以是js flash等等。


面向过程呢,很可能会先想到具体的难点,比如指针怎么绘制,怎么让他一秒钟蹦一格。1到12个小时(圆圈的那个)怎么弄出来。

其实我根本就不会做时钟,所以我先想到的是弄一个现成的,呵呵。

=========================

在项目里面,我是面向数据库的,以面向对象为主,参考面向对象的思路。


#24楼 [楼主] 2008-05-11 12:15 by 小余(Yice)      

--引用--------------------------------------------------
是不是用面向对象语言写出来的程序就是面向对象呢?这是肯定的,至于这个编程者构建的符合语法定义的对象和实际追求的抽象对象间的差距,这是由编程者决定的。
确实是由编程者决定采用哪种方式来实现实际的问题,但是对于初学者来说所缺少的就是这种判断的能力,如果希望他们能够学好,我想还是一步一个脚印的更为合适。
为什么pascal最终在教学书上被淘汰了?因为它不符合现在流行的编程思想和编程工具。而C语言却的有着承上启下的灵活结构,并且不断的修正,是被实际使用的工业语言。
pascal语言被淘汰不是因为他不符合这些流行的思想,那只是各个高校在选择教材上个一个判断,可能受:“落伍思想的影响。”我个人觉得pascal作为初学者入门的教材是一个非常好的选择,语言本身的特点让出学者可以尽快了解面向过程的那些结构性设计。
LZ的标题应该改成在面对对象的布局之前,是不是应该牢固一个过程的编程基础?
标题确实有点大,多少有点叫卖的味道。
实际上考察任何对象化的语言的语法定义,都有过程的部分,而这部分在很多语言上是极其的相似的,最好的例子就是java与C#。如果真的世界上每所大学都把汇编之类的微控制的语言当作一种主流语言来进行教学,程序员真的都和陈XX不远了。
其实我不反对主流教学采用面向对象进行,但是现在很多初学者只把眼观放在这个上头,除此之外便再也容不下其他东西。
编程的核心思想是什么?我的看法是以最小的代价,写出最优的数据定义和数据处理逻辑,一方面是代码声明的数量,简单说就是行数(尊重自己的话这个要用$或yen来计算)另一方面是运行时的最优化,这个工作编译器和诸如.net的运行时机制都在帮你辅助的完成。
最后,对一个编程者来说语言不是最至关重要的,如果不了解x86的cpu,如果你不了解windows api,script api,以及他们背后的复杂的内幕,就更本不可能写出好的桌面级的汇编,窗体,浏览器程序。
这些观点我很赞同,这是因为需要知道其内在的原理才能用好他,所以初学者希望学好面向对象开发也应该从面向过程开始起步。



--------------------------------------------------------

#25楼2008-05-11 12:22 by 金色海洋(jyk)      

其实面向过程的最主要的优点是:

解决了代码级的复用。

把可以重复使用的代码写到了一个函数里面,然后多次调用。

但是对自己的管理就很弱了,就是说只能对付代码,不能对付函数。只实现了初步的代码复用的问题。

缺点就是:扁平的,不能分出来层次。

假设.net框架里面没有命名空间,所有的类都在一个层次里,那得乱成什么样子呀。


而面向对象呢。

它不仅可以管理函数,若干相关的函数,组合成一个类。(我的理解,可能不对吧)

而且可以对类再进行管理,继承、多态、接口等。


可以利用命名空间来分出层次,但是也带来了一定的难度,怎么划分,怎么设计,面向接口编程、依赖倒置等等,这些无疑都是不可能一下子就完全掌握的。

就是说增加了学习的难度,当然掌握之后,解决问题就会更加的轻松。


#26楼 [楼主] 2008-05-11 12:25 by 小余(Yice)      

--引用--------------------------------------------------

伍迷: @小余(Yice)

不过这只是中国目前教育落后的现状,不是不应该先学习面向对象的原因。哈,面向对象真的比面向过程难吗?您有空阅读一下我写的《大话设计模式》的附录一(不是广告的意思),应该就能理解我的意思。而且我的观点并不是我自己想出来的,我看过很多国外的大师的作品,都有提到及早学习面向对象的好处。

--------------------------------------------------------

前段时间出版社向我约稿的时候,提到你的书,我只是在书城粗略的看一下,并未深读。书写的不错,不过书并不适合我读,如果我需要读的时候,我会选择 Design Patterns:Elements of Reusable Object-Orient(设计模式:可复用面向对象软件的基础)。每本书都有其合适的读者对象,这个和语言开发一样,其实无论面向对象还是面向过程,都只是开发的一种工具,至于如何使用这些工具关键在于人。

#27楼2008-05-11 12:30 by 坏人      

面向对象是一种思想,帮助你规划更大规模软件的一种基础思想,不要把他看得太神化,就会少很多困惑了.

#28楼2008-05-11 12:32 by 伍迷      

@小余(Yice)
我没有要你去购买的意思,只是说,你有空可以去书店看看这本书的附录一,那是讲面向对象基础的,也是我以前的教学实例,普遍反映都不错。

我的意思是说,面向对象并不神秘,只不过是一种思维方法而已。先学它没有什么不好,而早学它将有助于程序员更快的成长。

我是有过教学实践的,甚至在不学了几天的学生那里我就开始讲解了简单工厂模式和模板方法模式,效果也非常好(学生可以理解说明它并不神秘),也就是说,我是通过实践证明一来就学面向对象编程是完全可以的实行的。

#29楼 [楼主] 2008-05-11 12:34 by 小余(Yice)      

--引用--------------------------------------------------
文野: 面向对象与面向过程都与语言无关,这是两种不同的思维方式。面向对象在解决复杂度、代码复用方面是肯定优于面向过程的。只是我们很多人受大环境的影响,要么受自己过去过程化思维定式的影响,要么得到那些并非对面向对象理解比较深入的“师长”的教导,使我们实际的应用做不到真正的面向对象。
在面向对象前要先学面向过程,这如同人是从猿猴进化来的,所以人生下来应该做做一只猴子一样可笑;如果说面向对象是毒瘤,那么进化成人的博主已经是病入膏肓了。

--------------------------------------------------------
我想面向对象在分析搞复杂度的问题上应该尤其优势,但是分析问题和实际的解决问题还有有差异,如果你见过用面向分析出来的代码确写的一塌糊涂,一个类一个函数,代码过千。如果你多看看初学者写出来的代码,我向你也会慢慢的病。因为我看的比较多,可能就像你说的,快病入膏荒了。

#30楼2008-05-11 12:43 by 横刀天笑      

我觉得面向过程和面向对象是方法论的问题,与写代码无关,至于楼主说的很多人接受的是面向对象的教育,但是写出来的代码却很难维护,这个跟面向对象的培训无关。
什么是用面向对象的思维方式考虑问题?对于对象思考方式而言:我们拿到一个问题,我们会将这个问题抽象成几个对象之间的交互,我们会思考对象的职责,
而面向过程呢?我们会按照顺序,分支这种思考方式,程序先应该做什么,然后应该做什么,

所以我个人认为面向过程和面向对象是分析问题的方式,而不是写代码的方式,你写了个class不代表用面向对象,你写了if else也不代表你用面向过程,关键是你如何来分析和看待这个问题

#31楼 [楼主] 2008-05-11 12:46 by 小余(Yice)      

--引用--------------------------------------------------
伍迷: @小余(Yice)
我没有要你去购买的意思,只是说,你有空可以去书店看看这本书的附录一,那是讲面向对象基础的,也是我以前的教学实例,普遍反映都不错。
其实你的书作为初学者的入门书籍来说,是一值得推介的。在这里我也给你打个广告,哈哈。
还有,伍迷我们可以多多聊聊,我和佩服你的坚持,其实写书非常辛苦,出版社向我约稿时,我都不敢确保我能够坚持写完。而且如果我写书的主要读者也是面向初学者。

--------------------------------------------------------

#32楼2008-05-11 12:55 by Shinn      

--引用--------------------------------------------------
小余(Yice): <em>伍迷: 引用<br />
----------------------------<br />
我不太赞同您的观点,事实上正是由于现在的教育都是先面向过程再面向对象,而使得很多人一开始都只会过程的思考问题,从而在转向面向对象时,感觉入手的困难。<br />
</em><span style="color: #000ff6;">我个人的开发从面向过程到面向对象时,应该比较轻松的一件事情,而如果是一开始就从面向对象切入的时候,而不具备有良好的面向过程的能力,他在转型的时候反而会有点问题,他们在代码处理的时候就如何规划和复用代码的考虑就会有不足。</span>
我更不同意楼主的观点。现代软件很少需要从面向对象转向面向过程。再说就代码复用本身就是面向对象的有点。
<em><br />
</em>--------------------------------------------------------<br />
<em>我曾经做过实验,直接给从来没有学过编程的人讲面向对象语言的开发,也就是说从类,实例讲起(当然,当中也是需要讲解变量、判断、循环、函数等基本知识)我感觉,尽快让学员进入面向对象的思维方式是很好的办法。</em><br />
<em>我不反对对算法和数据结构的深入研究,但从学习的角度,我认为先面向过程再面向对象是没有必要的。直接面向对象应该能更快的进入当前程序员应该有的角色当中。</em><br />
<br />
<span style="color: #000ff6;">用面向对象的思维去考虑问题,要求学员具备有很高的抽象能力,如果没有连好的开发基础能力,这种抽象能力可能是一种空洞能力,和开发出来的代码就会出现脱节。</span><br />
开发的基础能力缺乏的话,任何思想或方法论都无法让他写出像样的代码.面向结构编程的话,同样是不可以的.
--------------------------------------------------------<br />
<em>我曾经做过实验,直接给从来没有学过编程的人讲面向对象语言的开发,也就是说从类,实例讲起(当然,当中也是需要讲解变量、判断、循环、函数等基本知识)我感觉,尽快让学员进入面向对象的思维方式是很好的办法。</em><br />
<span style="color: #000ff6;">切实我所接触不少从经过培训机构培训后的新人,都会用面向对象的思维去考虑问题,但是反观他们的写出来的代码,我觉得很难体现出面向对象的味道在内,恰恰相反,连程序的基本结构都处理的有不少问题。</span><br />
几个月培训出来的学生水平当然有限.需要培训本身就说明其水平非常有限。
培训学校的主要作用就在于教会其熟悉java或C#。几个月就能从面向结构转向面向对象?你也太小看习惯改变的难度了。你应该拿普通计算机专业毕业的应届生来和他们来比的。企业招的应届生一般来说都是中上水平了,但通常在半年内到一年内是不大可能干实事的。
--------------------------------------------------------<br />
<br />
<br />

--------------------------------------------------------

#33楼2008-05-11 13:02 by 横刀天笑      

所以我不敢苟同楼主的意见,我并不是否定面向过程,只是针对这种学习方式,没有好坏,只有适合,而且我觉得学习编程这个东西无他,只有 code,code,code,试问大学里的编程课有多少是不断的code?至于什么语言并不是我先考虑的

#34楼2008-05-11 13:04 by sharpLT

是一篇好文章.
站在面向对象和面向结构编程的角度上,来看待事物,境界还不是底层,要站在成熟地哲学修养上来看待事物.两者一瞬间就了解了,有些内容甚至天然就会.另外,明白面向结构的思想,不一定要会结构性语言.

#35楼2008-05-11 13:09 by 横刀天笑      

嗯,呵呵
所以我想也许有下面这个比较:
面向过程思想与面向对象思想比较
面向过程编程与面向对象编程比较
面向过程语言与面向对象语言比较

不要比较混了,同等级比较才好说

#36楼2008-05-11 13:19 by STS

学编程就应该从二极管做起.
否则不可能理解CPU是如何实现的.
没有这些基础知识,更加不可能完成任何程序.

#37楼2008-05-11 13:26 by Jeffrey Zhao      

--引用--------------------------------------------------
STS: 学编程就应该从二极管做起.
否则不可能理解CPU是如何实现的.
没有这些基础知识,更加不可能完成任何程序.
--------------------------------------------------------
说了我想说的。
基础的确重要,但是我不同意面向过程就是面向对象的基础,更不同意“是不是说学不好结构性的编程语言就无法学好面向对象呢?答案应该是肯定的”。

#38楼2008-05-11 13:36 by 随风流月      

@Jeffrey Zhao
嗯, 我根本无法适应 Pascal 的工作机理, 因而学不好这样的结构性编程语言; 但是, 我甚至可以快速地适应 C# - 虽然我在此之前总是用 Visual Basic. (Visual Basic 9 同样是基于 .Net Framework 的面向对象语言)

#39楼2008-05-11 13:38 by 随风流月      

@Shinn
应届毕业生? 嗯, 我没什么好说的了. 我没有接受任何正式的计算机教育 - 这对我而言是遥不可及的, 除非我去上科大少年班 - 我花了一年半以上的时间才适应了面向对象, 并且把 Visual Basic 6/ASP 的陋习彻底抛到脑后去.

#40楼2008-05-11 14:05 by 镜涛      

虽然理解程序的机理是很重要的,可是站在巨人的肩上解决问题也是很重要的!

#41楼2008-05-11 14:08 by 王孟军!      

不能说“面向对象 ”不好,在某一个时代,人类的认知水平是有限的,
毕竟“面向对象”是我们现阶段 抽象实现世界最好的方法论
如果 楼主有更好的 抽象实现世界最好的方法论,i f y
有时候,我也在想,有没有更好的办法呢?很可惜,暂时还没有啊:)

#42楼2008-05-11 14:11 by 随风流月      

@王孟军!
抽象并不重要, 重要的是如何以最好的方式实现出需求. 无论是面向对象, 还是面向过程, 皆同此理.

#43楼2008-05-11 14:17 by 王孟军!      

@随风流月
--------“抽象并不重要, 重要的是如何以最好的方式实现出需求”-----


现在的软件开发,不象7,8年前,那种手工作坊了,
需要的是规范,低偶合,当然效率是第一位的

#44楼  2008-05-11 14:23 by kiler      

呵呵,周日大家都很闲啊,都不休息就开战了。

其实我觉得面向过程和面向对象只不过同一级别的两种不同的开发模式,不存在说面向过程是基础,面向对象是上层应用,不学面向过程一样的可以学好面向对象,我一个同学就是这样的例子,上学的时候直接学java,之前什么语言也没学过,结果适应面向对象的思想超快,我感觉我以前花了1,2年才理解的东西(我以前学过点面向过程的东西),他几个月时间就掌握的很熟练了。不过我在学面向对象的东西的时候很明显的可以感觉到面向过程思想的阻碍,有时候我在写代码的时候下意识的用面向过程方式去写,就从来没有去想过这个东西也可以面向对象的。当然啦这些东西有时候也看人的,有的人直接学面向对象死活也学不好。

#45楼  2008-05-11 14:24 by Justin      

来看看热闹

#46楼 [楼主] 2008-05-11 14:31 by 小余(Yice)      

--引用--------------------------------------------------
横刀天笑: 嗯,呵呵
所以我想也许有下面这个比较:
面向过程思想与面向对象思想比较
面向过程编程与面向对象编程比较
面向过程语言与面向对象语言比较
不要比较混了,同等级比较才好说
--------------------------------------------------------

单前者篇文章只是从开发语言的角度去说这个问题,看来我还需要在协一写,把三个问题在做个比较,这样可能会让大家把问题看得更清楚。

#47楼  2008-05-11 14:34 by 王孟军!      

楼主都笑得不行了,不扯皮了:)
这个问题,如果是七八年前,绝对是一焦点问题,呵呵

#48楼 [楼主] 2008-05-11 14:38 by 小余(Yice)      

--引用--------------------------------------------------
Jeffrey Zhao: --引用--------------------------------------------------
STS: 学编程就应该从二极管做起.
否则不可能理解CPU是如何实现的.
没有这些基础知识,更加不可能完成任何程序.
--------------------------------------------------------

其实现在反过来看大学中计算机专业给学生安排的课程,四年的学习中何尝不是从二极管开始应到学习基础知识,计算机专业的基础课程,单片机原理,接口技术,汇编语言,C语言,操作系统,编译原理,数据库原理等等,可是初学的学生有几个人能够学好这些可能,或许考完试都还给老师了。
--------------------------------------------------------
基础的确重要,但是我不同意面向过程就是面向对象的基础,更不同意“是不是说学不好结构性的编程语言就无法学好面向对象呢?答案应该是肯定的”。
其实这个问题还处在于我在文中没有说明面向对象的只是针对语言开发来说。关于语言和思想我还会写一篇来继续讨论。
--------------------------------------------------------

#49楼  2008-05-11 14:41 by leening      

--引用--------------------------------------------------
落木萧萧: 同意上述观点.爬金字塔要从它的基座开始.结构化思想是面向对象的基石;面向对象是面向组件的基石;面向组件是现在热吹的面向服务架构(SOA)的基石.
--------------------------------------------------------
这条抽象的很好,学习了

#50楼 [楼主] 2008-05-11 14:48 by 小余(Yice)      


--引用--------------------------------------------------
随风流月: @Shinn
应届毕业生? 嗯, 我没什么好说的了. 我没有接受任何正式的计算机教育 - 这对我而言是遥不可及的, 除非我去上科大少年班 - 我花了一年半以上的时间才适应了面向对象, 并且把 Visual Basic 6/ASP 的陋习彻底抛到脑后去.
-----------------------------------
---------------------
不是说只有计算专业的学生才能学好计算机,在工作中我碰到很多非计算机专业的同事,他们的开发和对计算机的理解绝对是优秀的,因为他们比计算机专业的人更加渴望了解计算机的相关技术。所以问题不在那种教育方式,而是希望初学者能够在学习中有一种认识:技术是需要基础的积累,现在快速开发工具有很多,初学者可能很快就能入门,这个时候他们就能算是开发工程师了吗?能够很好的工作部代表对开发语言本身了解精通,软件开发中还是有很多比较机械的工作。上周我面试了一个开发人员,三年工作经验,一年多的开发经验,是个女生,结果竟然连模态窗口和非模态窗口都不知道。还有她也是计算机专业毕业的。

#51楼 [楼主] 2008-05-11 14:55 by 小余(Yice)      

--引用--------------------------------------------------
王孟军!: @随风流月
--------“抽象并不重要, 重要的是如何以最好的方式实现出需求”-----
现在的软件开发,不象7,8年前,那种手工作坊了,
需要的是规范,低偶合,当然效率是第一位的

--------------------------------------------------------
现在开发确实和以前不一样了,快速开发工具的推出让开发变得非常容易,拖拖拉拉机可以实现很多功能,初学者上手的周期也非常短,而且在实际工作中有相当一部分工作是重复性和强的工作 ,那么就造成了初学者认为软件开发很简单的错误认识。我面试过的有些人,可能都工作了很多年,但是始终是在重复别人的工作,拿别人做好的样例进行重复性的工作,遇到问题就分析不了问题,更不要说有好的思路来解决问题。

#52楼  2008-05-11 15:03 by Justin。Zhang

首先,博主这篇文章向说明一个什么问题?大家不要再面向对象,那么我们应该怎么做呢?博主说了很多东西,我归纳为学习计算机需要理解计算机本质对吗?
其次,我觉得这个计算机基础知识和面向对象技术并不矛盾,更加确切地说,它们是两个纬度上的东西。一个是底层,一个是高层。这就好比C#和Java是基于GC的语言,开发者不需要关心细节的内存处理,不需要了解底层的实现。但是这并不代表着C#和Java就不好,相反的,因为它们高效,反而被越来越广的应用。
最后,你的上一个回帖说到了面试,如果那个女生,始终是做后端开发的,不了解模式对话框是很正常的。如果你所说的,一个人对计算机的理解更加重要。我不太喜欢面试时问别人概念型的技术细节问题,尤其是当这个问题用google查5分钟就能搞定的话,它本身并无太多价值。

#53楼  2008-05-11 15:13 by 随风流月      

@小余(Yice)
我们真的需要从二极管学起吗? 看完你的评论, 我越发对正式的计算机学习感到恐惧 - 学习一些一辈子用不着的程序, 然后给别人当佣工. 当然, 有的人适合做科学家, 所以他们需要这个领域的知识; 但是, 记住, 不是每个人都需要.

不要拿科班的经验强加到每一个人身上, 不是说科班出身就一定没有人才 - 而是非科班出身照样有人才. 至于重复性的工作, 我想这个性格有关, 虽然我工作时间可能很短(我活的时间到现在为止比你们都短), 但是我一样有完整的分析能力.

刚开始学的时候, 我以为很简单; 看得多了, 才发现, 他丫的有这么多要去自己理解, 自己提炼的.

#54楼  2008-05-11 15:15 by 随风流月      

@小余(Yice)
此外, 知道一个设计思想的各种概念并不等于掌握了这种设计思想; 掌握即意味着能够从更高的领域进行思考, 而不是机械化地重复它. 你可以看看我的随笔.

#55楼  2008-05-11 15:19 by 随风流月      

@王孟军!
Well, 我想流水式的软件生产可以造就最规范的代码, 但在现在来看, 它还不是最有效率的生产方式. 此外, 不拘泥于传统的范式, 也并不意味着手工作坊.

#56楼  2008-05-11 15:20 by 路过说说

光看标题“不要再面向对象 ”,在说明软件开发中不要使用面向对象?

具体看内容了,发现只是在说明初学者是否该先学面向过程,再来学面向对象。。。

这前后之间也太离谱了吧。文章的标题应该至少要有点概括的意思。

文中不少观点也不同意。

#57楼  2008-05-11 15:29 by 随风流月      

@小余(Yice)
即便单针对语言来说, 我也不同意你的观点. 面向对象语言继承了面向过程语言的特性, 当然也有所删减; 然而, 你始终没有阐述过, 优先学习面向过程语言的优势在哪里. 我始终不同意面向过程语言会是面向对象语言的基石.

#58楼  2008-05-11 15:54 by 炭炭      

软件学的本质来说,面向对象并没有改变软件运行的本质,所改变的只是代码开发中问题处理和思维方式
_______
你说出了面向对象的本质,但我却不同意你的结论。
因为现实的情况是,很多人披着OO的外衣,写得干的都是面向过程那一套。OO思想不是强调过分而是不足。当然这与许多人同时传授错误的OO思想有关,比如什么“道法自然”“一切皆对象”就不对。OO不是简单的客观世界的隐射,这中间有个抽象过程,而抽象能力的高低不同,最终产生的OO设计也不同。
最后总结就是,对OO思想的强调现在是不足而不是过,但是同时要认识与错误的OO思想。

#59楼  2008-05-11 16:08 by 怪怪      

路过, 拿分走人。 =D

#60楼  2008-05-11 16:10 by 随风流月      

@怪怪
欢迎!有空来我 Blog 看看,如何?

#61楼  2008-05-11 16:12 by Jeffrey Zhao      

--引用--------------------------------------------------
小余(Yice): <em>--引用--------------------------------------------------<br />
Jeffrey Zhao: --引用--------------------------------------------------<br />
STS: 学编程就应该从二极管做起.<br />
否则不可能理解CPU是如何实现的.<br />
没有这些基础知识,更加不可能完成任何程序.<br />
--------------------------------------------------------</em><br />
<span style="color: #0010ff;">其实现在反过来看大学中计算机专业给学生安排的课程,四年的学习中何尝不是从二极管开始应到学习基础知识,计算机专业的基础课程,单片机原理,接口技术,汇编语言,C语言,操作系统,编译原理,数据库原理等等,可是初学的学生有几个人能够学好这些可能,或许考完试都还给老师了。</span><br />
--------------------------------------------------------<br />
<em>基础的确重要,但是我不同意面向过程就是面向对象的基础,更不同意&#8220;是不是说学不好结构性的编程语言就无法学好面向对象呢?答案应该是肯定的&#8221;。</em><br />
<span style="color: #0010ff;">其实这个问题还处在于我在文中没有说明面向对象的只是针对语言开发来说。关于语言和思想我还会写一篇来继续讨论。</span><br />
--------------------------------------------------------<br />
<br />

--------------------------------------------------------
的确学这些课程,但是学习这些课程也是建立在一定抽象之上的,并不是从“底”学起,从底学起没有必要,也不科学。

#62楼  2008-05-11 16:14 by Jeffrey Zhao      

--引用--------------------------------------------------
随风流月: @Jeffrey Zhao
嗯, 我根本无法适应 Pascal 的工作机理, 因而学不好这样的结构性编程语言; 但是, 我甚至可以快速地适应 C# - 虽然我在此之前总是用 Visual Basic. (Visual Basic 9 同样是基于 .Net Framework 的面向对象语言)
--------------------------------------------------------
你这个不是因为学不好面向过程的编程,而是不喜欢学校教的信息学内容,不是一个状况。

#63楼  2008-05-11 16:20 by 随风流月      

@Jeffrey Zhao
Pascal 的编辑器实在降低生产力。。。

#64楼 [楼主] 2008-05-11 16:22 by 小余(Yice)      

--引用--------------------------------------------------
Jeffrey Zhao: --引用--------------------------------------------------
随风流月: @Jeffrey Zhao
的确学这些课程,但是学习这些课程也是建立在一定抽象之上的,并不是从“底”学起,从底学起没有必要,也不科学。
--------------------------------------------------------
你这个不是因为学不好面向过程的编程,而是不喜欢学校教的信息学内容,不是一个状况。
其实现在很多学生都有点抗拒这些课程,认为学习这些课程是浪费。其实即便是蜻蜓点水,对他们来说也是一件好事。
--------------------------------------------------------

#65楼  2008-05-11 16:34 by 随风流月      

@小余(Yice)
我就是一个反对者. 对我们而言, 这完全是浪费时间 - 纯粹为竞赛而设立的教学内容没有任何可圈可点之处. 嗯, 我现在初中.

#66楼  2008-05-11 16:39 by 曲滨*銘龘鶽      

楼主是标题党的先说;

如果全部程序员都按照楼主的学习方式一步步的学
估计大家都会饿死的;

现在软件开发用的预言和改念,和我刚入行时比已经不知道翻了多少翻

如果你让刚入行的人重最基础的 字节代码,汇编代码,C,C++,VC,java,c#
这么学下来估计呵呵不死也差不多了。

学写底层的东西是不错的那也得有个限度的不是?

现在软件开发已经开始分化了,不像以前Dos时代
因为当时,整个dos下就哪么多东西,相对现在东西少n倍,虽然开发工具垃圾点不过东西还是比较少的相对。

现在就不同了
不再都是单机程序,不再都是桌面应用程序

个人感觉现在的程序员能在某一领域nb就不错了

#67楼 [楼主] 2008-05-11 16:40 by 小余(Yice)      

--引用--------------------------------------------------
随风流月:
即便单针对语言来说, 我也不同意你的观点. 面向对象语言继承了面向过程语言的特性, 当然也有所删减; 然而, 你始终没有阐述过, 优先学习面向过程语言的优势在哪里. 我始终不同意面向过程语言会是面向对象语言的基石.
其实都是个人的看法,如果说学习面向过程的优势在那里,到目前为止计算机的指令还是按照顺序执行,在我们处理程序的时候,假定程序是在单线程下运行,程序的总体的运行是至上而下的逐条运行。其实学习面向过程并没有比面向对象有多少优势,而是简单,希望初学者能够先学好这些简单的程序处理,然后再进行抽象。
--------------------------------------------------------
不要拿科班的经验强加到每一个人身上, 不是说科班出身就一定没有人才 - 而是非科班出身照样有人才. 至于重复性的工作, 我想这个性格有关, 虽然我工作时间可能很短(我活的时间到现在为止比你们都短), 但是我一样有完整的分析能力.
刚开始学的时候, 我以为很简单; 看得多了, 才发现, 他丫的有这么多要去自己理解, 自己提炼的

人不同所以状况不同,我们先不考虑每个人是否会积极主动的去钻研,分析问题。我只是希望初学者在学习的时候能够了解到学习的一些问题,避免排斥所谓的旧技术,充实他们的基础能力。

#68楼  2008-05-11 16:41 by Mainz      

程序 = 算法 + 数据结构

高手都是玩底层的,低手都是玩高级语言

大师是玩完了底层的,再来高级的,我们现在都是反了。

#69楼 [楼主] 2008-05-11 16:54 by 小余(Yice)      

--引用--------------------------------------------------
Justin。Zhang: 首先,博主这篇文章向说明一个什么问题?大家不要再面向对象,那么我们应该怎么做呢?博主说了很多东西,我归纳为学习计算机需要理解计算机本质对吗?
其次,我觉得这个计算机基础知识和面向对象技术并不矛盾,更加确切地说,它们是两个纬度上的东西。一个是底层,一个是高层。这就好比C#和Java是基于GC的语言,开发者不需要关心细节的内存处理,不需要了解底层的实现。但是这并不代表着C#和Java就不好,相反的,因为它们高效,反而被越来越广的应用。

其实这篇文章主要是给初学者看的,主要想说明学习需要一个循序渐进的过程,如果希望学好一种开发语言,就要有很好的基础能力。
我并没有提倡学生一定要从计算机起点开始学习,所以不一定要从计算机基础知识开始学习编程,毕竟这个偏离的有点远,大是从程序开发的角度来看,我们更关注的是程序本身开发的基础知识和程序的逻辑结构,在Java和C#这种语言虽然开发人员不需要管理内存处理,但是如果希望开发好的程序,还是需要基本的变量类型的处理,函数处理等等。
最后,你的上一个回帖说到了面试,如果那个女生,始终是做后端开发的,不了解模式对话框是很正常的。如果你所说的,一个人对计算机的理解更加重要。我不太喜欢面试时问别人概念型的技术细节问题,尤其是当这个问题用google查5分钟就能搞定的话,它本身并无太多价值。
其实面是这个女生是我和另外一个同事一起的,问题是他提出的。不过让我诧异的试这个女生做了一年多的web页面开发,也做过windows application的测试。因为在面世的时候很多问题她都不了解,出于无奈才问她是否知道对话框的模式。
--------------------------------------------------------

#70楼  2008-05-11 17:16 by 随风流月      

@Mainz
我坚决反对你的观点.

#71楼  2008-05-11 17:18 by 随风流月      

@小余(Yice)
嗯, 我们伟大的 CPU 同志还不能像大脑那样允许无序地执行命令.
此外, 基础能力不一定需要用面向过程的语言培养, 针对初学者, 一样是可以用面向对象的语言 - 事实上, 很多人是用面向对象的语言写面向过程的程序. 这也无妨, 只要有生产力即可, 但是他们真的有生产力, 能解决实际问题吗?

#72楼  2008-05-11 17:20 by Jeffrey Zhao      

@随风流月
根据我的体会,能适应普通编辑器的话对于生产力提高很大。

#73楼  2008-05-11 17:27 by 路缘      

@Mainz
--引用--------------------------------------------------
Mainz: 程序 = 算法 + 数据结构

高手都是玩底层的,低手都是玩高级语言

大师是玩完了底层的,再来高级的,我们现在都是反了。
--------------------------------------------------------
同意。
语言没有本质差别,都如大家说的仅仅是工具,只是用不同语言的人的功力有差别。

枯荣大师道:“本因,咱们练功习艺,所为何来?”本因没料到师叔竟会如此询问,微微一愕,答道:“为的是弘法护国。”枯荣大师道:“外魔来时,若是吾等道浅,难用佛法点化,非得出手降魔不可,该用何种功夫?”本因道:“若不得已而出手,当用一阳指。”枯荣大师部道:“你在一阳指上的修为,已到了第几品境界?”本因额头出汗,答道:“弟子根钝,又兼未能精进,只修得到第四品。”枯荣大师再问:“以你所见,大理段氏的一阳指与少林拈花指、多罗叶指、无相劫指三项指法相较,孰优孰劣?”本因道:“指法无优劣,功力有高下。”枯荣大师道:“不错。咱们的一阳指若能练到第一品,那便如何?”本因道:“渊深难测,弟子不敢妄说。”枯荣道:“倘若你再活一百岁,能练到第几品?”本因额上汗水涔涔而下,颤声道:“弟子不知。”枯荣道:“能修到第一品么?”本因道:“决计不能。”枯荣大师就此不再说话。

#74楼  2008-05-11 17:30 by 随风流月      

@Jeffrey Zhao
Pascal 在我们学校教的时候貌似连 Windows 下的编辑器都没有; 其实我可以适应 Notepad 的, 但是我无法忍受没有鼠标支持的编辑器.

#75楼  2008-05-11 17:58 by Vincent      

应该从什么语言用什么方法,都有个人选择,怎么来的舒服怎么算,至于是否非要从汇编什么的开始也无所谓吧.这完全是个人选择问题,是使用与研究的两个方面.
加减乘除会用就好,至于为什么1+1=2,这种问题喜欢研究的人自然回去研究,否者的话会用就好了.

#76楼  2008-05-11 18:01 by Shinn      

@随风流月
@小余(Yice)
--引用--------------------------------------------------
随风流月: @Shinn
应届毕业生? 嗯, 我没什么好说的了. 我没有接受任何正式的计算机教育 - 这对我而言是遥不可及的, 除非我去上科大少年班 - 我花了一年半以上的时间才适应了面向对象, 并且把 Visual Basic 6/ASP 的陋习彻底抛到脑后去.
--------------------------------------------------------


我的意思是楼主提到培训生面向对象也有很差的,我当时帖子的意思是培训生只能和大学应届生比,而且是只能和中等及中等以下的比.而且不到一年的教室教育是很难让学生真正掌握面向对象的.

另外如果已经养成双击>>填代码的习惯后,转成面向对象是非常困难的。至少我所见的大多数转型的人都是这样。

当然也有例外,比如楼主就说非常容易。另外我私下揣度楼主是否把了解对象知识的时间给省略了。:)

面向对象我认为最大的好处就是降低了开发者的关注面。不需要同时考虑所有模块。从而将复杂度降低。

#77楼  2008-05-11 18:05 by 生鱼片      

个人觉得在现在这个时代,除非你做的技术和面向对象没关系,比如底层的开发,否则面向对象还是不可缺的工具。

#78楼  2008-05-11 18:47 by Jeffrey Zhao      

--引用--------------------------------------------------
@Jeffrey Zhao
Pascal 在我们学校教的时候貌似连 Windows 下的编辑器都没有; 其实我可以适应 Notepad 的, 但是我无法忍受没有鼠标支持的编辑器.
--------------------------------------------------------
很多人都是这样过来的,受益匪浅。没鼠标没关系阿,其实鼠标/键盘的切换很花时间的。我还是不相信你的编辑器理论,我还是认为你是因为教的内容而不干的,呵呵。

#79楼  2008-05-11 19:16 by Allen Lee      

F#:为什么没有提到函数式编程?
IronScheme:恐怕我们被人忽略了。
F#:难道他们不知道LINQ从我们这里借鉴了多少东西么?
IronScheme:这恐怕就是所谓的“一丈功成万骨枯”吧。
F#:Microsoft已经答应让我产品化了,我要让他们好看!

#80楼  2008-05-11 19:20 by 笨小苏      

跟教育部的专家一样,脑子进水了
白痴的去搞“精英英语教育”
搞了几十年,浪费了无数青少年的未来,发现一纯垃圾。
80%以上的人懂26个字母就能解决绝大部分问题

什么才是基础?有了基础又怎么样。
几十年寒窗的儒生,不下千万,能功成名就的有几个。
没有被尊重的个性,和基于本能的坚持,能成大事者实属巧合!

#81楼  2008-05-11 19:25 by wwxa

已经是高手了,为啥不面向对象,又不是写汇编。

来自:不要再面向对象

分类: 设计模式 系统架构



关于酷勤 | 联系方式 | 免责声明 | 友情链接