s********k 发帖数: 6180 | 1 语言无所谓,erlang,scala,haskell,Closure 都行啊,主要介绍思想的,求推荐 |
d****i 发帖数: 4809 | 2 表了,FP都是左逼用来装逼的。
【在 s********k 的大作中提到】 : 语言无所谓,erlang,scala,haskell,Closure 都行啊,主要介绍思想的,求推荐
|
y******s 发帖数: 29 | |
d******e 发帖数: 2265 | 4 http://learnyouahaskell.com/
【在 s********k 的大作中提到】 : 语言无所谓,erlang,scala,haskell,Closure 都行啊,主要介绍思想的,求推荐
|
l*********s 发帖数: 5409 | 5 learn yourself haskell for great good, |
s***o 发帖数: 2191 | 6 yep if just for pure learning purpose, haskell is your best bet
【在 l*********s 的大作中提到】 : learn yourself haskell for great good,
|
p***o 发帖数: 1252 | 7 这本书挺好, 可惜里面好多代码从去年春天Haskell加了AMP以后就没法用了。
【在 l*********s 的大作中提到】 : learn yourself haskell for great good,
|
p***o 发帖数: 1252 | 8 等你学明白了,人家把标准库一改,你还得再学一遍。
【在 s***o 的大作中提到】 : yep if just for pure learning purpose, haskell is your best bet
|
s***o 发帖数: 2191 | 9 那不正好嘛,活到老学到老,反正也不用
【在 p***o 的大作中提到】 : 等你学明白了,人家把标准库一改,你还得再学一遍。
|
H****S 发帖数: 1359 | 10 Functional programming in Scala
Haskell programming from first principles
【在 s********k 的大作中提到】 : 语言无所谓,erlang,scala,haskell,Closure 都行啊,主要介绍思想的,求推荐
|
|
|
w***g 发帖数: 5958 | 11 Programming in Scala, Martin Odersky
非要学FP, scala学了或许还有点用。Haskell自然是最好的,就是没啥工作机会,
而且曲线太陡,不破monad transformer,写不了实际有用的程序。
【在 s********k 的大作中提到】 : 语言无所谓,erlang,scala,haskell,Closure 都行啊,主要介绍思想的,求推荐
|
l******t 发帖数: 55733 | 12 这个不错。各方面结合的比较好
【在 w***g 的大作中提到】 : Programming in Scala, Martin Odersky : 非要学FP, scala学了或许还有点用。Haskell自然是最好的,就是没啥工作机会, : 而且曲线太陡,不破monad transformer,写不了实际有用的程序。
|
r**m 发帖数: 1825 | 13 Martin Odersky 在coursera上的那门课很好,
https://www.coursera.org/course/progfun
去google视频下载
【在 s********k 的大作中提到】 : 语言无所谓,erlang,scala,haskell,Closure 都行啊,主要介绍思想的,求推荐
|
n*w 发帖数: 3393 | 14 觉得找个语言能用在做的项目最好。学习效率最高。
【在 s********k 的大作中提到】 : 语言无所谓,erlang,scala,haskell,Closure 都行啊,主要介绍思想的,求推荐
|
h*i 发帖数: 3446 | 15 这几种FP语言其实不太一样,思想很不同。Erlang是actor model; Haskell注重type,
一堆范畴论monad啥的;Scala是一锅粥,往OOP上加FP;Clojure是Lisp,讲究一切都
是data,但也有些OOP的特性。
我觉得现在没有什么书能涵盖这些不同的FP思想,根据自己需求选一个学吧。
【在 s********k 的大作中提到】 : 语言无所谓,erlang,scala,haskell,Closure 都行啊,主要介绍思想的,求推荐
|
h*i 发帖数: 3446 | 16 对,边干边学最有效了。
【在 n*w 的大作中提到】 : 觉得找个语言能用在做的项目最好。学习效率最高。
|
s********k 发帖数: 6180 | 17 什么样的项目用functional能比普通python,java之类性能或者工程复杂度提供非常多?
【在 h*i 的大作中提到】 : 对,边干边学最有效了。
|
h*i 发帖数: 3446 | 18 一般来说,FP适合情况复杂需要更灵活更高的抽象的用例,而不是只是追求速度的用例
。这其实就是目前大部分应用程序,比如一个复杂的网站。其主要好处是提高生产力。
比如你有一个很复杂的应用,需要整合各种各样的数据,作复杂的操作,你只有一个很
小的团队,工期很紧。这种情况阿三经理会忽悠上级,狂招一堆阿三,同时把工期拖长
来处理。你不是阿三,没有那个本事,怎么办?是熬夜写Java, Python呢,还是早九晚
五写Clojure? 作为一个53俱乐部的成员,我选择早九晚五写Clojure.
写波音737 MAX的飞行诊断系统的团队作了同样的选择,六个程序员,用了两年,一万
六千行Clojure
代码搞定了这个机载诊断系统,细节见 https://www.youtube.com/watch?v=
iUC7noGU1mQ
多?
【在 s********k 的大作中提到】 : 什么样的项目用functional能比普通python,java之类性能或者工程复杂度提供非常多?
|
c*********e 发帖数: 16335 | 19 scala是java的scripting版本,和fp有啥关系?
【在 w***g 的大作中提到】 : Programming in Scala, Martin Odersky : 非要学FP, scala学了或许还有点用。Haskell自然是最好的,就是没啥工作机会, : 而且曲线太陡,不破monad transformer,写不了实际有用的程序。
|
n******7 发帖数: 12463 | 20 一年多前摸过clojure,觉得很有意思
由于你不断的鼓吹
对clojure更感兴趣了
可惜对找工作用处不大
实际工作中间用什么也不是自己可以决定的
只有你这种自己作主的才能爽
【在 h*i 的大作中提到】 : 一般来说,FP适合情况复杂需要更灵活更高的抽象的用例,而不是只是追求速度的用例 : 。这其实就是目前大部分应用程序,比如一个复杂的网站。其主要好处是提高生产力。 : 比如你有一个很复杂的应用,需要整合各种各样的数据,作复杂的操作,你只有一个很 : 小的团队,工期很紧。这种情况阿三经理会忽悠上级,狂招一堆阿三,同时把工期拖长 : 来处理。你不是阿三,没有那个本事,怎么办?是熬夜写Java, Python呢,还是早九晚 : 五写Clojure? 作为一个53俱乐部的成员,我选择早九晚五写Clojure. : 写波音737 MAX的飞行诊断系统的团队作了同样的选择,六个程序员,用了两年,一万 : 六千行Clojure : 代码搞定了这个机载诊断系统,细节见 https://www.youtube.com/watch?v= : iUC7noGU1mQ
|
|
|
c*********e 发帖数: 16335 | 21 en,同意。公司用什么,你就得用什么,公司不用java,你就是java高手也没用。
【在 n******7 的大作中提到】 : 一年多前摸过clojure,觉得很有意思 : 由于你不断的鼓吹 : 对clojure更感兴趣了 : 可惜对找工作用处不大 : 实际工作中间用什么也不是自己可以决定的 : 只有你这种自己作主的才能爽
|
w***g 发帖数: 5958 | 22 专家系统用lisp写是有传统的。
【在 h*i 的大作中提到】 : 一般来说,FP适合情况复杂需要更灵活更高的抽象的用例,而不是只是追求速度的用例 : 。这其实就是目前大部分应用程序,比如一个复杂的网站。其主要好处是提高生产力。 : 比如你有一个很复杂的应用,需要整合各种各样的数据,作复杂的操作,你只有一个很 : 小的团队,工期很紧。这种情况阿三经理会忽悠上级,狂招一堆阿三,同时把工期拖长 : 来处理。你不是阿三,没有那个本事,怎么办?是熬夜写Java, Python呢,还是早九晚 : 五写Clojure? 作为一个53俱乐部的成员,我选择早九晚五写Clojure. : 写波音737 MAX的飞行诊断系统的团队作了同样的选择,六个程序员,用了两年,一万 : 六千行Clojure : 代码搞定了这个机载诊断系统,细节见 https://www.youtube.com/watch?v= : iUC7noGU1mQ
|
q*c 发帖数: 9453 | 23 为啥现实里面用 fp 的都是大量降低生产力呢?
这个现实和理论不符合的时候,我们要如何看待现实,才能让它和理论符合呢?
【在 h*i 的大作中提到】 : 一般来说,FP适合情况复杂需要更灵活更高的抽象的用例,而不是只是追求速度的用例 : 。这其实就是目前大部分应用程序,比如一个复杂的网站。其主要好处是提高生产力。 : 比如你有一个很复杂的应用,需要整合各种各样的数据,作复杂的操作,你只有一个很 : 小的团队,工期很紧。这种情况阿三经理会忽悠上级,狂招一堆阿三,同时把工期拖长 : 来处理。你不是阿三,没有那个本事,怎么办?是熬夜写Java, Python呢,还是早九晚 : 五写Clojure? 作为一个53俱乐部的成员,我选择早九晚五写Clojure. : 写波音737 MAX的飞行诊断系统的团队作了同样的选择,六个程序员,用了两年,一万 : 六千行Clojure : 代码搞定了这个机载诊断系统,细节见 https://www.youtube.com/watch?v= : iUC7noGU1mQ
|
s********k 发帖数: 6180 | 24 很酷啊,为啥functional特别适合处理复杂和更灵活更高抽象的问题,普通OOP面对这
样问题的局限在于?
【在 h*i 的大作中提到】 : 一般来说,FP适合情况复杂需要更灵活更高的抽象的用例,而不是只是追求速度的用例 : 。这其实就是目前大部分应用程序,比如一个复杂的网站。其主要好处是提高生产力。 : 比如你有一个很复杂的应用,需要整合各种各样的数据,作复杂的操作,你只有一个很 : 小的团队,工期很紧。这种情况阿三经理会忽悠上级,狂招一堆阿三,同时把工期拖长 : 来处理。你不是阿三,没有那个本事,怎么办?是熬夜写Java, Python呢,还是早九晚 : 五写Clojure? 作为一个53俱乐部的成员,我选择早九晚五写Clojure. : 写波音737 MAX的飞行诊断系统的团队作了同样的选择,六个程序员,用了两年,一万 : 六千行Clojure : 代码搞定了这个机载诊断系统,细节见 https://www.youtube.com/watch?v= : iUC7noGU1mQ
|
h*i 发帖数: 3446 | 25 问题是我都在说事实,你全在说理论。
你起码要举出例子来,不要动不动就一概而论,动不动就上升到了理论高度。你这不像
一个关心具体事物的工程师,更像一个关心思想斗争的红卫兵。你认真想想,是不是入
错行了?
【在 q*c 的大作中提到】 : 为啥现实里面用 fp 的都是大量降低生产力呢? : 这个现实和理论不符合的时候,我们要如何看待现实,才能让它和理论符合呢?
|
h*i 发帖数: 3446 | 26 个人觉得,原因是这样:普通编程还是基于mutate state in place来工作的。说来说
去这比较底层,是由目前我们用的机器的体系机构决定的,而不是由人的思维和我们要
解决的问题的本质来决定的。当你需要解决的问题比较复杂,就需要更复杂的
primitive,就这么简单。传统语言一切问题都用三个primitive来解决:赋值,条件,
循环,当然什么都能干,但效率就有局限,所以需要更高层的抽象概念。所以我们有了
OOP。
但OOP的问题,在于其提供的高层抽像概念,对象,对象继承等等,其实不够普适。它
们真正适合的范围其实有限,但人们削足适履,非要一切都OOP,结果就搞出各种复杂
的design pattern,framework, architecture之类的,带来很多不是问题本身蕴含的
的复杂性。传统OOP抽象的一个重要的缺陷,就是action不是第一性的,这就是所谓的
“kingdom of nouns"的问题。所谓OOP design pattern,其实大多是对这个问题的
workaround。所以现在Java也要加lambda啥的,也要functional。为什么,因为
functional把action放在第一位,适用范围更广。
我个人觉得,functional只是目前编程发展的一个阶段。从大的方向看,编程发展总是
越来越远离机器特征,越来越高层和自动化。下一步是什么,我不知道。但肯定也不会
是啥新东西。
Computer science的特征在于,它是一个science of artificial,都是人想出来的东
西,所以出新东西很难,你能想到的前人都想过了。新的突破往往不在于新思想,而在
于新的硬件,新的需求,更好的条件,等等。比如现在deep learning啥的,其实没啥
新思想,就是现在GPU厉害了,数据多了。
【在 s********k 的大作中提到】 : 很酷啊,为啥functional特别适合处理复杂和更灵活更高抽象的问题,普通OOP面对这 : 样问题的局限在于?
|
l******t 发帖数: 55733 | 27 屁。你说的是groovy
【在 c*********e 的大作中提到】 : scala是java的scripting版本,和fp有啥关系?
|
l******t 发帖数: 55733 | 28 你们那的人是有多笨
【在 q*c 的大作中提到】 : 为啥现实里面用 fp 的都是大量降低生产力呢? : 这个现实和理论不符合的时候,我们要如何看待现实,才能让它和理论符合呢?
|
p*****2 发帖数: 21240 | 29 oop的各种理论和pattern相互冲突 很烦人
让oop承认函数的存在怎么那么难呢 只要承认函数 很多问题就迎刃而解
【在 h*i 的大作中提到】 : 个人觉得,原因是这样:普通编程还是基于mutate state in place来工作的。说来说 : 去这比较底层,是由目前我们用的机器的体系机构决定的,而不是由人的思维和我们要 : 解决的问题的本质来决定的。当你需要解决的问题比较复杂,就需要更复杂的 : primitive,就这么简单。传统语言一切问题都用三个primitive来解决:赋值,条件, : 循环,当然什么都能干,但效率就有局限,所以需要更高层的抽象概念。所以我们有了 : OOP。 : 但OOP的问题,在于其提供的高层抽像概念,对象,对象继承等等,其实不够普适。它 : 们真正适合的范围其实有限,但人们削足适履,非要一切都OOP,结果就搞出各种复杂 : 的design pattern,framework, architecture之类的,带来很多不是问题本身蕴含的 : 的复杂性。传统OOP抽象的一个重要的缺陷,就是action不是第一性的,这就是所谓的
|
s********k 发帖数: 6180 | 30 immutable好处确实有,但是是不是需要的存储空间会增大很多,因为任何一个变量的
值都会被存储下来?另外functional的这个function怎么理解才是最合适的,我看到有
些说把函数当做变量参数传递,这个C里面也大量用啊
【在 h*i 的大作中提到】 : 个人觉得,原因是这样:普通编程还是基于mutate state in place来工作的。说来说 : 去这比较底层,是由目前我们用的机器的体系机构决定的,而不是由人的思维和我们要 : 解决的问题的本质来决定的。当你需要解决的问题比较复杂,就需要更复杂的 : primitive,就这么简单。传统语言一切问题都用三个primitive来解决:赋值,条件, : 循环,当然什么都能干,但效率就有局限,所以需要更高层的抽象概念。所以我们有了 : OOP。 : 但OOP的问题,在于其提供的高层抽像概念,对象,对象继承等等,其实不够普适。它 : 们真正适合的范围其实有限,但人们削足适履,非要一切都OOP,结果就搞出各种复杂 : 的design pattern,framework, architecture之类的,带来很多不是问题本身蕴含的 : 的复杂性。传统OOP抽象的一个重要的缺陷,就是action不是第一性的,这就是所谓的
|
|
|
l*********s 发帖数: 5409 | 31 That is a real concern, but you could count on language/compiler to improve
upon the situation.
Although you can pass function pointer in C, you cannot create functions
dynamically.
【在 s********k 的大作中提到】 : immutable好处确实有,但是是不是需要的存储空间会增大很多,因为任何一个变量的 : 值都会被存储下来?另外functional的这个function怎么理解才是最合适的,我看到有 : 些说把函数当做变量参数传递,这个C里面也大量用啊
|
s********k 发帖数: 6180 | 32 这个create functions dynamically能有例子举个看看?
improve
【在 l*********s 的大作中提到】 : That is a real concern, but you could count on language/compiler to improve : upon the situation. : Although you can pass function pointer in C, you cannot create functions : dynamically.
|
p*****2 发帖数: 21240 | 33 看看closure呀
【在 s********k 的大作中提到】 : 这个create functions dynamically能有例子举个看看? : : improve
|
s***o 发帖数: 2191 | 34 好久不见。你们tech stack选好了没有?go, node, vert.x, or something fancier?
【在 p*****2 的大作中提到】 : 看看closure呀
|
p*****2 发帖数: 21240 | 35
java + go
legacy的是node和python
【在 s***o 的大作中提到】 : 好久不见。你们tech stack选好了没有?go, node, vert.x, or something fancier?
|
h*i 发帖数: 3446 | 36 immutable是会有存储和运行时间上的overhead,但这些都会被硬件进步和优化技术解
决。研究各种优化技术是计算机科学应该搞的正事,也是计算机科学进步的动力。
目前来说,对绝大多数应用,现有的immutable data structure的效率足够用了。以
Clojure为例,我还从来没听说过有人抱怨过Clojure运行慢的(抱怨启动速度慢的很多
,那是Clojure编译器在JVM上实现的问题,在Javascript上就没有这么明显的问题)。
存储空间的话,我的经验是Clojure程序和一般的Java程序内存消耗差不多。其实如果
仔细研究一下immutable的工作原理,就会发现, 其实它并不会占用更多内存,因为用
不到的数据都会被垃圾回收,而用到的数据immutable和mutable没有太多区别。当然
immutable对垃圾回收器的压力要大些。Clojure有transducer这类技术,可以减少计算
中间结果数据的产生。
除了函数可以被传来传去,还有就是函数都是带closure的,我觉得这很重要。
【在 s********k 的大作中提到】 : immutable好处确实有,但是是不是需要的存储空间会增大很多,因为任何一个变量的 : 值都会被存储下来?另外functional的这个function怎么理解才是最合适的,我看到有 : 些说把函数当做变量参数传递,这个C里面也大量用啊
|
s***o 发帖数: 2191 | 37 there are lots of overlaps between these two. 这组合互补效应好像不那么明显
【在 p*****2 的大作中提到】 : : java + go : legacy的是node和python
|
p*****2 发帖数: 21240 | 38 一般用go
有个项目比较serious 用的java
跟个人喜好也有关系 我用了用go发现还不如java好用
【在 s***o 的大作中提到】 : there are lots of overlaps between these two. 这组合互补效应好像不那么明显
|
f*********g 发帖数: 25 | 39 Types and Programming Languages
有助于理解type和evaluation是怎么回事 |
n***p 发帖数: 110 | 40 不会增大很多,就像git track version change, 不需要用很大的空间,只需要keep
track change的部分。
【在 s********k 的大作中提到】 : immutable好处确实有,但是是不是需要的存储空间会增大很多,因为任何一个变量的 : 值都会被存储下来?另外functional的这个function怎么理解才是最合适的,我看到有 : 些说把函数当做变量参数传递,这个C里面也大量用啊
|