你想要一个香蕉,但得到的却是一个大猩猩拿着一个香蕉

admin 13年前
     本文是从    <a href="/misc/goto?guid=4958187581245088189">You wanted a banana but you got a gorilla holding the banana</a> 这篇文章翻译而来。    <p></p>    <p> Joe Armstrong—Erlang语言的创造者—就软件的可重用性问题发表的意见:</p>    <blockquote>     <p>我认为,可重用性不足是面向对象编程语言里才会有的问题,函数式编程语言没有这个问题。面向对象的编程语言之所以有这个问题是因为它们需要整个的内在的系统做支持。<strong>你想要一个香蕉,但得到的却是一个大猩猩拿着一个香蕉</strong>,还有整个丛林。</p>     <p>如果你的代码具有亲系透彻性(referential transparency),你用的是纯函数—所有的数据都只跟它的输入参数,输出值有关,不会留下任何的持久状态—这是绝对的可重用性。</p>    </blockquote>    <p> 来源:<a href="/misc/goto?guid=4958187581977481272">Coders at Work</a>。作者用粗体进行强调。</p>    <p> 我大部分的工作都是用的面向对象语言,而且近期也不会有任何的改变。我对函数式<em>编程技术</em>更感兴趣,而不是函数式<em>编程语言</em>:我编写纯函数,用函数当作参数或返回值等等。就像Joe Armstrong说的,这种程序代码易于重用。如果你想重用(或测试)一个函数式香蕉,你不需要先造出一个丑陋的大猩猩来拿着这个香蕉。<br /> <br /> 来自: <a id="link_source2" href="/misc/goto?guid=4958187582715658721" target="_blank">外刊IT评论</a></p>