由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 学FP不是为了写代码, 而是为了优秀的架构.
相关主题
Haskell很难学。。haskell 真是逆天, 各种特殊符号都有特殊用途
JS就应该杜绝OOP大牛对Scala的type system如何评价?
OOP里面的Object其实是actorgo也是三种paradigm混合的语言
scala和monad粉FP的人是因为把电脑想象成图灵机了
FP更接近人的思维functional programming?
functional programming 哪本书经典适合入门模板算是纯FP吗
想学FP最好不要从Scala开始有没有喜欢haskell的同学
这次Scala没有入选有点意外呀对 (im)mutability 的误解和深度理解
相关话题的讨论汇总
话题: fp话题: oo话题: immutable话题: oop话题: class
进入Programming版参与讨论
1 (共1页)
n****1
发帖数: 1136
1
在讨论FP与OOP之争的时候, 动不动就会有人跳出来说拿市场占有率说事, 说拿接收程
度说事, 拿开发/执行效率说事. 我觉得这是站在士兵的角度, 而不是站在将军的角度
思考问题. 比如zhaoce等一帮人张嘴就来"我认为cs没有什么东西是不可以通过堆人力
搞定的", 这等同于"咱们人多,打战必胜". 观点基本是对的, 可是一个脑子里只想着堆
士兵数量的人能当将军么?
在我看来,FP最大贡献, 最吸引人的地方,在于它给出了很多模型的理论基础, 比如
monad/applicative functor之类的. 这些数学结构能够帮助我们识别出我们具体问题
的边界和局限.
举个例子, Applicative functor是和parallel computing紧密相连的. 如果我们需要
解决的实际问题能够被抽象为applicative functor, 那么不管我们用啥语言,都是多少
能够scale horizontally. 但如果不能, 你就算是用一个军团的OO程序猿也写不出
distributed solution. 因为理论一定能举出反例(翻译成程序猿语言叫一定能重现出
bug).
现实中的架构设计,大多数人都是摸着石头过河, 设计者难以预测这个架构究竟能走多
远.
而FP能够帮助架构师从数学家的角度, 利用现成的理论, 来看清一个模型在最理想的情
况下能被实现成什么样子的.
就拿之前的铁道部之争来说吧, 魏老师假设这个问题不能并行化, goodbug假设它可以.
究竟谁的假设是对的? 是不是我们需要一个军团的人花几个月时间写个东西,写出来可
以就是goodbug对, 写不出就是goodbug错呢? 为啥不把整个问题完整地写在纸上, 用数
学模型抽象以下, 用来做个基本的猜测呢?
学习FP并不意味着我们工作中的每一行代码都要是Pure Functional. 我个人用的语言
各种各样, C/Python/java/golang/js(nodejs)/Haskell, 我学C时感觉自己在学英文语
法, 学java/python/golang时感觉在学论文写作方法, 学haskell时感觉在学各文章想
表达的主题.
FP与OOP是不矛盾的, 我们可以用FP的思维方式来做架构, 做好了再交给其他OOP猴子去
实现. 架构师们就像独裁者, 独裁者里面有聪明的普京, 或者二逼的金三棒. FP能让独
裁者变得稍微明智一点.
Just my 2 cents
n****1
发帖数: 1136
2
当然用haskell写程序好处就是直奔主题, 所以行数就下来了. 可大多数人习惯论文分
三段, 论八股, 直奔主题太超前了.
g*****g
发帖数: 34805
3
意淫伤身, fp 做架构, oop做实现,你先找个实例再出来吹好不好?

【在 n****1 的大作中提到】
: 在讨论FP与OOP之争的时候, 动不动就会有人跳出来说拿市场占有率说事, 说拿接收程
: 度说事, 拿开发/执行效率说事. 我觉得这是站在士兵的角度, 而不是站在将军的角度
: 思考问题. 比如zhaoce等一帮人张嘴就来"我认为cs没有什么东西是不可以通过堆人力
: 搞定的", 这等同于"咱们人多,打战必胜". 观点基本是对的, 可是一个脑子里只想着堆
: 士兵数量的人能当将军么?
: 在我看来,FP最大贡献, 最吸引人的地方,在于它给出了很多模型的理论基础, 比如
: monad/applicative functor之类的. 这些数学结构能够帮助我们识别出我们具体问题
: 的边界和局限.
: 举个例子, Applicative functor是和parallel computing紧密相连的. 如果我们需要
: 解决的实际问题能够被抽象为applicative functor, 那么不管我们用啥语言,都是多少

s***o
发帖数: 2191
4
FP的思维方式做架构, OOP去实现 -- 你这个是在写academic paper 还是从实践中得来
的?

【在 n****1 的大作中提到】
: 在讨论FP与OOP之争的时候, 动不动就会有人跳出来说拿市场占有率说事, 说拿接收程
: 度说事, 拿开发/执行效率说事. 我觉得这是站在士兵的角度, 而不是站在将军的角度
: 思考问题. 比如zhaoce等一帮人张嘴就来"我认为cs没有什么东西是不可以通过堆人力
: 搞定的", 这等同于"咱们人多,打战必胜". 观点基本是对的, 可是一个脑子里只想着堆
: 士兵数量的人能当将军么?
: 在我看来,FP最大贡献, 最吸引人的地方,在于它给出了很多模型的理论基础, 比如
: monad/applicative functor之类的. 这些数学结构能够帮助我们识别出我们具体问题
: 的边界和局限.
: 举个例子, Applicative functor是和parallel computing紧密相连的. 如果我们需要
: 解决的实际问题能够被抽象为applicative functor, 那么不管我们用啥语言,都是多少

t*****n
发帖数: 1589
5
fp据我理解就是second order formal system.确实比fisrt order language 更
expressive因为sets of sets 也在language term domain。
但问题是first order language although being very simple, is surprisingly
expressive enough. and its simplicity is nuch favored

【在 n****1 的大作中提到】
: 在讨论FP与OOP之争的时候, 动不动就会有人跳出来说拿市场占有率说事, 说拿接收程
: 度说事, 拿开发/执行效率说事. 我觉得这是站在士兵的角度, 而不是站在将军的角度
: 思考问题. 比如zhaoce等一帮人张嘴就来"我认为cs没有什么东西是不可以通过堆人力
: 搞定的", 这等同于"咱们人多,打战必胜". 观点基本是对的, 可是一个脑子里只想着堆
: 士兵数量的人能当将军么?
: 在我看来,FP最大贡献, 最吸引人的地方,在于它给出了很多模型的理论基础, 比如
: monad/applicative functor之类的. 这些数学结构能够帮助我们识别出我们具体问题
: 的边界和局限.
: 举个例子, Applicative functor是和parallel computing紧密相连的. 如果我们需要
: 解决的实际问题能够被抽象为applicative functor, 那么不管我们用啥语言,都是多少

b***e
发帖数: 1419
6
Second order formal system (System F)一般指的是类型系统(type system),跟
statically typed FP虽然联系紧密,但是和普遍意义上的FP没有直接的联系。Lisp,
JavaScript都是dynamically typed FP,跟second order formal system没有关系。

【在 t*****n 的大作中提到】
: fp据我理解就是second order formal system.确实比fisrt order language 更
: expressive因为sets of sets 也在language term domain。
: 但问题是first order language although being very simple, is surprisingly
: expressive enough. and its simplicity is nuch favored

n****1
发帖数: 1136
7
这是某大牛的讲座, 没耐性的可以先看看下面别人的评论
http://www.infoq.com/presentations/functional-pros-cons?utm_sou

【在 s***o 的大作中提到】
: FP的思维方式做架构, OOP去实现 -- 你这个是在写academic paper 还是从实践中得来
: 的?

g*****g
发帖数: 34805
8
大牛的讲座有蛋用,学术界再优秀的论文也不如业界实践有说服力。
大规模应用的架构核心就是SOA,整个就是OO encapsulation的思想。至于底下单个服
务的实现,
要用FP,还是OO,团队可以自己有选择权。
说到底,啥时候大规模网站用FP做架构了,你再来吹吧。无知者无畏。

【在 n****1 的大作中提到】
: 这是某大牛的讲座, 没耐性的可以先看看下面别人的评论
: http://www.infoq.com/presentations/functional-pros-cons?utm_sou

q*c
发帖数: 9453
9
某大牛叫马克思,给出了无比牛逼美好的架构,几亿人都上船了!而且人家上船是要拿
命去赌的!
结果?几千万上亿人为了这个大牛的理论 paper 奉献了自己的血肉青春,苦逼的死去
了。 实践出真知的资本主义活的是越来越好。
理论害死人。

【在 n****1 的大作中提到】
: 这是某大牛的讲座, 没耐性的可以先看看下面别人的评论
: http://www.infoq.com/presentations/functional-pros-cons?utm_sou

n****1
发帖数: 1136
10
Ironically, this guy is a co-author of the Java Language Specification, and
now working in Google for dart.
You start bullshitting others even before opening the link, do you?
Do you know there is an other guy called Adam Smith, and "资本主义" is
exactly his theory? What make you think the guy giving this talk is Karl
Marx instead of Adam Smith, before you know what is inside the talk?
Never mind, I just learned a lesson: you can not persuade a frog if it is
very happy staying inside a tiny well.

【在 q*c 的大作中提到】
: 某大牛叫马克思,给出了无比牛逼美好的架构,几亿人都上船了!而且人家上船是要拿
: 命去赌的!
: 结果?几千万上亿人为了这个大牛的理论 paper 奉献了自己的血肉青春,苦逼的死去
: 了。 实践出真知的资本主义活的是越来越好。
: 理论害死人。

相关主题
functional programming 哪本书经典适合入门haskell 真是逆天, 各种特殊符号都有特殊用途
想学FP最好不要从Scala开始大牛对Scala的type system如何评价?
这次Scala没有入选有点意外呀go也是三种paradigm混合的语言
进入Programming版参与讨论
n****1
发帖数: 1136
11
"大规模应用的架构核心就是SOA,整个就是OO encapsulation的思想"
我没看明白这个, 我一直觉得SOA和OO是正交的,SOA可以用OOP程序作为载体, 但不是
唯一选择。 说
SOA就是OO思想怎么来的?
俺虚心请教, 能否详细解释下?

【在 g*****g 的大作中提到】
: 大牛的讲座有蛋用,学术界再优秀的论文也不如业界实践有说服力。
: 大规模应用的架构核心就是SOA,整个就是OO encapsulation的思想。至于底下单个服
: 务的实现,
: 要用FP,还是OO,团队可以自己有选择权。
: 说到底,啥时候大规模网站用FP做架构了,你再来吹吧。无知者无畏。

b*******s
发帖数: 5216
12
SOA是被验证过的相当适合大型应用的一种架构,易扩展,健壮,封装良好不容易扩散
错误

【在 n****1 的大作中提到】
: "大规模应用的架构核心就是SOA,整个就是OO encapsulation的思想"
: 我没看明白这个, 我一直觉得SOA和OO是正交的,SOA可以用OOP程序作为载体, 但不是
: 唯一选择。 说
: SOA就是OO思想怎么来的?
: 俺虚心请教, 能否详细解释下?

n****1
发帖数: 1136
13
良好的设计都是精心封装的, 连Haskell也很强调封装. 如果说SOA是OOP,那Haskell也
是OOP了. 这拿来主义论点也太牛逼了吧.

【在 b*******s 的大作中提到】
: SOA是被验证过的相当适合大型应用的一种架构,易扩展,健壮,封装良好不容易扩散
: 错误

c*******9
发帖数: 9032
14
实践出真知是废话。大牛的理论也是实践中来的不过抽像了些。资本主义活的好正是因
为理论体系的严谨。

【在 q*c 的大作中提到】
: 某大牛叫马克思,给出了无比牛逼美好的架构,几亿人都上船了!而且人家上船是要拿
: 命去赌的!
: 结果?几千万上亿人为了这个大牛的理论 paper 奉献了自己的血肉青春,苦逼的死去
: 了。 实践出真知的资本主义活的是越来越好。
: 理论害死人。

g*****g
发帖数: 34805
15
软件工程之所以叫做工程,就是实践出真知。再fancy的理论都没有但用,是骡子是马
拉出来溜溜,
有idea可以,有本事执行弄个牛逼软件出来,大家就服了。没实践的理论都是放屁,
100篇paper99篇
都是垃圾,哪怕是大牛写的。你丫不服大可以去吃螃蟹。

and

【在 n****1 的大作中提到】
: Ironically, this guy is a co-author of the Java Language Specification, and
: now working in Google for dart.
: You start bullshitting others even before opening the link, do you?
: Do you know there is an other guy called Adam Smith, and "资本主义" is
: exactly his theory? What make you think the guy giving this talk is Karl
: Marx instead of Adam Smith, before you know what is inside the talk?
: Never mind, I just learned a lesson: you can not persuade a frog if it is
: very happy staying inside a tiny well.

g*****g
发帖数: 34805
16
OO 三要素,encapsulation, inheritance, polymorphism. 众所周知,毫无争议。
没听说过FP把encapsulation作为重点的。SOA当然可以用FP来做实现。但
encapsulation就是从
OOP这里发扬广大的。事实上,现存的大型SOA系统,绝大部分用得都是OO语言。
连这也要争,I服了U。
还是那句话,有本事弄几个实例出来大家瞧瞧,光意淫有用吗?

【在 n****1 的大作中提到】
: "大规模应用的架构核心就是SOA,整个就是OO encapsulation的思想"
: 我没看明白这个, 我一直觉得SOA和OO是正交的,SOA可以用OOP程序作为载体, 但不是
: 唯一选择。 说
: SOA就是OO思想怎么来的?
: 俺虚心请教, 能否详细解释下?

c*******9
发帖数: 9032
17
估计他说的是二者的相似。都是可以对表达式本身做进一步处理。

【在 b***e 的大作中提到】
: Second order formal system (System F)一般指的是类型系统(type system),跟
: statically typed FP虽然联系紧密,但是和普遍意义上的FP没有直接的联系。Lisp,
: JavaScript都是dynamically typed FP,跟second order formal system没有关系。

k**********g
发帖数: 989
18

Type System 在科学计算(数值运算、也包括影像处理)还真是有点用处的,用在商业
运算上就不知道了。

【在 c*******9 的大作中提到】
: 估计他说的是二者的相似。都是可以对表达式本身做进一步处理。
k**********g
发帖数: 989
19

我认为最大贡献其实是 immutability 和 data-flow thinking (value-based
thinking)。
These have contributed changes to database architectures, as well as
application programming. They also make multicore programming easier.
These ideas can be brought back into imperative (procedural) or OO languages.
To bring them back into OO languages, there need to be a kind of immutable
classes: (similar to C++ const keyword)
(1) all class fields are marked "immutable" keyword
(2) if class fields contain references to another class, the other class
must also have "immutable" keyword.
(3) most class methods are marked "immutable", meaning that they don't
modify any object state. Some methods aren't marked "immutable", see #4.
(4) Class members can be modified at the construction time, and the
constructor can call any member function. However, once the class leaves the
constructor, only those methods marked "immutable" are callable.
(3 and 4) So, constructor could call both mutable and immutable methods.

【在 n****1 的大作中提到】
: 良好的设计都是精心封装的, 连Haskell也很强调封装. 如果说SOA是OOP,那Haskell也
: 是OOP了. 这拿来主义论点也太牛逼了吧.

b***e
发帖数: 1419
20
Java不用type system 么?

【在 k**********g 的大作中提到】
:
: 我认为最大贡献其实是 immutability 和 data-flow thinking (value-based
: thinking)。
: These have contributed changes to database architectures, as well as
: application programming. They also make multicore programming easier.
: These ideas can be brought back into imperative (procedural) or OO languages.
: To bring them back into OO languages, there need to be a kind of immutable
: classes: (similar to C++ const keyword)
: (1) all class fields are marked "immutable" keyword
: (2) if class fields contain references to another class, the other class

相关主题
粉FP的人是因为把电脑想象成图灵机了有没有喜欢haskell的同学
functional programming?对 (im)mutability 的误解和深度理解
模板算是纯FP吗go几天的一些感受
进入Programming版参与讨论
c*******9
发帖数: 9032
21
怕出错的商业逻辑当然需要,用户界面倒不是必须的。

【在 k**********g 的大作中提到】
:
: 我认为最大贡献其实是 immutability 和 data-flow thinking (value-based
: thinking)。
: These have contributed changes to database architectures, as well as
: application programming. They also make multicore programming easier.
: These ideas can be brought back into imperative (procedural) or OO languages.
: To bring them back into OO languages, there need to be a kind of immutable
: classes: (similar to C++ const keyword)
: (1) all class fields are marked "immutable" keyword
: (2) if class fields contain references to another class, the other class

k**********g
发帖数: 989
22

我原本想说的是特指 Type manipulation 。

【在 b***e 的大作中提到】
: Java不用type system 么?
n****1
发帖数: 1136
23
什么是"Type manipulation"?

【在 k**********g 的大作中提到】
:
: 我原本想说的是特指 Type manipulation 。

1 (共1页)
进入Programming版参与讨论
相关主题
对 (im)mutability 的误解和深度理解FP更接近人的思维
go几天的一些感受functional programming 哪本书经典适合入门
王垠新文 为Java说句公道话想学FP最好不要从Scala开始
Duck typing is great ...这次Scala没有入选有点意外呀
Haskell很难学。。haskell 真是逆天, 各种特殊符号都有特殊用途
JS就应该杜绝OOP大牛对Scala的type system如何评价?
OOP里面的Object其实是actorgo也是三种paradigm混合的语言
scala和monad粉FP的人是因为把电脑想象成图灵机了
相关话题的讨论汇总
话题: fp话题: oo话题: immutable话题: oop话题: class