锁定老帖子 主题:面向集合的框架设计
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-12-05
canonical 写道 2. 函数式语言和命令式语言的计算能力相同,但是在具体的情形下它们的描述能力是不同的。我所关心的不是语言层面的问题,因为语言本身的能力并不足以解决现实开发中的所有问题。即现实开发中所需要处理的结构问题并不是在语言层面得到充分解决的,这是我们需要做工作的地方。 canonical 写道 3. 范畴论是从同调代数发展起来的一种非集合论的代数语言,我这里所指的代数结构只是指代数学所研究的一种结构问题。它虽然可以推进我们对于程序基础结构的理解,但是并不足以解决我们所面临的现实问题。此外,一个重要的问题是,一个抽象的概念,当我们物理性的去实现它的话,就必然面临着各种现实的模型之外的约束。如何小心找到合适的实现路径,不触碰可能让模型失效的边界,是我们需要解决的问题。 引用 函数式语言的思想来源是泛函分析,范畴只是函数上可以建立的一种代数结构。泛函中的大量分析结构无法在函数式语言中直接体现。基于范畴论所能推演得到的规律是极为有限的。 首先我在这里指明的是你两个基本的错误,第一你认为函数式语言来自泛函分析,这是一个望文生意的常识性错误,funcional anylisys和functional programming,此functional非彼functional。 虽然这也是我初次接触函数式语言时犯的一大错误。 在我指出函数式语言基于范畴以后,恐怕你因为函数式语言和泛函分析之间的混淆根深蒂固,所以你就开始错误的推演因为函数式语言是基于泛函的,所以范畴是基于函数的.因为泛函中大量分析函数式语言中无法体现,所以范畴的得到的规律也极为有限。这说明你好像并不具备范畴论的一些知识.当然了数学里面山头林立,搞统计的不懂几何是很正常的事情。但是错了就是错了,扯出同调代数遮遮掩掩就来没啥意思了。 至于你说,语言本身的能力不足以解决现实中的结构问题,这是一个比较有意思的切入点。不过你要讨论这个,那么你就要说明,现实中的结构问题是什么?语言的描述能力又是什么?为什么这种描述能力无法解决某种结构问题?有思想是好事情,但是把思想玄化不是什么好习惯。有问题说问题,一件事情一件事情摆到台面上去分析这是最重要的。物理学中使用数学的目的虽然不是为了追求纯粹的完美性,但是是为了追求沟通的一致性确定性和共同性。有了数学语言,就可以使得一个人的观点可验证,就可以杜绝玄而又玄的形而上学的讨论。 引用 如果将状态看作是可以附着在某个对象上的标记,显然状态的存在性便于我们识认概念的唯一性。对象还是那个对象,只是状态标记发生了变化。
我记得,老爱在他那本相对论的意义里,这么说过某件事在空间上的点和时间上的时刻都不具备物理实在,只有事件本身才具有物理实在.状态不是一个单一的量,而是一个与时间复合的量。函数式语言对于状态变更的看法实则就是和闵氏流形中的世界线的时空观念是一致的. |
|
返回顶楼 | |
发表时间:2007-12-05
太好了~ 谈一谈 monad 和 范畴论的关系吧
|
|
返回顶楼 | |
发表时间:2007-12-05
Trustno1 写道 至于你说,语言本身的能力不足以解决现实中的结构问题,这是一个比较有意思的切入点。不过你要讨论这个,那么你就要说明,现实中的结构问题是什么?语言的描述能力又是什么?为什么这种描述能力无法解决某种结构问题?有思想是好事情,但是把思想玄化不是什么好习惯。有问题说问题,一件事情一件事情摆到台面上去分析这是最重要的。物理学中使用数学的目的虽然不是为了追求纯粹的完美性,但是是为了追求沟通的一致性确定性和共同性。有了数学语言,就可以使得一个人的观点可验证,就可以杜绝玄而又玄的形而上学的讨论。 对于这个语言能力与现实不匹配的问题很感兴趣,希望能继续深入的讨论。 另外,一致性确定性有很明显的意义,共同性指的是什么?一致性和共同性有什么区别呢? |
|
返回顶楼 | |
发表时间:2007-12-05
1. 我并没有说函数式语言的数学基础是泛函分析。说函数式语言的思想来源是泛函分析,是因为在Backus的论文中对函数式语言的一种乐观的情绪甚至扩大到functional algebra can be used to tranform programs and to solve equations whose "unknowns" are programms in much the same way one transform equations in high school algebra。这种信心只能来源于泛函分析和方程论,来自于数学分析学的发展。将函数的函数作为分析对象就构成泛函分析。泛函分析的最核心的思想当然也不等价于它所研究的那些无穷维空间,不等价于种种正交基的构造。它的思想核心在于函数的函数具有独立的分析价值,具有脱离数量空间的具体的结构。
2. 我也没有说范畴是基于函数的,“范畴是函数上可以建立的一种结构”,它也可以表现在其他对象上。我的逻辑也不是“因为泛函中大量分析函数式语言中无法体现,所以范畴的得到的规律也极为有限”。关于范畴,它本身只是研究一种基础结构,它本身并没有承载所有的物理事实,基于它不可能对所有的规律一网打尽。不是明白了范畴,就懂了程序。范畴论是一种基础性的语言,有些人致力于基于范畴论来构建数学的其他分支,取代集合论的地位。将计算的本质重新归结于范畴论是无意义的,它不过是对事实的另一种陈述方式。说“函数式语言是基于范畴”是无意义的,因为这和说“所有现代数学都基于集合论”一样。无法发现新的相互作用关系,所有的概念都只是同义反复。不是一拿起数学,就找到了组织。 3. 我对函数式语言并没有什么反对意见。它是非常重要也非常优美的一种技术思想。但是现在一些函数式语言的狂热支持者似乎对函数世界充满了乌托邦式的幻想,一种大一统的世界观让人迷醉,但是它却解决不了现实的问题。所以我说无法认同函数式编程的世界观。作为一种具体的技术工具,问题不在于函数式语言是否体现了计算的本质,而在于它是否向我们提供了称手的兵器。现在我要计算两个小球相互碰撞的问题,我可以操起广义相对论,量子力学啥的开始大干一场,也可以用个牛顿力学小试牛刀,甚至可以只用反射关系摆个等式。但是在绝大多数情况下我们都会说这里面的物理是弹性反射而不是相对论。在理论分析中我们经常使用平面波假设,但只要实际关心的对象不在波包的边缘,没有人会认为平面波不是真实的物理机制。理论物理不是理想物理。在具体的参数设定下,我们只会使用特定的物理学。 对世界的认识并不是非此即彼的。并不是说函数式语言好它就永远都好,要把所有对立面都灭掉。也不是说函数式不好,命令式就必然的好,就必然的能够解决问题。函数式语言的世界观过分单纯而排他,这是我反对的,我同样无法认同面向对象的本体论论调。就像CISC和RISC架构之争一样,最终我们在现实的物理约束下,运行的最好的芯片是两者思想的结合。这是我们面对物理世界的基本态度。 4. 相对论主要是解决了物理规律的协变性的问题,在此过程中它使人们认识到了时空之间奇异的对称性。但是广义相对论的表述中时间也是可逆的。真正定义了时间之箭的是热力学第二定律。根据Landauer's principle: 擦除(erase)1比特信息,耗散到环境中的能量至少是k*T*ln2, 或者说熵增至少是k*ln2. 这意味着只要我们对眼前的黑板不停的写了擦,擦了写,就必然无法回到过去。物理世界是复杂的。 5. 关于现实中的结构问题,我无意去定义什么万能的描述能力。你可以用微分几何,积分几何,广义变分等等手段去证明圆盘是某种意义下的周长最短的东西,但是这一切对你发明轮子并无本质上的助益。不过可以说说现实中的结构。这里不是要证明某种语言中无法描述这些结构,而是说结构是客观存在的,它并不是要在基础语言层面得到充分解决的。实际上现在的通用语言也是无法有效承载Domain Specific Structure的。 A. ErLang大概是目前世界上应用最为深入的函数式语言了。它确实发挥了函数式语言无显式状态变量的优势。但是它对程序构建本质上的帮助更多的来源于无共享的超轻量级进程模型,相当于定制了一般操作系统所提供的基本服务。微软的一个实验性操作系统项目Singularity, 其中也定义了只通过消息传递发生数据关联的超轻量级进程模型,它使用C#的一个扩展语言,额外增加的功能是消息管道上定义的规格状态机,对消息交互的时空模式进行额外的规约。这里对我们真正有价值的是隔离的单元结构。 B. AOP是程序结构空间中的定位和组装技术。在Witrix中我们规范化了切点处的状态空间,并对AOP进行了偏置处理.这种结构调整大大提高了AOP的可用性,使得它成为Witrix中的核心技术手段之一。 C. 面向对象的继承关系从结构观点上看是两个一维集合之间的覆盖关系。在Witrix中扩展了extends所对应的结构操作,创造了新的结构融合手段。 6. 抽象数学我还是学过不少的。 |
|
返回顶楼 | |
发表时间:2007-12-06
引用 我并没有说函数式语言的数学基础是泛函分析。说函数式语言的思想来源是泛函分析,是因为在Backus的论文中对函数式语言的一种乐观的情绪甚至扩大到functional algebra can be used to tranform programs and to solve equations whose "unknowns" are programms in much the same way one transform equations in high school algebra。这种信心只能来源于泛函分析和方程论,来自于数学分析学的发展。将函数的函数作为分析对象就构成泛函分析。泛函分析的最核心的思想当然也不等价于它所研究的那些无穷维空间,不等价于种种正交基的构造。它的思想核心在于函数的函数具有独立的分析价值,具有脱离数量空间的具体的结构。
这是我在前面一再指出的问题,函数的函数只是一种形象的通俗类比,这种形象的类比在泛函分析中存在.在递归论论中递归论同样也关心.一个来自数论,一个来自积分论.一个研究自然数域的问题,一个研究实数域的问题.一个关心有限的问题,即函数能否通过本原函数的有限次迭代来得到,也就是函数有限次构造的问题.一个则是研究无限的问题,即分析学在抽象空间上的一般化。 至于你后面写了那么多,其实并没有回答我的问题,无非在反复论述这样一个命题,"XX不是万能的所以YY".这个XX,YY中可以替换成任何东西.你当然能说,相对论不是万能的,这是没错,但是要是接着说因为相对论不是万能的,所以我的理论正确,就有点不合适了吧. 引用 关于现实中的结构问题,我无意去定义什么万能的描述能力。
这里我从来没有要求你定义什么万能的描述能力.我只是要求你按照你自己的描述 引用 现在我要计算两个小球相互碰撞的问题,我可以操起广义相对论,量子力学啥的开始大干一场,也可以用个牛顿力学小试牛刀,甚至可以只用反射关系摆个等式。但是在绝大多数情况下我们都会说这里面的物理是弹性反射而不是相对论。
,把计算机科学中的某个结构哪怕是特例,与语言之间的冲突解释一下就好.那些结构下,基础语言是解决不了的,那些结构下基础语言是可以解决的?为什么? 比如说你下面举了三个例子,那么很简单,我就随便选个例子,为什么消息传递发生数据关联"的超轻量级进程模型",是通用语言是无法有效承载Domain Specific Structure?原因在哪里? |
|
返回顶楼 | |
发表时间:2007-12-06
说真的,我觉的这个帖子应该精华帖,看两个偶像辩论。看了canonical的《关于函数式语言的只言片语》,我觉的canonical老大并没有去深入学习过函数式语言。
|
|
返回顶楼 | |
发表时间:2007-12-06
实际上我理解你说什么,你想表述的挂点其实也是我一贯以来的观点.曾经有一次我和讨论过这个问题。我记得我当时说,我现在觉得并非是我们发明的软件开发技巧不够成熟,对软件技巧背后的原理研究的不够深入。相反我认为是我们现在是对具体需求的研究还很初级,我们对需求的描述完全是表述性的.我相信某种软件技巧特别合适某种需求,并不是一种偶然的巧合。我相信某种特定需求的背后一定是有某种特定的结构,正如每一种软件技巧的背后都与之对应的数学结构。正是这种结构之间的同构,才导致了我们在编程时对软件技巧上的选择.固然在软件技术上寻找银弹是不可能的,但是现在这样见招拆招以纯粹的经验积累来对付千变万化的需求也是徒劳的。因此我觉得对现实中各种不同需求中所反映的结构进行深入的探索才是最重要的。
在基本的问题上,我并不否认你的观点,但是我不能接受你表述问题的方式。实际上我非常反对为了抽象化而随意使用数学工具来描述问题的方法,但是同时我也极端的反对用一种模糊的隐喻去描述问题。无论是采用物理学的隐喻也好,数学的隐喻也好,其实这种隐喻不过是为了方便他人理解。但是这仅仅是一个辅助手段而不是目的,把问题描述清晰便于它人验证才是我们真正的目的,这也是数学的唯一角色-----一种可验证的语言工具.你可以说我感觉这个问题不能用函数式语言处理,到此为止我不介意这么表述。但是我继续问你,这个结构是什么?为什么不能用函数式语言处理?你回答我,因为从物理的角度去看世界不是简单由函数构成的。这个表述就难以令人接受了.这充其量只能说明你自己看待世界的哲学观点。除非我同你有相似的观点,否则我根本无法去验证你到底说的是什么,说的正不正确. |
|
返回顶楼 | |
发表时间:2007-12-06
to dennis_zane:
1. 语言中的时间观念这个论题绝对不是我的原创 2. 我一直强调思维的连续性。不是说"B这样搞来搞去还是达不到A的高度", 而是说我们如果把系统的特征逐个分解,到底需要做哪些工作才能逐步增加最有价值的部分,特征聚集产生的增值部分又是如何显现的。 3. 一种实现总是包容了太多的思想。思想错了,实现对了。实现死了,思想活着。 to T1: 原先pojo说: 引用 在我看来,SAX API就是一种“在基元结构上应用基础操作”的API。只不过好东西因为简约而被视之简单,不入主流的法眼。
他这个说法有些基于哲学出发,所以我回复了一句自己的哲学 引用 因为我的理论物理学背景,我无法认同函数式编程的世界观。世界比函数的集合要复杂一些。
关于我的观点我想你也没有完全清楚。 引用 为什么不能用函数式语言处理
我的观点是这和函数式语言中能否加入结构解决任意复杂问题无关。为什么所有的问题不能在集合论中解决,为什么要有独立的数学学科。物理学所有的定律都使用数学表述,是否意味着物理学的真理蕴含在数学之中。我说 引用 实际上现在的通用语言也是无法有效承载Domain Specific Structure的。
其实与以下说法是类似的 引用 数学是无法涵盖物理学的,现在的已知的数学工具是无法有效承载尚未得到充分探索的领域的物理的
我说 引用 我所关心的不是语言层面的问题
这类似于说不要把所有物理问题都推到数学层面去解决。 我们应该研究独立的结构,应该建立单独的价值观和方法论。不要谈及一个技术进展的时候就说某某语言好,不是一说到DSL的优点就要去报ruby的大腿。此外,我的观点也不是去做业务分析,不是去如何更好的实现业务到基础技术结构的映射。 引用 不是强调对象的所谓业务含义,不是强调某种通用语言(例如ruby)的灵活的语法结构。在这之间存在着厚重的具有物理意义的可以进行结构分析的技术层
我想说这个结构层面现在并未得到充分的关注,我们对于结构的问题并不是非常清楚,对程序结构的稳定性更是少有经验。我们在Witrix中做了大量的工作,试图做到如下的图景: 引用 永远只写代码片断,而所有的代码片断组合在一起又构成一个可理解的整体
引用 对背景不是分解让其成为可见的部分,而是采用追加的,增删的方法对背景结构进行修正,则我们有可能在没有完整背景知识的情况下,独立的理解局部变化的结构。即背景是透明的,知识成为局部的。
http://canonical.iteye.com/blog/126467 在Witrix中我们实现的代码重用程度和程序整体结构控制能力是超越了目前已知的所有公开技术的。这不是什么哲学,而是我们在残酷的商业竞争中得以生存的资本。 |
|
返回顶楼 | |
发表时间:2007-12-06
引用 数学是无法涵盖物理学的,现在的已知的数学工具是无法有效承载尚未得到充分探索的领域的物理的
是不是有问题是数学无法涵盖的?我们暂且承认有。那么有问题是数学无法涵盖的,与所有问题都是数学无法涵盖的,是不是等价的?再进一步说,有某种问题A真的是数学无法涵盖的,那么是否可以推断说问题B,C也是数学无法涵盖的?这当中的逻辑是否跳跃的太快了. 所以你拉拉杂杂说了那么多,其实你仍然在逃避我的问题.你怎么判断,某个问题是现今数学能力之外的?世界上的确有很多,现在数学能力无法达到的事情,比如说人工智能。但是这是否意味着,我们认识到的数学能力在任何地方都毫无用处?是不是10+10,你都要掰起脚趾头来算? 你有这样的价值观,有那样的哲学观点,我们当然可以互相尊重,这本身就是一个非常个人的问题.不过,你要是下了某种断言,那么我就必须要让你拿出让人信服的依据. 引用 我无法认同函数式编程的世界观。世界比函数的集合要复杂一些。
引用 我的观点是这和函数式语言中能否加入结构解决任意复杂问题无关。
我不需要你去解决任意问题,我的关注点也没有世界那么大,我现在要的只是你对下面这个断言的证据.这个要求不算很过分吧。 引用 为什么消息传递发生数据关联"的超轻量级进程模型",是通用语言是无法有效承载Domain Specific Structure?原因在哪里?
说实在的,我就是个就是一个井底之蛙,我只关心巴掌这么大片天为什么是蓝色的?你跟我说,这天比巴掌大的多.这不是答非所问是什么? |
|
返回顶楼 | |
发表时间:2007-12-07
canonical同学回答的逻辑性让我这个非数学/物理专业的门外汉觉得你的逻辑性不足以搞数学/物理。不要误会,我是实话直说,对事不对人。T1一直想与你讨论的是:
什么问题(一个很具体的问题)是现有的通用语言无法描述的,进而想与你讨论该问题是否真的无法描述,这是一个实证的态度。你一直回避这个问题,你一直在说有些问题是数学/函数语言无法描述的。这是非常显而易见的答非所问。所以我怀疑你的逻辑思维能力。当然,更可能的情况是你看明白了T1的问题,但是由于某种原因(商业机密?)你不能说,所以你一直绕圈子。如果是后一种情况,你直接说明,大家也就不继续追问了。 |
|
返回顶楼 | |