VC/MFC
VB
Delphi
C++ Builder
C/C++
Java
.NET技术
MS-SQL Server
PowerBuilder
DB2
Oracle
Web 开发
Linux/Unix社区
硬件/嵌入开发
移动平台
您的位置:
程序门
->
java
-> 非技术区
转帖]面向上帝的编程语言
[
收藏此页
] [
打印本页
]选择字色:
默认
灰色
红色
黄色
绿色
橙色
紫色
蓝色
褐色
墨绿
深蓝
赭石
粉绿
淡绿
黄灰
翠绿
综红
砖红
淡蓝
暗红
玫瑰红
紫红
桔黄
军黄
烟灰
深灰
灰蓝
背景色:
默认
黑色
红色
黄色
绿色
橙色
紫色
蓝色
褐色
墨绿
深蓝
赭石
粉绿
淡绿
黄灰
翠绿
综红
砖红
淡蓝
暗红
玫瑰红
紫红
桔黄
军黄
烟灰
深灰
灰蓝
字体:[
大
][
中
][
小
]
转帖]面向上帝的编程语言
[已结贴,结贴人:gare1000]
发表于:
2007-05-08 20:32:40
楼主
原文地址:http://www.tianya.cn/new/publicforum/content.asp?stritem=itinfo&flag=1&idarticle=64623&idwriter=0&key=0
我们在使用面向对象(oo)的编程语言时,时常感到有些挚肘的地方,可又无法言表,这说明oo技术有不足,网上都有很多这方面的讨论。这里谨是个人粗浅的看法。
我和很多人的看法一样,认为软件表达了编程人对客观世界的认识,在软件中我们设计了或表达了现实世界中的对应物。那么就java而言,她的万物之本object如何与现实世界对应?
可以想象,object对应于物理学中的基本粒子,我们的万事万物皆来源于此。可是我们知道的基本粒子并不只有一种,什么质子、中子、介子等等。但是有些物理学家在冥冥之中笃信有一种最最基本的粒子,由它构造了我们的世界,因此前赴后继、越钻越深,据说现在已经穷追到了夸克、胶子,也许伟大的终极发现指日可待。那就假设object对应这个最最最基本粒子吧。我们知道基本粒子都有一种能级跳跃的本事,如果我们万事万物都继承于它们的话,那你我显然也能这么干(不知一人得道鸡犬升天算不算?)。你有没有试过?所以,我们万事万物不是继承于基本粒子,而是由基本粒子所组成,组成后就发生了质变,不是原来的东东了。因此object不能对应基本粒子。
让我们来到精神世界,将object对应于上帝。世界各国都有将灵性或物品当作神的化身的传说,而神显然又是上帝的化身。在中国有道生一、一生二、二生三、三生万物之说,道就是中国的上帝。而我们软件中的所有东东均来源于object,显然object可以对应于上帝。上帝的特点不仅大慈大悲,而且法力无边。可是我们的object却相对弱智的多。在西方,有天赋人权之说。在中国,上天还赋予我们生存权、发展权,据说最近还多给了我们一种:和谐权。object有此能耐么?object仅有8种法力(方法),而且这8种法力还经常无用武之地。不仅如此,在我们的软件中,任何一个家伙,其法力都会大于他,至少也不亚于他。object是我们软件中最笨拙、最愚蠢的家伙。如果将object对应于上帝真是oo的本质的话,那这个愚笨的object是否就是挚肘我们施展拳脚的根源?
也许以上都不对,再换一种视角:object只是我们对万事万物的一种最基本的抽象。这回总算说到点子上了。可是我们的世界总是先有万事万物,然后才能对其中的事物进行抽象。所谓:横看成岭侧成峰。总是先有山在那里,从一个角度去看,我们抽象出“岭”,从另一个角度去看,我们抽象出“峰”,最后我们又进行更高级的抽象:有岭有峰谓之“山”。在软件世界中,则恰恰相反,我们必须先有抽象,然后再有具体实现。我们先期已经构造了“岭”和“峰”,有一天忽然发现其实更应该构造的是“山”,你说这“山”是继承“岭”还是继承“峰”?于是前功尽废,重新来过。oo的死穴昭然若揭。
困难压不倒英雄汉,死穴岂可点大师?大师谆谆教诲我们:要尽量针对接口编程,而非针对实现。也有称之为面向接口。接口这位类的表兄天生就是来化解死穴的。相对类而言,接口才是真正代表了抽象。你说“山”有岭之魂,那就实现一个“岭”的接口;你说“山”有峰之魄,那就再实现一个“峰”的接口。接口在oo家族中虽非直系宗亲,却是我最为敬仰的。看看接口在软件世界中所受到的顶礼膜拜,其程度远远甚于类。任意打开一个中间件的api说明,其中最为扎眼的就是接口。omg的规范文本开口闭口皆为接口,类则黯然失色。作为类的最高领导,object的地位显然受到严峻挑战。可他还坐在那至高无上的皇位之上。名不正言不顺啊,怎一个愁字了得。
沉舟侧畔千帆过,死穴前头却萦愁。我能化解这千古愁吗?不才汗颜,我哪有这本事?除非我继承了基本粒子,来个能级跳跃。不过冥冥之中我可以有一个梦想,幻想在不久的将来,有一个小子,他实现了能级跳跃(没有继承基本粒子,大概接了口)。他创立了一种语言,不再面向对象,也不面向方面,而是面向上帝(饶恕我的不敬,阿门!)。所有的东东均为上帝的化身,所有的东东从它创立的那一刻起,便有了无限灵性的可能。我们在软件中编写的一切法术,均是属于上帝的,编得愈多,上帝的法力愈大。那位说了,这样的话,你的软件中就不需要其他东东了,所有事情均由上帝代劳可以了。此言差矣,让上帝一人干活,你怎能忍心?没有其他东东,岂不回到混沌世界?在那个世界,无须干任何活。为了抽象,为了表达现实世界的需要,我们和上帝都需要东东。上帝根据某个抽象概念,将必要的法力赋予他所看中的东东,这个东东于是就变成了那个概念所表达的东西了。一旦龙颜不悦,可以随时废了他的功力,他就又变成什么也不是的东东了。打一个现实一点的比方,有一部手机,仅能打电话和接电话。一日,上帝兴起,赋予了它拍照的法力,于是,它就变成了数码相机,同时也还是手机。还需要接口吗?问一问上帝,或查一查它的法力表,就知道它能代表什么概念了。
发表于:
2007-05-08 20:51:45
1
楼 得分:
2
顶
发表于:
2007-05-08 21:12:26
2
楼 得分:
2
哈,好文
发表于:
2007-05-08 21:52:11
3
楼 得分:
2
最后面提到的上帝难道就是一个超级类,这是我们在oo中要尽量避免的
发表于:
2007-05-09 11:14:30
4
楼 得分:
2
谢谢,接分
发表于:
2007-05-09 11:24:47
5
楼 得分:
2
jf
发表于:
2007-05-09 13:34:06
6
楼 得分:
0
该回复于2007-12-28 12:12:29被管理员或版主删除
发表于:
2007-05-10 13:58:48
7
楼 得分:
2
阿弥陀佛,不管那套,接分
发表于:
2007-05-10 14:01:59
8
楼 得分:
2
一看就是一学文的写的,用模糊的文字能把不可能变成可能,把可能变成不可能,有啥用呢。真正治学要用严禁的结构 写几万字的猜测也来不得一句1+1=2实用
发表于:
2007-05-16 19:07:40
9
楼 得分:
2
呵呵,作者写得有点趣味性,而楼上说得也很实在.应该说是对生活的品味风格不一样.偶尔也不妨轻松一下,不必事事都作真.
发表于:
2007-05-17 20:22:20
10
楼 得分:
2
信仰上帝的人
发表于:
2007-05-17 20:32:53
11
楼 得分:
2
e ujln kcg?
有意思吗?
下一篇:
跪求关于“个人生产工时管理系统”的毕业设计
上一篇:
security
相关文章
eclipse配置问题,各位来个忙了,不胜感激!顶者有分...
jsp复选框从后台设定其值在前台的状态
今天去神州数码去面试,那个面试的人真好啊...
怎么实现jsp页面中无java代码
在java中 如何做到点击主窗口按钮("a"),打...
spring连接池问题(紧急求助)
春节一直在加班,郁闷!跪求答案# an ...
弱问sql2000 for jdbc驱动怎么装
ie加载不了applet
如何用poi把word嵌入到页面?
请问jdk和jsp的问题,jsp程序是如何找到jdk的
简单的request问题
100分请教一个apache暴露jsp源码的问题
一份快乐的祝福,送给0128过生日的朋友们
n70 用什么sdk开发啊 在线等啊
java 和c(或c++) 如何混合编程;
出售ajax开发精要(北京)
求sun java 的 serial numb...
高分求助使用apusic时找不到xxx的父类com.apusic...
问一个关于界面和逻辑交互的问题
其他资讯
大家参与``帮忙
如何在网页中加入下面这个拼图flash
(collection<book>)request.getattribute...
jsapi(tts.jar,speech.jar)中文发声问题
jsp页面中的struts标签的属性(value)赋值问题。...
jms开发问题
求教一些关于jtable的知识
问题两个jframe的问题
过路的大虾帮哈忙啊?怎么将javagui表格里面的数...
深入了解j2me的几个重要概念
ie7 刷新父窗口
为什么老是中文出问题
如果判断图片格式是rgb还是cmyk?
scm的资料
请问documentfilter类中的insertstring方法什么时...
请教有关quartz的triggermisfired的问题
一个ant小问题,运行jar需要外部包,谢谢!
servlet获取参数的问题,被域名弄糊涂了
jseclipse的问题,请大虾一定帮忙,如果分不够再...
请问怎样在spring+hibernate+struts中统计在线人...
快速检索
分类导航标签a
企业开发SAP
软件工程/管理软件规划版
硬件/嵌入开发硬件设计
产品/厂家英特尔信息技术峰会
Delphi网络通信/分布式开发
palm os招聘及招标
Web 开发非技术区
多媒体/设计/Flash/Silverlight 开发开发
社区支持新版申请
Web 开发ASP
palm os技术讨论
C/C++模式及实现
WebSphereWebService
C++ Builder网络及通讯开发
Web 开发ASP
最新资讯
新手,ajax自动刷新,服务器端无响应,保持原来的...
datagrid用代码实现分页功能
共同讨论共同参与
我刚学asp.net2.0,请教一个非常简单的问题,解释...
关于flash在客户端打开的问题
网页title乱码问题
高手帮忙两个不同的下拉列表连接不同的数据库啊`...
就这样的一个sql语句,我简直菜呆了~,菜的无与伦...
用js怎么控制多行文本框根据文字的宽高自动调节大...
weblogic连接数据库错误
易安数据恢复010--51293635硬盘数据恢复数码相机...
datagrid数据导出问题 在线等
div+css+js+asp+access/ms_sql+web标准化+ps+fw=...
xfire客户端访问wse3的.net webservice报错...
有对classloader熟悉的朋友没?请教一个问题
取值问题?
我编的directsound类怎么不能播放自己录的音乐(...
c#新手的烦恼
12.7
proc 编程 如何把.c文件编译成.exe文件...
datainputstream
卡巴斯基 "独占 "了regopenkeya...
郁闷的分页问题
正则表达式控件如何验证字符串长度不超过5个字?...
这语句里哪里出了错?。。。我要怎么改呢?。。希...
如何在cvs上查找某个文件
页面重复刷新计数的问题?
顶尖it集团招聘server specialist /&n...
sql一个查询问题??求解在线...
将硬盘初始为新买的硬盘(数据丢失,无妨)
关于多线程的疑问
请问高手们,在网页上写一个地图要用到什么???
求源代码,用vc,不要用java
cuteeditor 5.0
c#如何运行一个外部程序
vpn连上了访问不了网络
我把c/c++的基本语法学完了,觉得自己什么也不能...
救命啊!!asp.net的问题,不难超级头疼!!!
一道看不懂得面试题
spring.net中与wse3.0怎样集成?
热门点击
聘赴ibm sap  ...
为什么struts标签不能用在html文件里面?
怎么解决 tomcat的数据库连接池达到最大值后...
在线讨论,简单问题!^_^
为什么只能更新一条记录,后面的就写不进数据库了...
myfacesextensionsfilter javascript中文乱...
如何读出原先存入磁盘的数据(pda)
oracle数据库的查询统计操作
存储过程
c语言连接postgresql问题
vxworks中的vxworks接口和posix接口
组件,词库 载入内存问题?
请问个sql的不允许为空的问题?
请问vb怎样把文本文档和图片数据导入sql数据库中...
c#2.0写access数据库,有什么简便的方法
每个线程都进行申请文件描述符的操作的话,会不会...
各位求一统计条数的sql语句,谢谢
tns-12547, tns-12560, tns-00517错误...
想做一个在panel中飞过的文本的效果,结果只显示...
如何获取鼠标在图片中单击的位置
ocx要接收byte数组数据, 用什么类型比较好?...
求救!
用wsdd来部署带*.jar包的服务(类)报错!
高分求解!
向高手请教:怎么添加不上?
100%可以使用的免费网站空间支持asp.net,非常容...
lpcstr是个什么东西,vc偶怎么学不明白?
记录类型变量如何赋值给变体?
逻辑算法
找工作,深圳,gis,webgis,web工程师,asp.net工...
【新手】随机数赋值问题
关于控件焦点的一个问题
恨死帖子中“加为好友”链接了,散分
cdbvariant 和 codbcfieldinfo的区别
请专业美工看看本人的网站有哪些问题
搞了这么多年的com,至今有几个基本问题没想通?&n...
存储过程递归调用 拜请高手指教
散分,顺便问个学习方法问题
求一个正则表达式!在线等!解决就给分!
移植linux到软盘时问题