- 论坛徽章:
- 2
|
回复 98# starwing83
光有不变式对说明算法正确性不够,得说明这个不变式如何被满足。
如果省略,只说如果不变式被满足的情况下算法一定正确;那递归天然就隐含类似不变式的思想了。
这吖是指wikipedia?这种划分很早就出现了好吧。。。
这个世界已经被OO污染了。。。 逻辑式没用过,其他三种我认为OO是一种组织代码的方式而已。
OO本身不是毫无可取之处。我烦的是那些只会追求OO的形的家伙,而且这样的家伙也太多太多了,审丑疲劳了都。。。
而且我也越来越怀疑这不是OO的错。即是说,不仅仅OO才会出现这种被它的追随者败坏了名声的事。 functional一样会, 只是functional的追随者不多而已。
比如:
http://c2.com/cgi/wiki?ExpressionProblem
In FunctionalProgramming, you would describe a data type such as:
type Shape = Square of side
| Circle of radius
Then you would define a single area function:
define area = fun x -> case x of
Square of side => (side * side)
| Circle of radius => (3.14 * radius * radius)
In ObjectOrientedProgramming, you would describe the data type such as:
class Shape <: Object
virtual fun area : () -> double
class Square <: Shape
side : double
area() = side * side
class Circle <: Shape
radius : double
area() = 3.14 * radius * radius
为毛前者要归类在Functional里啊? 如果type set有扩展的可能性, 我不会这么写啊, 可能会用type class之类的。
为毛后者又要归类在OO里啊? 如果type set没有扩展的可能性(性别、比如), 我也可能会用tagged union(variation)之类的东西啊。
而且这种说法不仅仅只是这个页面而已,expression problem有关的诸多论文都是这样起头的。
究竟是我脑袋被门卡了还是他们的脑袋全都被门卡了?
类似的,前不久就在CU有人引用一篇文章,说switch是imperative的,OO应该避免。 是否应该避免也是看问题的,要避免都得避免,关OO啥事啊。
我就不明白了, 到底是我对OO的定义不对, 还是其他人对OO的定义不对。
tagged union那种东西就应该依据定义、无须解释地算在functional里面? 那switch为啥又被算到imperative头上了?
唯一能想到的解释就是:莫非是程序员也依然是笨蛋居多? ╮(╯_╰)╭ |
|