欢迎光临汤雪华的博客

一个人一辈子能坚持做好一件事情就够了!坚持是一种刻意的练习,不断寻找缺点突破缺点的过程,而不是重复做某件事情。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一点纯哲学

Posted on 2012-09-06 00:12  netfocus  阅读(1965)  评论(1编辑  收藏  举报
本人在翻看帖子的时候,发现很多网友不太喜欢哲学部分。认为那是漫无边际、浪费时间。但是多了解一些还是有帮助的。
以下是我自己在编程时的一些感受。有点杂乱,将就着看看吧。
 
一、对象和事物
好像听过这么一句话:人类永远无法认识完整的事物。因为我们认识到的总是事物的某一方面。
我们所说的对象实际上是客观事物在人头脑里的反应,而事物则是不因人的认识发生改变的客观存在。
同样一根铁棒,在钢材生产厂家看来,它是成品;在机械加工厂家看来,它是原料;在废品站看来,他是商品。
成品、原料、商品,这三者拥有不同的属性,有本质的不同。为什么同一事物在不同人的眼里就截然不同了呢?这是因为我们总是取对我们有用的方面来认识事物。当这根铁棒作为商品时,它的原料属性依然存在,只是我们不关心了。
在同一个企业里,对同一事物的认识也是在变化的,如一根被加工的铁棒,会经历从原料到半成品,再到成品的认识过程。
因此,我认为:对象只是我们认识事物的某一方面,一个事物被我们抽象成了一个多面体,事物的不同方面总是同时存在。
对象的存在与否,并不依赖于事物形体的存在。事物可以消失、变化,但对实体的认识却相对稳定,不会消失。
有些并不存在的事物,我们也能认识到,比如鬼。实际上我们并不是真的认为他存在,而是他的一些属性符合对鬼的定义。比如装神弄鬼、鬼头鬼脑。
实际上,同一事物的不同方面是有关系的,比如原料与成品是同一事物众多方面中的两个方面,他们之间存在一种认识叠加效应。即随着我们与事物接触的增加,我们认识事物总是越来越丰富。而后面的认识总是建立在前面认识的基础上的。例如,在机械加工企业,铁棒一开始只有原料的这一方面的属性;被加工成型后,就具有了成品的这一方面的属性;如果加工失败,则具有废品的这一方面的属性。随着我们与铁棒的交互,我们对于铁棒的认识就逐渐增加了,表现在它的属性越来越多。
请注意,在同一个企业,不同的岗位对同一根铁棒的认识是不同的。原料库的人认为它是原料,成品库的人认为他是成品。
当一种认识(实体)存在后,就好像事物的一张照片,只反应了事物的一面,并且可以永久存在,不管事物是否消失。唯一的差别是,这种实体认识是否对当事者有用罢了。当某种认识对所有人都没有用时,比如错误的将废品认为成品,那么才有删除它的必要。
 
二、内部属性和外部属性、自然属性和社会属性
每个属性都属于某个实体(对象),直接隶属于本实体的为内部属性,通过其它实体间接属于本实体的为外部属性。内部属性大致相当于自然属性,外部属性相当于社会属性。
通常情况下,自然属性依附于自然存在的事物上,社会属性依附于人类创造的事物上。比如铁棒VS铁棒的入库单,就分属于自然物与社会物。而数量与价格则分属于自然属性和社会属性。
如对个人而言,自己的姓名、相貌、身高、体重,这些属性离开你之后就没有意义了。但是有些属性是间接的,比如你获得了某某荣誉称号、你的财产、你的英语等级。他们分别于某次评选、某些收益、某些考试相联系。这些信息分别存在于荣誉证书、银行存折、等级证书之中。这些外部属性不宜直接作为自己的属性,因为它们与你不是内聚关系,而是耦合关系。
又如,当一根铁棒入库,铁棒本身的自然属性没有任何变化,变化的只是其社会属性。而这种社会属性又有独立的属性,并依附于某种载体上。如果铁棒入库,则会产生入库单这种记录其社会属性变化的东西。这个东西以外部属性的形式连接到铁棒这个实体上。
简单来说,外部属性被称作“身外之物”,生不带来,死不带去。即实体创建时,外部属性(社会属性)不会当然存在,当实体消失时,外部属性(社会属性)依附于耦合实体(人类创造物)依然存在,不会消失。
当然,在描述不必准确的场合,可以忽略耦合实体,而把耦合实体的关键属性放到本实体内部。但必须明白,这样做会让本实体过于复杂。要解决复杂的问题,则需要创建耦合实体,把外部属性放到耦合实体中。
 
----------------------------------------------------------------------------------
搞技术的人必须要有一定的哲学素养。具体到面向对象和领域建模,个人推荐一本书--维特根斯坦的《逻辑哲学论》,很值得看,每次都有新的领悟。下面的一些话,个人觉得很经典,分享一下:
  1. 世界是一切发生的事情。 
  2. 世界是事实的总体,而不是事物的总体。 
  3. 世界为诸事实所规定,为它们即是全部事实所规定。 
  4. 因为事实的总体规定那发生的事情,也规定那所有未发生的事情。 
  5. 在逻辑空间中的诸事实就是世界。 
  6. 世界分解为诸事实。
  7. 每项事情可以发生或者不发生,其余的一切则仍保持原样。
  8. 发生的事情,即事实,就是诸事态的存在。 
  9. 事态是对象(事物)的结合。 
  10. 事物的本质在于能够成为事态的组成部分。 
  11. 世界的每个时刻都对应一组事实
  12. 这一组事实构成一个事实空间
  13. 事实空间在不断发生变化
  14. 事实空间已经发生的变化模式称为事件
  15. 事实空间可能发生的变化模式称为动作
  16. 执行动作的结果就是按照动作给定的描述,改变当前的事实空间
  17. 世界就在事件-动作的无限循环中向前发展
  18. 动作不是一个操作,而是一个声明式的描述。对动作的执行才是操作。这意味着可以对动作进行逻辑查询和组合。(有点IO monad的意思) 
  19. 每个动作都对应一个事件,每个事件不一定对应到一个动作
  20. 事件隐含了历史状态,所以是一个时态逻辑的概念
  21. 事件引发动作的过程就是一个响应过程
  22. 当前的世界包含了所有的历史,唯有如此才能有正确的响应。
  23. 逻辑中没有偶然的东西;如果一个事物能够出现在一个事态中,那么该事态的可能性必定已经预含于该事物之中。 
  24. 如果一个事物本身能够独立存在,那么后来的适合于它的状况看来就是一种偶然的事情。 
  25. 如果事物能够出现于事态之中,那么这一可能性必定一开始就已经存在于事物之中。 
  26. 在逻辑中没有纯粹是可能的事情。逻辑涉及每一种可能性,而一切可能性都是逻辑的事实。
  27. 正如我们根本不能在空间之外思想空间对象,或者在时间之外思想时间对象一样,离开同其他对象结合的可能性,我们也不能思想一个对象。如果我能够思想在事态中结合的对象,我就不能离开这种结合的可能性来思想对象。 
  28. 事物就其能够出现在一切可能的状况中而言是独立的,但是这种独立性的形式是一种与事态相联系的形式,即一种依赖的形式;词以两种不同的方式——单独地和在命题中——出现是不可能的。
  29. 假如我知道一个对象,我也就知道它出现于诸事态中的所有可能性,每一个这种可能性必定在该对象的本性中,之后不可能发现新的可能性。
  30. 如果我要知道一个对象,虽然我不一定要知道它的外在性质,但是我必须知道它的一切内在性质。
  31. 如果给出所有的对象,那么同时也就给出了所有可能的事态。
  32. 每个事物都像是在一个可能事态的空间里。我可以设想这个空间是空的,但是我不能设想没有这空间的事物。
  33. 空间对象必须处在无限的空间之中,一个空间点就是一个主目(argument, 自变量)位置。视域里的一个斑块,虽然不一定是红的,但它必须有某种颜色:所以说它被颜色空间[Farbenraum]所包围。音调必须具有某种高度,触觉对象必须具有某种硬度,等等。 
  34. 对象包含着一切状况的可能性。 
  35. 对象出现在诸事态中的可能性就是对象的形式。 
  36. 对象是简单的。 
  37. 每一个关于复合物的陈述可以分解为关于其各组成部分的陈述,分解为完全地描述该复合物的一些命题。 
  38. 对象构成世界的实体。因此它们不能是复合的。 
  39. 假如世界没有实体,那么一个命题是否有意义就依赖于另一个命题是否为真。 
  40. 在这种情况下就不可能勾画出世界的任何图像(真的或假的)。 
  41. 显然,一个想像的世界,无论它怎样不同于实在的世界,必有某种东西——一种形式——为它与实在的世界所共有。 
  42. 正是诸对象构成这种不变的形式。 
  43. 世界的实体只能规定一种形式,而不能规定任何物质的属性。因为物质的属性只有通过命题来表述——只有通过对象的配置来构成。 
  44. 对象是无色的。
  45. 如果两个对象具有相同的逻辑形式,除了它们外在性质的差异之外,它们之间唯一的区别就是:它们是不同的。
  46. 或者一个事物具有别的任何事物都没有的属性,这时我们可以直接用一个描述使它同别的事物区分开来并指谓它;或者另一种情形,有好几个事物,它们的全部属性都是共有的,这时就完全不可能从它们之中指出某一个来。 因为如果没有任何东西来区分一个事物,我就不能区分它,不然的话它总是会被区分开来的。
  47. 实体是独立于发生的事情而存在的。 
  48. 它是形式和内容。 
  49. 空间、时间和颜色(有色性)是对象的形式。 
  50. 如果世界要有一个不变的形式,就必须要有对象。
  51. 不变者、实存者和对象是一个东西。
  52. 对象是不变的和实存的;它们的配置则是可变的和不定的。
  53. 对象的配置构成事态。 
  54. 在事态中对象就像链条的环节那样互相勾连。
  55. 在事态中对象之间以一定的方式相互关联。 
  56. 对象在事态中发生联系的一定的方式,即是事态的结构。 
  57. 形式是结构的可能性。 
  58. 事实的结构由诸事态的结构组成。 
  59. 存在的事态的总体即是世界。 
  60. 存在的事态的总体也规定哪些事态不存在。 
  61. 事态的存在和不存在即是实在,我们还把事态的存在称为肯定的事实,把事态的不存在称为否定的事实。
  62. 事态相互间是独立的。 
  63. 从一个事态的存在或不存在不能推出另一个事态的存在或不存在。 
  64. 全部实在即是世界。
----------------------------------------------------------------------------------
没有什么内部属性。
抛开OO的世界观,看关系数据库是怎么表达现实的,就知道了。
可惜几乎所有人都以为关系数据库思想没有OO先进。
 
----------------------------------------------------------------------------------
赞,其实我们为什么要谈哲学,因为软件要解决的根本问题就是适应业务的变化。其关键在于架构,注意首先是业务架构,然后才是技术架构。如果没有哲学思想,认识不清楚业务变化的本质,那做出的软件就根本没有生命力。
 
----------------------------------------------------------------------------------
不论XML还是OO,都没有关系数据库更贴近现实世界,XML和OO显然是一种理论上的退化,完全失去了理论根基。
 
要了解关系数据库的精髓,别看SQL语言,这里有一本大师之作,《深度探索关系数据库》,它的作者是关系数据库之父E.F. Codd的好友/伙伴。
 
事实上,连同那些运算数据库中的命题(或命题集)的运算符一起,是一个‘逻辑系统’,……这归功于Codd非常棒的洞察力……他1969的见解……,数据库并不真的只是一个数据集合(虽然名字上听起来是数据);更恰当地说,它是‘事实’的集合,或者换句话说,是真命题的集合。……整个形式逻辑可以被用来解决“数据库问题”。 
 
里面随处可见对业界流行的SQL的尖锐批评:
 
一个不幸的事实是:SQL在很多方面对关系模型的支持完全令人失望,它存在着大量不合情理的错漏和偏离... ...因为SQL对模型的支持是如此有限,它给了你一条绳索让你吊死自己,因此你需要知道关系理论以免陷入圈套。
 
关系数据库有构造类似类型系统和对象的方法,比流行的OO思想要先进得多,在我说的那本书里就有。
 
可惜业界在这一点上根本没有注意到,也没有投入精力去进行开发和应用,固然有实践上的限制,但这条路是对的,而流行OO的路子是走不通的,是一条死胡同。
 
----------------------------------------------------------------------------------
从uda1341这里,第一次听到:世界是事实的总合,而不是事物的总合。确切说,不是第一次,只是以前看到这句话并没有引发我的思考而已。曾与uda1341讨论过,如何将看似差异极大的世界观或方法论,以更高的视角进行一统。我尝试的方法,是将任何理论分解为以下三部分。
 
1)概念细胞 。
2)描述概念的联系与变化。
3)描述联系与变化的规律。
 
例如,在不同人的眼中:
1)OO是对象,关系数据库是关系。
2)OO中描述消息的传递,关系数据库是关系的增删改查。
3)OO是模式,关系数据库是集合与映射。
 
数据没有行为?计算机中代码即数据,数据即代码,这是冯诺依曼机最重要的思想。常见的例子,如权限控制的表设计里每一条记录都可以包含或对应一种行为。OO比关系理论丰富?人是一个对象,也是一切社会关系的总和(马克思语)。
 
关系即事实,事实即关系,对象即数据,数据即对象,对象即关系。他们在更高的一个视角上是一致的。
 
最近为状态的管理搞得焦头烂额,我发现在别人的代码扩展举步维艰。经过数夜的冥思苦想,终于知道了为什么会这样?因为我描述状态的角度与他完全不一样,我是从事情本身的角度(力图最简洁描述所有的状态,而后将业务规则描述为状态的转移),原有的代码是从人的角度进行描述,其设计有很多冗余的状态值,致使我刚开始无法理解。
 
改变思维的死角非常困难,后来我沿用从人的角度去描述状态,但想方设法去掉诸多冗余的状态值,居然与我从一开从事情本身的角度描述达成一致。一下子,觉得问题变得明朗起来,修改和扩展原来的代码也变得轻松起来,而且发现了自己看事不看人的思维死角,丰富了我的思考方式,懂得何谓殊途同归。
 
我说了这么多,基本上都是老调重弹,把古人的智慧用现代的语言重复一遍而已,没有一丁点新东西。我们的知识与日俱增,我们的智慧却未必超越古人。看看数千年前之间,我们的先人如何思考,如《易经》的象、数、理。
 
“象”可以是静态之象(“事物”),可以是动态之象(“活动”),可以动静交融之“象”(事实)。
“数”可以是描述事物之变化(例,OO: 消息传递),可以描述活动之进行(例,FP: 数据驱动),可以描述事实之发展(例,维氏理论或者uda1341的“事实的查询”)。
“理”是描述事物及活动之规律(例,OO: 对象的结构、行为和创建模式,例,关系代数:集合与映射之理论)。
 
----------------------------------------------------------------------------------
要说哲学,计算机的起源跟分析哲学是同源的,谈别的哲学都是瞎扯,如果它们还算得上哲学的话。
 
要我怎样强调你们才肯相信,当今哲学的主流是分析哲学,渊源自亚里士多德的经典逻辑,经过布尔,弗雷格在逻辑学上的创造,然后被一大群德国,英国等国的天才哲学家们所发展,产生了丰富的成果而不是一堆胡言乱语,后来又引入模态逻辑,获得了新的生命力,当今的大牛,分析哲学家克里普克(Saul Kripke),除了发展了模态语义学,在哲学上提出了新的指称理论,其成果Kripke Structure,是计算机科学中模型验证的重要工具,用于分析并行程序,还包括K Logic等,这个人还在世。
 
图灵是维特根斯坦的学生,有图灵的课,维特根斯坦基本上是和图灵对话,别的学生都是打酱油的,甚至图灵迟到了,维老师就等着。
 
维特根斯坦的《逻辑哲学论》第一句:世界是事实的总和,而非事物的总和。
 
这个原则,逻辑编程不违背,lambda演算也不违背,做为谓词逻辑的子集,关系代数也不违背,想想关系数据库的插入都是以整条记录为最小单元,而OO完全是背道而驰,把人的粗浅常识又搬出来当做OO的哲学基础。你追踪下去会发现OO完全基于非常粗浅的哲学认识,根本没有理论渊源和根基,连2000多年前的古希腊哲人都不满足于此。
 
----------------------------------------------------------------------------------
我在网络上搜索了一下,“世界是事实的总合,而不是事物的总合”这句话的解释是:
事实指的是某物具有某种性质或某些事物具有某种关系。事物的简单相加反映不出世界的本来面貌,我们不仅要知道世界上有哪些东西,而且要知道其所处的状态,它们之间的相互关系。 
无限个事物的变化构成一个事实,因为事物仅仅指事与物,事和物都是静止的,比如你听到一件事,看到一件物品,你看到或听到的并比是它的现在,而是它的过去。无限个事实能构成一个世界,因为事实是动的,世界也是动的。事实只能通过事物而存在,世界上存在的事物,实际都是由无数事态复合而成的事实。
 
实际上,感觉大家都说的差不多,并不矛盾。但是请大家不要大段的摘抄书本,希望说出自己的感受,并举出生活中的例子。
 
----------------------------------------------------------------------------------
背道而驰,还真是第一次听,在你看来,所有东西必须自下而上地组织?OO自上而下切分关注,难道是错误?是玩物?“把人的粗浅常识又搬出来当做OO的哲学基础”,说粗浅?背道而驰不是错误么?
 
若果背道而驰,而又遍地开花,那只能是泡沫。
 
“根本没有理论渊源和根基”,你是在谈科学,还是哲学?老子“道德经”的根基在哪?请问,第一个提出哲学的人,其根基也在哪呢?根基的根基,追踪到最后,根基呢?评价哲学的好坏,是对其能否解析世界进行评价,不是他爸是否是“李刚”。
 
“关系数据库的插入都是以整条记录为最小单元”,记录是啥呢?记录没有边界,没有定义?有边界,有定义,OO就能描述。关系数据库说的是记录“插入”,OO中说的是对象“诞生”。
 
回头一想,OO有排除其他哲学吗?OO有和其他哲学对立吗?命名与立象,人类认识的开端而已。面向对象,不但要我们认识如何立象,还要考虑象间的逻辑,这就是所谓的“面向”。增删改查是对世界的分解,而不是抽象。抽象是对现实(事实)的抽象,绝对不是想象。
 
“世界是事实的总和,而非事物的总和。”OO违背了什么?洗耳恭听。
 
----------------------------------------------------------------------------------
谈哲学么,我只是告诉你们跟计算机最有关系的哲学是什么,和这种哲学的地位。
 
----------------------------------------------------------------------------------
举个例子吧,在人工智能的领域,用来表现当前世界状态的,从来就是用事实来表示。
 
lisp发明人的另一个成就是情景演算(situation calculus),情景演算表示世界状态的方式是用逻辑的方式表示的。包括他的elephant语言,也是走在这个路子上。
 
这里还有一个STRIPS表示法:
 
世界状态:一个世界状态(简称状态)是一组谓词公式的集合
目标:表示世界状态的谓词的合取
动作:动作用前提条件和动作效果来表示。
 
前提条件:动作执行前必须满足的条件
动作效果:动作执行后可以保证为真的状态
 
STRIPS是用于动态规划的经典方法,在人工智能主体编程中也有不小的作用。
 
还有tony hoare的hoare逻辑,各种计算机语义学,全部是如此,逻辑学和计算机科学的论文就更数不胜数了。
 
但是OO呢?
 
去翻吧,啥理论都没有,都是拼凑的。
 
现在那些只不过那些停留在论文阶段,离工程界的实际应用还有不小的距离,我只是想指出这个方向,在这个方向上,关系数据库是对了,而OO是彻底的失败,函数式那些奇技淫巧其实也是错误的方向,只不过错得没OO这么离谱而已。
 
----------------------------------------------------------------------------------
看了uda1341的发言,我开始有些糊涂了。
1、uda1341总是说OO是错误的,关系数据库才正确。但是OO和关系数据库是什么关系?
关系数据库应该是OO的一种表现形式吧。
2、OO错误的原因是没有理论根基。难道一定要有理论根基才正确吗?
我觉得,所谓的理论是某种规律性,OO是高于规律性的,即还处在混沌状态下的世界。需要人为解读、归纳、提取,来找出这种规律性。面向对象其实就是面向现实世界,与其它表达方式相比,关系数据库也许更能准确、直观表现现实世界。但OO和关系数据库不是对立的,他们应该是本体和本体的表现形式吧。
 
我想可能存在定义上的差异,OO的定义是什么,在这里绝不是面向对象的编程语言。
 
----------------------------------------------------------------------------------
说多了无用,我又不是什么有权威的大师,就算看不懂也可以让人仔细琢磨。
最后一点发言,希尔伯特在将几何学严格公理化的过程中发现,点无法定义,直线也无法定义,能够定义的只是点和直线之间的关系。这个例子很好,在一个公理化体系中,关系才是基本要素。
因此,正确的出路是,用关系定义实体,而不是先定义实体,再组成关系。这样构造出来的实体(对象),才真正地符合现实世界。
我的话完鸟。
 
----------------------------------------------------------------------------------
我倒想问问,按你那样说,OO的错误是因为先定义实体,那么OO中提到的实体时如何出来的?空想出来的?
说白了,你脑中“错误”的OO中的实体,是如何“先”定义出来的?
 
----------------------------------------------------------------------------------
uda1341的世界状态和点不能定义。我也有体会,只是这些不是从书中得来,而是反反复复的思考得来。
 
对于前者,我发现有些业务规则,可以描述为最小状态集及其转移,一个状态表示一个事态(或事实的状态),这样表达领域模型非常简洁。从这点看,世界是事实的总和的观点,比世界是事物的总和,更富有表达力。不过当我们仅考虑一件事情时,分清事物及其活动的边界,也许就必要了。
 
点不能定义,以前在学微积分和矢量代数时,就有类似的感触。点既可以是线,也可以是面,甚至可以是体,但是存在一个难以释怀的悖论,不能定义的点,却定义了矢量代数中最核心的概念:梯度,旋度,散度等,这些概念是麦克斯韦描述电磁场理论的基石,甚至有人用来描述信息场,这个现在我还没有想通,也不太敢去想,信息作为物质,能量之外的第三大元素,太复杂了,香农精确的定义,也只是在不考虑语义的前提下,对信息的量化。《易经》中的象,既可以是事实之象,也可以是事物和活动之象。当我们面对复杂的世界时,描述事实的状态,比描述事物及活动的更简洁。
 
我目前的观点:1)宏观上,以“世界是事实的总和”为世界观,描述为世界状态集合及其转移;2)微观上,以“世界是事物及其活动的总和”,描述为对象和消息或关系与查询。3)宏观与微观是相对的,两种世界观可以相互嵌套表达。视需求和目标而定。4)对象与消息,关系与查询,是互补的角度。对象侧重描述的是事物本身的边界,关系侧重于描述事物之间的联系。
 
----------------------------------------------------------------------------------
看来分歧是先有实体或关系,其实这还属于边界划分,两个实体关系紧密,起初你只看到关系,但是随着认识深入,你可以在这两个实体之间画一道线边界,一个关系就变为两个实体的关系,就像你把线最后总是能切割成点一样。这就是 OO 分析。
对于探究未知领域,我们必须继续借助数学去切割分析表达,比如线由多少点组成,但是更多于人相关领域已经有很多领域专家,他们可以用数学表达他们的领域知识,也可以用他们职业直觉来表达出核心实体模型出来。
 
----------------------------------------------------------------------------------
终于有个帮我说话的了。
 
再给个更具体的例子,完全实用的我可没有,正做着呢
 
事件是什么?
 
把事件定义为:事实的变化模式
 
结合关系数据库想一下,不考虑效率,如果把这个事件定义引入,并从基础上进行支持,会带来多大的方便?
 
前提是数据库是有记忆的,我们可以查询到数据库变化的所有历史(说了先不考虑效率)
 
考虑我们的自然语言中的例子,是怎么表达事件的?比如“我回家了”,这是一个事件,变化模式是,从“我不在家”变成“我在家”,是事实的变化,别的分析方法都只会搞得很繁琐,而且缺乏基础定义,只能用更缺乏定义的东西来定义事件,最后只能靠人来把握。
 
借用关系数据库的关系查询,(实质是逻辑查询),你可以表达非常复杂的事件,比如:一个穿红衣服的胖子走进翠花胡同里的沙县小吃。
 
结合你们的例子想一下,或者发一个例子上来讨论,觉得有关事件,但处理很繁琐的例子。你们就知道这种定义和处理方式是如何的简洁了。
 
----------------------------------------------------------------------------------
关于点和线的定义,我个人感受是因为其关系过去庞大,而难以归纳出定义。事与物都是相互关联的,新事物总是通过关系去认识,当把认识归纳,划定边界,立象命名,就是定义。点和线只是还没定义,而不是不能定义。但我们划定领域,将关系缩小,于是便可以归纳出定义,像点在二维空间上,便可以定义为二维坐标。
 
很多事物的定义,只存在某个领域和持续一段时期,想从世界、宇宙的角度准确定义事与物,可能只有上帝可以,如人的定义。为什么,在做数学题时,提到的点与线,为什么学生们能懂?“不就是坐标嘛”。一样东西若果不能被定义,则不能用来推导。当你指着一个东西说“这个点如何如何”,然后对方说“这不是线么?”。
 
命名与定义,是同一样东西,为什么当别人说uda1341时,就知道说谁呢?是因为uda1341这个名字,指定了一组定义,而该定义指定了一个或一组事物。当uda1341这个名字放到其他论坛,放到世界,能担保是同一个人么?明显不能。“名可名,非常名”,名字意义的改变,也就是指定的定义改变了。
 
回到OO上,OO在提取实体时没有考虑关系吗?答案是有,这也是类图跟ER图相似的原因。编程分为想和写两个阶段。想就是分析思考,分解提炼,这时候就是思考关系,逻辑来获取领域当中实体及其活动的定义。至于写,就是把想到的表达出来而已。别以为先写类,就认为是不考虑关系去认识。只不过类最大的问题是过于静态。
 
以上是本人对定义的理解。(在uda1341提到的豆瓣里的那个回复(不是我),确定与有限的概念我是同意的)
 
----------------------------------------------------------------------------------
给点建议:
1、可以不是经典的计算机语言。可以是批处理文件那样的脚本。
2、可以不是编译型,解释型的语言更容易实现。如果你要掌握编译原理,那还要刻苦学习几年。而解释型的语言,网上似乎有现成的语法解析器。
3、必须配合数据库,因为你提到了记忆。计算机语言的运行是在内存里,需要一个将内存数据映射到永久保存载体的机制。
4、开始阶段可以不做IDE,IDE是上层建筑,被迫随着语言本身的变化而修改。当然,如果你只做个IDE界面,就另当别论了。
 
----------------------------------------------------------------------------------
命名与定义,是同一样东西,为什么当别人说uda1341时,就知道说谁呢?是因为uda1341这个名字,指定了一组定义,而该定义指定了一个或一组事物。当uda1341这个名字放到其他论坛,放到世界,能担保是同一个人么?明显不能。“名可名,非常名”,名字意义的改变,也就是指定的定义改变了。
 
----------------------------------------------------------------------------
这个问题,命名,指称,特别是同一性问题,从古希腊的时候就有深刻的见解了,比老祖宗的那点不知所云,
一千个人一千个解释的文字强1000倍。不服不行。
 
你这个说法,就是把专名(命名)和摹状词(定义)当成一回事了,显然不是一回事。
 
要知道怎么回事只能去阅读分析哲学的相关论文,首先还得学习谓词逻辑,靠自己顿悟是很难的,罗素有摹状词
理论,有论指称的论文,指称问题后来被克里普克又发展了一大步,指出了罗素的问题所在,这是分析哲学在当代取得的一大进展。
 
----------------------------------------------------------------------------------
我表示我那句说法有误。但接下来的解析,并不是把它们画上等号。
很明显,后面的解析是“命名指向定义”,而我所指的一回事,其实是指,它们是同时存在的:命名前提必须抽出已确定的定义,命名是对事物,而事物是有限的定义,是有意义的,不存在没任何意义的命名。
 
OO正是基于有限定义的事物进行建模,所以为什么要提出领域这一概念。对于一个软件来说,他不存在无限性,因为它是为了解决问题,达到目的的。问题和目的一旦确定,那么相关确定的定义就会出来。OO所谓的“先”,其实是不“先”,因为实体的发现,本身就是从认识出发,从关系,从逻辑,只是现在的OO语言并没有把这一步直接归到语言上,而是把这个过程放到代码之外。当你只看到类代码的时候,却很自然想到先,这是我的理解。不过请注意,OO语言!=OO(思维,思想)。我反而觉得,你所提到的各种逻辑,正是对OO的补充和解析。
 
---------------------------------------------------------------------------------- 
你只是说了一个哲学的年轻分支。并没有太多的认可。那个不叫关系,而是事物定义的时候边界界定。任何事物都是要靠相关事物来界定。否则它就是不存在的。
很简单的哲学里面无和有的概念。但是那个里面重要的还是事物,而不是那个相关关系。关系是依附于事物的。
 
----------------------------------------------------------------------------------
其实墨家论述就很严密。焚书,以及独尊儒术以后你没看到而已。,并且这种严密逻辑不受士大夫欢迎而已。并且当初远比亚里士多德流行。是和儒家并列的显学。
可惜最后的命运却完全相反。