Redian新闻
>
学FP不是为了写代码, 而是为了优秀的架构.
avatar
学FP不是为了写代码, 而是为了优秀的架构.# Programming - 葵花宝典
b*d
1
$10 gift from Rebtel! 万圣节奖励冲10刀送10刀,Rebtel电话卡大促销
http://goo.gl/EUsVY
• Make cheap international calls from any phone
• Deposit $10 - get $10 extra and start calling
• Offer valid until November 4
点击进去输入code: halloweenbonus
http://goo.gl/EUsVY
Rebtel相当不错。价格比google voice,skype都便宜,通话质量非常不错,而且给你
每个contact都给一个美国的local号码!也可以给国内的家人一个中国号码, 国内的人
可以打这个号联系到你, 他们只付国内电话费。
http://goo.gl/EUsVY
avatar
a*1
2
太多作业了,出来冒个气,然后,就走了。
avatar
n*0
3
http://www.glorypress.com/devotional/FaithAndLifeOneYearBook.asp?bid=1
倚靠上帝,放弃自己
经文: 「凡你们点火用火把围绕自己的,可以行在你们的火焰里,并你们所点的火把中
。这是我手所定的;你们必躺在悲惨之中。」(赛五十11 )
这是一个严重的警告,对付那行在黑暗中而想设法自救的人们。上帝说他们好
像自己点火,用火把围绕自己。这是什么意思呢?
这意思说:当我们在黑暗中遭遇试炼的时候,我们总想自谋出路,不肯信上帝
靠上帝。我们本该让祂施行拯救,可是我们顶喜欢自己筹划。我们寻求理由的结论、亲
友的劝告,结果就会采纳一个不出于上帝的方法。
这些都是我们自己点的火焰和火把,上帝要让我们行在其中,但是结果却是悲
惨。
所以亲爱的,不要想用自己的谋算逃出黑暗,我该等侯上帝的时间和上帝的方
法。受试炼是学习我们所需的功课。
流产式的拯救会阻挠上帝在我们身上的工作。我们应该把一切的难处交给上帝
。只要有祂的同在,就该甘心等在黑暗中。请记得,在黑暗中与上帝
avatar
n*1
4
在讨论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
avatar
m*e
5
谁的马甲?

【在 a***1 的大作中提到】
: 太多作业了,出来冒个气,然后,就走了。
avatar
n*1
6
当然用haskell写程序好处就是直奔主题, 所以行数就下来了. 可大多数人习惯论文分
三段, 论八股, 直奔主题太超前了.
avatar
g*g
7
意淫伤身, fp 做架构, oop做实现,你先找个实例再出来吹好不好?

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

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

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

avatar
t*n
9
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, 那么不管我们用啥语言,都是多少

avatar
b*e
10
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

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

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

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

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

avatar
n*1
14
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 奉献了自己的血肉青春,苦逼的死去
: 了。 实践出真知的资本主义活的是越来越好。
: 理论害死人。

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

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

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

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

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

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

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

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

avatar
g*g
19
软件工程之所以叫做工程,就是实践出真知。再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.

avatar
g*g
20
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思想怎么来的?
: 俺虚心请教, 能否详细解释下?

avatar
c*9
21
估计他说的是二者的相似。都是可以对表达式本身做进一步处理。

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

avatar
k*g
22

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

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

我认为最大贡献其实是 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了. 这拿来主义论点也太牛逼了吧.

avatar
b*e
24
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

avatar
c*9
25
怕出错的商业逻辑当然需要,用户界面倒不是必须的。

【在 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

avatar
k*g
26

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

【在 b***e 的大作中提到】
: Java不用type system 么?
avatar
n*1
27
什么是"Type manipulation"?

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

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。