那么您想自己发明个飞机然后再乘坐呢?还是直接乘坐?如果是后者我们的想法就是一样的,所说的那些“必须”其实都不是必须的,如果是前者就必须有实践来佐证,如果您发明了飞机,我就无话可说了,但还需要有“所有人不发明飞机都无法乘坐飞机”的事实来佐证,如果没有,那个“必须”同样不是必须的。
我当然知道飞机需要发明了,但我需要知道是怎么发明的吗?框架当然能完成作业了,我究竟是否需要知道它内部的一切?还是我只需要知道它能干什么和有什么危害(像飞机会失事)?对发明飞机的人来说当然需要知道内部的东西了,对坐飞机的人来说不需要。这就是差别了。难道每个乘客都必须知道怎么发明飞机吗?各个例子都一样,无论换成钻木、电影导演、生命或飞机其中的哪一个。
不能拿着被混淆的概念来做论据啊,想知道和必须知道是两回事,知道用和知道构造也是两回事,只有在您所说的“必须知道”的东西不知道的情况下,根本就不能完成那个动作,这才真正是必须的。我要是开发飞机的当然必须知道硬件结构了,但是我利用飞机做交通工具的功能来载人去某地就是另一回事了,飞机(框架)经把这个隔离了,除非当所有人都不知道飞机结构的时候,每一个都根本不能乘坐,必须有这样的例子做证明,才能说明了解飞机结构是乘坐飞机的必要条件,没有飞机构造的知识是真的无法动作的,否则就是个不必要条件。

楼上你真会强词夺理啊。我是不知道飞机怎么构造,因为我的专业不是这个。但是楼上你难道要说你不是程序员??大家都会治感冒,你流鼻涕也会吃感冒药,如果感冒到老不好你要去看医生对么??我想你也不愿意医生告诉你,原理的我不懂,但不影响开消炎药(倒是现在很多医生都这样)。麻烦有点职业素质啊。

程序员难道只有一种?不分类别的么?从造操作系统到造应用服务器到造应用程序难道都是一个组一路下来?有底层程序员造了个隔离出来,上面的当然不必知道底层了,哪里在强词夺理?难道任何一个程序员必须知道知道计算机的一切?真是岂有此理。如果不是全部知道的话,又有什么理由拿这个做证据?
再说一次要有层次感,有了隔离层是不需要知道隔离下面的事的,无论上推或下推都一样,无论层次的粒度大小道理都相同,OO就是隔离层,没听说谁研究了String类之后才放心使用的,框架也是个隔离层。深究的话为什么不深究到底?不承认使用框架和构造框架是两回事的同时为什么不再追究对象的使用和构造差异呢?
既然讲到把责任归于程序员说明已经有了层次,只是粒度很大,把层次界定在计算机和物理之间,但是却没有再深入的去承认计算机世界同样具有层次。

你这是典型的中国官员的想法,自以为层次很高,只要在上面指挥一下就行了,所以中国足球如此、中国经济如此、中国教育如此,专业必须从下而上,至少要有实际的经验才能谈到指挥若定,我想Free小兄弟哪天做到什么框架搞不定的东西就只能坐着等发明框架的人去实现了,当然了人家已经很全面了,恐怕小兄弟会觉得等不到这个日子,不过当你真的有解决不了的问题,上网也没人愿意回答的时候,恐怕你就在想如果我能到框架里面看看它到底怎么搞的了。我发表这些感慨并非否定框架的使用,只是希望大家在享受其成的基础上能都略尽自己的绵力去多多剖析和分解,把结果和大家共享,这样,大家才能共同进步,不想大家都坐在那儿等着,毕竟成年人都是自己吃饭,只有小孩才等着喂饭。

对啊,据说外科医生真的不懂中医,中医也真的不会用刀的,但是西医会通过仪器分析查看血糖(别说他需要了解仪器构造,那是其他设计师的事情,跟医生无关的),中医会望闻切问。可以你这位java程序员,用的东西什么原理都说不清楚还有脸皮说的如此冠冕堂皇,真的觉得很佩服了。如果一个人想找理由偷懒总会找到的。

前两天几个朋友喝酒说了一个笑话,一个朋友说不管你说什么词,他都能用“一只红杏出墙来”对出下句,我们举了很多,比如说“馒头”,他说“红杏”,我们说“吃饭”,他说“出墙”,我们说“两个黄鹂鸣脆柳”,他就对“一只红杏出墙来”,如此等等。freebox老兄便是这位高人啊,不需要懂对仗文笔,不需要明白文字意义,你有来言我有去语,你有万般上联,我只一句来对。过去我以为是笑话,没想到现实还真有这样的人啊。

对仗和对联间有隔离层吗?没有就别拿这个举例,没有可比性。
就不觉得自己以为很懂底层?真是奇哉怪也。
看待任何一层都别带着自己的个人色彩,没有找准有效的隔离层来讲是不是底层没有意义。难道两位都没找到网络中间路由这样的隔离,都是跟踪了这几个帖子的数据包一路过来最后发到这里的?

首先纠正楼上文学上的一点认识,对对联首先要对仗公证,平仄相对,这是基础。希望楼上在传统文学上有所加强(不过估计你够呛了,因为你会说说话我会,根本不需要明白)

其次,我对TCP/IP协议有一定了解,如果需要我会用tracert命令跟踪我的路由的,如果我想攻击某网站,我也会尝试更改HTTP协议的头来实现一些探测目标的(这个比修改TCP的报文头简单多了)。当然我明白原理并不需要每次访问我都用,但是如果出现问题这些知识会帮我发现问题排除故障。

最后,请楼上自己看看楼主的帖子跟自己的回复,你会发现你在偷换概念+强词夺理,我只是认为一个人最起码要对自己经常用的东西熟悉,明白一些框架的原理,也许我们写不出来这么好的框架,但是明白中间的道理对自己的提升还是有很大作用的。

“对对联首先要对仗公证,平仄相对,这是基础。”这正说明了对仗和对联间没有隔离层,所以这个论据其实在论证我的观点,对于企业应用来说,技术不是基础而业务是基础。再说一点就是我的文学水平不是楼上所说的那么差,至少我还在全区对联大赛上得过奖,可能又要说评奖人如何如何的水平低,我也不会理会。用不着出言讥讽,没人吃这一套。
楼主的意思是在说明对于程序员应该掌握什么,而我在说明对于程序员也是分层次的,不能是传统的认为程序员就只是和计算机打交道。不同层次有着不同的基础要求,业务程序员的基础是业务,技术程序员的基础是技术。不能笼统的说程序员都是一样的基础。所说的偷换概念是“程序员”这个概念没有明确提出来,这是概念歧义,你我的理解方向不同。

那么您想自己发明个飞机然后再乘坐呢?还是直接乘坐?如果是后者我们的想法就是一样的,所说的那些“必须”其实都不是必须的,如果是前者就必须有实践来佐证,如果您发明了飞机,我就无话可说了,但还需要有“所有人不发明飞机都无法乘坐飞机”的事实来佐证,如果没有,那个“必须”同样不是必须的。


这个比喻我实在觉得不对。对自己的定位不正确(你是把自己定义在乘客,还是造飞机的?)乘客才是后者(愿意直接坐的)。跟你的软件的用户是一样的。用软件的人当然不想了解你的软件怎么写。可是你现在是程序员。就跟中国的造飞机的公司一样。他是非常想自己造出飞机的发动机。可是他不得不用国外的发动机。

我已经说明了程序员也有很多层次,每个程序员都有自己的那一层或者拥有多个层次的技能,而这里笼统的说“程序员”这个词,造成了很多东西的理解不同。
造飞机和用飞机可以类比造框架和用框架,这个如果有争议之后再说,先假设这是正确的类比,那么也就说明了用框架做业务是“非造框架程序员”的任务,这个层次的程序员主要理解的应该是业务,框架自然需要人造出来,但是那不是业务程序员首要考虑的,一个业务程序员不懂业务规则还能混么?而框架的制造是另一个层次的。
不懂框架的制造原理也就不能在制造框架的层次混下去。但是却能在业务程序制作的层次很好的工作,不懂业务的框架程序员显然不能在这个业务软件行业混,但是不表示他不能造出一个良好的框架,这本来就是两个层次,中间有着隔离层,但却不能说业务程序员就不是程序员。上面说我偷换概念的根源就是程序员的概念定义不明确,所以我无法说服别人,别人也无法说服我,我们理解的方向就不同,各自在对方的眼里都是错的。

"我已经说明了程序员也有很多层次"楼上的这句话说的非常到位,呵呵,我也知道楼上的层次了。

那么姑且先算楼上是个业务程序员吧。想问你是把业务需求转化为技术需求的那类人么??如果是,那么咱俩应该是同行了,基本上现在用PPT跟伪代码工作了。不过我还是很喜欢了解底层一些的东西的,也许是因为我从那里开始的吧。因为我觉得,对于业务人员而言,他们有的时候不知道他们真的需要什么东西,你需要通过一些方式来帮助他们最终想获得什么样子的东西。然后你要能够根据他们的需求去鉴定一个目标系统的好坏,你需要了解系统优势是什么,好处有什么,同时也要明白缺陷是,未来发展的阻碍是什么(是需求的不稳定,还是在线人数的暴增,是金额敏感性还是目标分析型)然后作出选择。如果你不了解也许无所谓,因为很多时候你跳槽的频率会大于软件更新的频率,不过如果你这样想,那么就是一个程序员的悲哀了。

造飞机和用飞机不可以类比造框架和用框架
造飞机和用飞机可以类比为造软件和用软件

造框架和用框架可以类比为造发动机和用发动机(用发动机干什么?当然最后是造飞机了。)就等于最后造软件。这么简单的道理。

造框架的人为什么想要你用他的框架(发动机),简单。你的飞机就是他的飞机。你的市场就是他的市场。你的销售就是他的销售。你赚钱就等于他赚钱。
[该贴被cnng007于2008-09-23 01:26修改过]

这就是在不同层次上,对类比理解的不同。
只站在计算机自己的世界里看待,就像造发动机和造飞机一样,而站在更广泛的范围上,把计算机当作工具来看,就可以类比成造飞机和用飞机。就像科学技术转化成生产力一样。
而分层的思想是下层向上层提供接口,实现对上层透明,上层依赖下层的API而不是实现,下层不依赖于上层。如果上层直接访问了下层的实现,或者下层依赖了上层的知识,这就不是一个好的隔离,这也是错误的选择。
就算同时掌握不同层次的技术,可以充当不同的角色,也不能让自己随意的访问两层,中间要有API的隔离,没有隔离的都应该是高度内聚的知识,如果不分层次随意访问,隔离也就被破坏了,这是不应该出现的,这就是上层性能出了问题,不去思考上层本身的问题,直接去思考下层的实现,最后导致直接优化CPU这种不合理的实现方式。

要证明一件事情是对的是很复杂的,要证明它是错的只要举个反例即可。想知道和必须知道是两个意义,不能混淆概念,所以这并不能作为论据来证明什么。
我不知道生命起源,但我活得很不错,这个反例足以证明生命起源的知识不足以影响生活的好坏。必须举出所有生命体在不知道这一知识的情况下,生活得都不好,才能够证明这是必须的、重要的知识。
类比程序世界也一样,必须举出所有的情况,在不知道底层知识的情况下它都不能完成作业,才能够说明底层知识的必要性,否则无论您采用哪一种取火方式,都不足以达到最原始的状态,因为可以无限下降到非取火问题的讨论上,但如果已经取到火了,就证明了至少在这个特定的取火问题上底层知识的不必要性,可以认为是个充分不必要条件。
如果承认OO封装的必要性,这种封装是同样适用于更高层次的模式状况的,因为我们用它解决了不少问题,尽管没有理论证实,但也鲜有反例,就像量子理论一样,虽然不能进行正常的说明,但应用上至今没有问题。


1.要证明一件事情是对的是很复杂的,要证明它是错的只要举个反例即可。
这句话说得没错。马克思说:实践是检验真理的唯一方法。
2.我不知道生命起源,但我活得很不错,这个反例足以证明生命起源的知识不足以影响生活的好坏。
这并不代表人们不想知识生命起源。更不代表生命起源不会影响生活的好坏。仅仅代表你这样懒堕。拿来主义的人。
从这上面可以看出你只是用感觉、知觉、表象进行认识的人的。是感性认识。是认识的初级形式和初级阶段。了解底层知识就是对物质本质的和它们内在联系的认识。是理性认识。是认识的高级阶段。
3.如果承认OO封装的必要性。是的。
正好这正是理性认识的表现。OO封装正是我们对程序本质的认识。他的本质是我们对封装后过程的结果的肯定。而不是我们对过程和结果的无知。

这就是在不同层次上,对类比理解的不同。

对。不同层次上的问题。本不应该拿来做对比。是没意义的。CPU和软件以及框架本就不是同一个层次的东西。不知道你为什么还老拿来作对比。这就是没有认清事实。