含有〈软件〉标签的文章(4)

[微言]OO与柏拉图

【2013-02-22】

@外刊IT评论 最新发表《面向对象编程从骨子里就有问题——看看名人大家是如何诋毁面向对象的》:正所谓树大招风,越是流行的东西越容易变成人们的众矢之的。在编程界里,面向对象编程就是这样一个代表性事物,不论它在当今的软件开发中占有多大的 『文章地址: http://t.cn/zYXptkR 』

@tertio:哈哈,我也是

@whigzhou: 你们只是说说而已,我却改行了

@tertio “面向对象编程语言的问题在于,它总是附带着所有它需要的隐含环境。你想要一个香(more...)

标签: | |
4883
【2013-02-22】 @外刊IT评论 最新发表《面向对象编程从骨子里就有问题——看看名人大家是如何诋毁面向对象的》:正所谓树大招风,越是流行的东西越容易变成人们的众矢之的。在编程界里,面向对象编程就是这样一个代表性事物,不论它在当今的软件开发中占有多大的 『文章地址: http://t.cn/zYXptkR 』 @tertio:哈哈,我也是 @whigzhou: 你们只是说说而已,我却改行了 @tertio “面向对象编程语言的问题在于,它总是附带着所有它需要的隐含环境。你想要一个香蕉,但得到的却是一个大猩猩拿着香蕉,而其还有整个丛林。” — Joe Armstrong(Erlang语言发明人)----Joe的毒舌总是很精准,但他的Erlang却也没摸到真正的门在哪里 @whigzhou: 我的说法是,OO就是柏拉图主义 @whigzhou: 我是在读过波普的《开放社会的敌人》后才意识到OO问题之所在的,等读到奎因时,它就完全被我唾弃了 @whigzhou: 在柏拉图看来,先有绝对而纯粹的理念,然后投射为现实,而奎因让我认识到,概念/意义/结构都是在主体与上下文环境以及主体之间的持续互动中逐渐明确起来的,其内涵与边界都随此过程而不断变化调整,OO的问题在于,它建立的系统很不适应这种变化,每次认识变化都会冲击到整个结构 @小小nopainkiller:什么是更好的方法呢? @whigzhou: 要符合人类认知规律,即认识世界、形成和澄清观念、积累知识的规律,先具体后抽象,还有低耦合,具体怎么做我不知道,先等着看三总的成果吧 【后记】OO根子上的问题其实比这更多。
[微言]编程与知识

【2012-02-14】

@trustno1v2:这两天冒出来的一个想法。软件设计领域的所采用技术和方法,最主要的目的在于整理各种旧知识,而非发明创造新知识.说白一点,软件攻城师的工作与图书馆管理员大体相当.当然可能算法不在此列.

@庄表伟:编程的主要工作,应该是翻译吧,把人类能够理解的语言,翻译为机器能够理解的语言。这其中的确没有什么新知识。另外,在软件领域,有一些特定的问题,需要被解决,这些问题,有些在传统领域可以借鉴,有些不行,所以还是会有一些新知识出现的。

@ter(more...)

标签: | |
4107
【2012-02-14】 @trustno1v2:这两天冒出来的一个想法。软件设计领域的所采用技术和方法,最主要的目的在于整理各种旧知识,而非发明创造新知识.说白一点,软件攻城师的工作与图书馆管理员大体相当.当然可能算法不在此列. @庄表伟:编程的主要工作,应该是翻译吧,把人类能够理解的语言,翻译为机器能够理解的语言。这其中的确没有什么新知识。另外,在软件领域,有一些特定的问题,需要被解决,这些问题,有些在传统领域可以借鉴,有些不行,所以还是会有一些新知识出现的。 @tertio:非也,与科学家所做的工作是一样的。 @whigzhou: 一项知识在被按某种形式形式化之前和之后是不同的东西,在被置入某个结构之前和之后也是不同的东西,而这些形式与结构与其所容纳的知识更是不同的东西(尽管在另一个层次上看,它们也是知识) @tertio:嗯,被一种形式绑定之后,知识的含义可能会发生很多变化 @whigzhou: 所以,当你将既有知识装进一个新结构时,你确实是在创造,即便你只是将既有知识装进一个旧结构,只要它还没被这么装过,也是创造,只是后者比前者的创造性略小 【后记】 发现当时有个关键意思漏了没说:我之所以强调将旧知识放入新结构是一种创造,是因为,所谓知识(或意义、信息)就是结构,因而将旧知识放入新结构就是创造了新知识。
[微言]抽象与耦合

【2012-02-13】

@tertio:在程序设计中,抽象原则和最少耦合原则实际上是矛盾的,细究下去,还有更多的原则也是相互矛盾的。

@whigzhou: 嗯,是的。缓解的办法是,抽象的思考,松耦合的实现,这类似于交谈中,各自保留自说自话的自由,同时尽可能捕捉共同的意义

@whigzhou: 告别柏拉图,先具体,后抽象,不要把抽象的结果视为“更基本的东西”甚至“是前提”…可是,洁癖们往往做不到

@tertio:回复@whigzhou:主要是没条件。

@whigzhou: 我多年前说过,像OO这种自上而下、先抽象后具(more...)

标签: |
4104
【2012-02-13】 @tertio:在程序设计中,抽象原则和最少耦合原则实际上是矛盾的,细究下去,还有更多的原则也是相互矛盾的。 @whigzhou: 嗯,是的。缓解的办法是,抽象的思考,松耦合的实现,这类似于交谈中,各自保留自说自话的自由,同时尽可能捕捉共同的意义 @whigzhou: 告别柏拉图,先具体,后抽象,不要把抽象的结果视为“更基本的东西”甚至“是前提”...可是,洁癖们往往做不到 @tertio:回复@whigzhou:主要是没条件。 @whigzhou: 我多年前说过,像OO这种自上而下、先抽象后具体的模式,其实就是柏拉图主义,但人类认识和创造世界的过程,与柏拉图图景大相径庭 @茶博未:教科书,包括数学的,都该这么写。手册则不然 @tertio:所以新的体系是按照科学方法论的过程来设计的,实际上,就是科学方法论的代码版。 @whigzhou: 嗯,在过程性语言中,假如先实现了“电视机类”和“电饭锅类”,然后抽象出“电器类”,就要把前两个的共同部分挖出来,而在你的逻辑语言里,可能只是增加了一条更易通达的逻辑路径,前面的代码无须修改,我理解的对吧? @tertio:具体就复杂了。需要可以自动提取共性,之后可以保持映射关系或者做一个硬拷贝脱离映射关系,脱离映射关系之后还可以反过来约束具体实现。花样还可以更多,均取决于语言的表达力。(甚至完全脱离OO的语境)比如可以说:电视机X和电饭锅Y共同使用的金属。 @whigzhou: 比如可以这样,先具体:IsClass(电视机),HasProp(电视机,功率),IsClass(电饭锅),HasProp(电饭锅,功率).然后抽象:IsClass(电器),Is(电视机,电器),Is(电饭锅,电器),As(电视机.功率,电器.功率),As(电饭锅.功率,电器.功率).这样,抽象和松耦合便同时做到了,对吧? @tertio:对,两个As可以默认,除非名字不一样。此刻IDE应提供电视机和电饭锅的两个版本的定义,原来的定义和有抽象之后的定义。之后的问题在于,谁约束谁?是抽象约束具体实现还是具体实现约束抽象? @tertio: 之后的问题在于,谁约束谁?是抽象约束具体实现还是具体实现约束抽象? @whigzhou: 回复@tertio:这个我觉得应该按照对象被声明为什么类,假如X最初被声明为Isa(X,电视机)就受两个类的双重约束,假如被声明为Isa(X,电器),便只受一个类约束 @tertio:回复@whigzhou:事实上,不会做任何约定。这句话(按照对象...,假如...假如...便...)的含义本身是用代码表达出来的。其基础机制,是逻辑上的,有的论断是推理出来的,随着前提变化而变,而有的论断,推理出来之后会成为独立的事实,不随前提改变。
饭文#R4: 软件专利权已成创新绊脚索

软件专利权已成创新绊脚索
辉格
2011年4月28日

日前,谷歌输掉了一桩软件专利案,被判侵权成立,赔偿500万美元;尽管金额不高,但由于同案被告包括了雅虎、亚马逊、PayPal和AOL等行业巨头,且涉案代码属应用范围极广的Linux内核,此案备受开源界关注,判决结果引发了业界对专利陷阱的广泛担忧,以Linux为命根子的Red Hat虽未被列入被告,却已自告奋勇提起反制诉讼,要求判定该专利无效。

这是一个典型的案例,说明软件专利权会如何被滥用,原告Bedrock是一家专业专利钓鱼公司,并不以软件为业,其老板是一位资深专利法律师,而声称被侵犯的专利根本算不上创新,它听起来就像:一个保持冰箱整洁的新方法,每次打开冰箱存取物品时,顺便拿几样东西看看,假如有东西过期了,给它贴个标签(more...)

标签: | | | |
1803
软件专利权已成创新绊脚索 辉格 2011年4月28日 日前,谷歌输掉了一桩软件专利案,被判侵权成立,赔偿500万美元;尽管金额不高,但由于同案被告包括了雅虎、亚马逊、PayPal和AOL等行业巨头,且涉案代码属应用范围极广的Linux内核,此案备受开源界关注,判决结果引发了业界对专利陷阱的广泛担忧,以Linux为命根子的Red Hat虽未被列入被告,却已自告奋勇提起反制诉讼,要求判定该专利无效。 这是一个典型的案例,说明软件专利权会如何被滥用,原告Bedrock是一家专业专利钓鱼公司,并不以软件为业,其老板是一位资深专利法律师,而声称被侵犯的专利根本算不上创新,它听起来就像:一个保持冰箱整洁的新方法,每次打开冰箱存取物品时,顺便拿几样东西看看,假如有东西过期了,给它贴个标签,假如看见有东西贴着标签,把它扔掉。(实际上比这要含糊的多) 有意思的是,这位专利法专家David Garrod原本是专利法改革的积极分子,曾免费帮助[[PubPat]]打赢过多宗专利虚假标注案件,PubPat是一家反专利滥用的非政府组织,也是专利制度改革的积极推动者,并明确反对将专利法适用于软件。 或许正是因为Garrod深谙专利制度的缺陷所在,才能成功构造陷阱并打赢官司,他知道如此琐碎的“发明”和如此明显的钓鱼很难获得法庭支持,所以刻意挑选了素以专利钓鱼亲善著称的得克萨斯东区法庭,为让案件能被该法庭受理,他把CityWare这家早在2004年开业不久便倒闭的小公司列入了被告。 对专利制度的合理性,历来有许多争议,与它对创新的妨碍和高昂的防范与执行成本相比,它对创新的激励作用究竟是否物有所值,是值得追问和检验的;而在法理基础上,它也有着根本的缺陷,这些缺陷的错误激励作用导致了系统性的无效率。 首先,任何产权都是在行为空间中划出的一个排他性空间,而从无主空间中创立产权通常遵循的是先来先得原则,比如谁先在一块无主土地上耕种或居住就可取得产权,专利权表面上也是先来先得,其实不然,耕种和居住是实际的占有行动,而注册专利只是在行为空间里画个圈,并未实施圈内的行为,它类似于国内校园里流行的用象征性物品占座的习俗,或在月球模型上插面旗来宣布主权。 这种象征性占有的成本很低,它会激励人们不负责任的四处随意圈地,但占了茅坑又不拉屎,等别人想拉时又漫天要价。 其次,通常产权所涉及行为空间会随占有行动而自动变得“拥挤”,这赋予了产权以天然的排他性;专利权则不然,它是借助国家管制能力,对原本不具有排他性的行为施加人为的排他性;这样,专利权的执行成本便转嫁给了潜在的不知情入侵者:假如无票观众进入剧院,他们会直接面临有票观众物理上的排斥,而后者也直接感受到他们带来的拥挤,但假如我无意中侵入的是专利领地,我感受不到任何拥挤,我必须用自己的全部审慎和细察来防范侵权嫌疑。 正是这一点创造了钓鱼机会:入侵之初不会遇到障碍,但你一旦形成规模,投入大量资源,对它产生依赖,钓鱼者便从角落里跳出来漫天要价了;这很像美国西进运动时的土地纠纷,当时授予北美土地的特许状在伦敦市场上被频繁交易,但实际上没人弄得清楚被交易的土地究竟在哪里,没人见过它,它们只是凭想象被画在很不靠谱的地图上,而同时,那些真正在西部开疆拓土的农民,却要时刻担忧他们亲身居住和耕种的土地不定哪天就被手持特许状的人前来索要,显然,这不是好的产权制度。 事到如今,专利制度鼓励创新的作用越来越小,特别是在软件领域,很少有公司靠购买专利来提升自己的开发能力,如今软件厂商注册和购买专利主要是用来自卫,防止被钓鱼和讹诈:当别人来讹诈你时,你也得有可以讹诈的东西;为此,你最好也大撒网式的注册专利,确保你的主要竞争对手至少会撞上其中一部分;然而,这样的游戏只有拥有专业律师团队的大公司才玩得起。 当专利制度由创新激励机制沦为相互下套使绊的工具,是时候彻底改变它了;重要的是,需要在地盘圈占对后来者所构成的障碍与圈占者所承担的代价联系起来,才能断绝对占而不用和漫天要价的无限制激励。 好在不仅产业界,法律界和学术界也逐渐意识到这个问题,PubPat的推动已取得些成效,2004年、05年和07年曾被三度召往国会,在听证会上就专利制度对创新的妨碍和可能的改革作证,尽管还没有带来实质性的变化。