如果一个东西看起来象花生,闻起来象花生,吃起来也象花生,那它究竟是不是花生? 如果两个事物在所有可观测行为上都表现一致,那两者的本质是否统一就成为了一个不可证伪的问题,从而处于科学范畴之外。而从人的机会主义倾向来看,我们理 所当然的会认为这两者是同一概念。我们以观察来认识世界,当然也就是以行为来界定事物。问题在于,我们在理论上要以事物的所有行为来界定它,而我们目前观 测到的又永远只是它的部分行为。在泛函分析分析中,有一种弱(weak)等价的概念,两个函数如果与某个空间中所有函数的作用(内积)的结果都相等,则这 两个函数在此空间中就是弱等价的。swartz正是通过这种方法定义了广义 ...
  • 23:16
  • 浏览 (328)
  • 评论 (0)
IntelliJ老板的一篇文章Language Oriented Programming: The Next Programming Paradigm 英文 http://www.onboard.jetbrains.com/articles/04/10/lop/ 中文 http://blog.csdn.net/chelsea/archive/2005/02/17/290486.aspx Martin Follower的一篇文章 Language Workbenches: The Killer-App for Domain Specific Languages? http://www.mart ...
  • 23:13
  • 浏览 (486)
  • 评论 (0)
http://spaces.msn.com/members/zbw25/Blog/cns!1pA6-3FOo9yNp_4lmEHxdDqA!248.entry      物理和数学的新分支的产生多半有着哲理性的开端,而软件中OO技术的兴起想必也是有一定的哲学基础的。但哲学是一种整体的,超越的认识,当我们在实际的应 用中走得越远,就会发现现实的操作距离哲学的理想越远。早期面向对象总是鼓吹对现实世界的直接表达,鼓吹Object,Class的本体论含义。但现在我 们已经可以清楚的感觉到面向对象的哲学隐喻存在着本质上的困难,而软件希望作为真实世界的翻版也必然面临 ...
  • 23:11
  • 浏览 (1705)
  • 评论 (3)
    最近听到不少人总是叨念着"细节决定成败"这句话,颇像是每天清晨必修的那句"all money go my home"一样。决定成败的因素很多,为什么细节能够成为压倒一切的关键。     拿产品来说吧,产品的细节处很重要,可能客户的取舍在毫厘之间。但这是否是事实之全部。其实客户需要的是满足自己的价值目标,他真的那么在意主要目标之外 的细节(甚至是刻意造作的细节)吗。制造细节的目的只是为了制造与同类产品的不同,这是市场进入完全竞争状况的标志。只是有意思的是,凡是中国人涌入的领 域,很快就能造成完全竞争的局面。就像我们小区里的煎饼摊 ...
  • 23:05
  • 浏览 (573)
  • 评论 (0)
    在我看来,软件开发就是一个从二进制指令构造出一些高级结构的过程(from binary chaos to artificial intelligence)。这种构造依赖于我们控制各种结构的能力。结构化编程向我们展现了一个机械化的分解与合成的世界,但这个世界与我们的真实世界 却差异良多。于是,面向对象编程试图直接跳跃到真实的世界,依赖于我们对真实世界中结构的控制能力,直接对真实的结构建模。早期面向对象技术的陈述中充斥 着这种乌托邦式的理想图景。但是这种隐喻是含混的,两个世界的巨大差异造成了必然的转换成本,我们只能压缩这种成本而不可能完全抛弃它,我们必须要经历 ...
    代码复用包括两个方面:概念复用和实现复用。这两者在C++的虚拟函数设计中是合二为一的,结果概念上的模糊往往造成继承机制的滥用。为了复用我们往往在 基类中塞入过多的职责,并在程序中制造了过多的层次。java的interface是纯粹的概念复用机制,实现方面的复用我们一般通过Impls类或者 Utils类来进行,即将代码片断写为静态函数。一般应该避免在类中写特别多的帮助性成员函数,因为成员函数隐含的通过成员变量相关着,比静态函数要更加 难以控制。     类是一个整体的概念,整体概念失效了,类也就不存在了。从这一点上来说,它未必是 ...
  • 23:01
  • 浏览 (331)
  • 评论 (0)
    我们开发程序的目的是为了完成业务功能, 理想的情况下程序中的每一条语句都应该是与业务直接相关的, 例如程序中不应该出现连接数据库, 读取某个字段等纯技术性的操作, 而应该是得到用户A的基本信息等具有业务含义的操作. dao(data access object)层存在的意义在于将与数据持久化相关的函数调用剥离出去, 提供一个具有业务含义的封装层. 原则上说, dao层与utils等帮助类的功能非常类似, 只是更加复杂一些, 需要依赖更多的对象(如DataSource, SessionFactory)等. 如果不需要在程序中屏蔽我们对于特定数据持久层技术的依 ...
    jsp模型为web程序提供了page/request/session/application这四个基础性的变量域. 这种变量域的划分很大程度上是纯技术性的, 与我们的业务应用中需要的scope支持相去甚远. 当我们把业务对象的生命周期映射到这些变量域的时候, 经常出现不适应的情况. 例如我们可能被迫选择把与某项业务相关的所有数据放置在session中并在各处硬编码一些资源清理代码. 为了实现与愈来愈复杂的应用开发的契合, 我们需要能够在程序中定义与应用相关的变量域并实现对这些变量域的管理, 即我们需要一种自定义scope的支持而不是使用几个固定的scope ...
    在无侵入性的前台页面控件设计方案中, 我们需要一种简便的方法迅速定位页面中的某一节点(dom node). 使用xpath是非常诱人的一个技术选择, 但是在实际使用中, 我们却发现xpath并不是那么方便. xpath的能力非常强大, 它支持绝对定位, 例如//input[@id='3'], 也支持相对定位, 例如 ./input[0], 甚至支持根据节点内容定位, 例如//a[contains(., 'partial text')].     问题是在一个复杂的界面控件中, html节点本身的结构与界面展现结构并不是一致的 ...
canonical
搜索本博客
最近加入圈子
存档
最新评论