由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - FP 之我见 (长)
相关主题
scala和monad从今天开始起,学C++!
一直不习惯immutabilityscala写个loop老难了
functional programming why?criticism of Scala
vert.x平台上的新东西很让人兴奋阿大牛们比较下 Node, Go, Scala
怎么这里这么多人学python有因为Spark而学习Scala的吗?
Haskell很难学。。coursera 上scala的课上完了,作业也做完了。说说感想
functional programming?板上的高人们能给科普比较functional programming language么
有没有喜欢haskell的同学Clojure/West的会场几乎没有什么中国人
相关话题的讨论汇总
话题: fp话题: 变量话题: oop话题: java话题: int
1 (共1页)
c******o
发帖数: 1277
1
本版最近有很多关于FP的讨论, 我说说我的认识,抛砖引玉。
我其实是c -> c++ -> java线上来的,工作以后又学了ruby/php.javascript/python/
bash.
除了在学校里玩了一点点OCaml 以外,所有的FP都是在工作里学的,也是用在工作上的
,没啥学术的背景。
我对FP的知识主要启蒙于Functional Programming in Scala by Paul Chiusano & Rú
nar Bjarnason
http://www.manning.com/bjarnason/
Paul Chiusano & Rúnar Bjarnason是scalaz的主要作者之一,他们是同事,在S&P
Capital IQ Boston 工作,他们工作的production code确实是用scala FP 方式写的。
好了,那么什么事FP呢?很多复杂而矛盾的定义,我接受了Rúnar Bjarnason的定义,
简单,清晰,无歧义:
FP is programming with pure functions.
那么问题来了:
1. what is pure function?
2. why use pure function?
1. what is pure function?
pure function的定义也很简单,明确,无歧义:
a function is pure if calling it with referentially transparent arguments is
also referentially transparent
referentially transparent—in any program, the expression can be replaced by
its result without changing the meaning of the program
也就是说, 如果f(3) = 5 那么在任何有 f(3)的程序里,我可以把所有的的f(3)替换
成5而不改变程序的任何性质。
2. why use pure function?
根据定义,由于referentially transparent, 在理解,并且切实实行了FP的原则后,
FP 其实非常奇妙的容易理解,容易调试,有效率, 特别适用于并行和分布的应用,并
且易于维护。难点是在如何把这个理解实现下去。
实际的情况,我们很少能有pure function, logging/exception/latency/special
case/internal state都不是pure的。
那怎么办呢?
这时候,我们的ADT (algebraic data type)就上场了,这里面最有名的ADT就是monad
现在举一个例子: Try[A]
Try 可以是
Failure[A], wrap in a Throwable (就是exception了)
也可以是
Success[A}, wrap in a type A value.
以前我的余数函数
def mod: (Int, Int) => Int = (a: Int, n:Int) => a - (n * floor(a/n).toInt)
是会有exception的,怎么办?
scala> mod(99,10)
res2: Int = 9
scala> mod(99,0)
java.lang.ArithmeticException: / by zero
现在好了, 用 Try
scala> def mod: (Try[Int], Try[Int]) => Try[Int] = (a: Try[Int], n:Try[Int])
=>
| for {
| ra <- a
| rn <- n
| } yield (ra - (rn * floor(ra/rn).toInt))
scala> mod(Try(99), Try(10))
res10: scala.util.Try[Int] = Success(9)
scala> mod(Try(99), Try(0))
res11: scala.util.Try[Int] = Failure(java.lang.ArithmeticException: / by
zero)
这样子, 你分离了 pure 和 unpure, 你的逻辑: mod 函数是一个pure function了,
你不需要关心exception的问题,
你完全可以静态的分析你的程序,更好的理解它。
这只是一个初略地例子,你可以从上面所说的书里面学习。
一个特别的问题时, IO, 即使用ADT,也是很丑陋的,这是FP的一个特别的领域,现在
方兴未艾,那你用什么呢?
stream processing, 这其实是现在FP 解决real world IO的前沿和热点。
其实就是把实际的io模型为一个stream ADT, infinity(时间是无限的),lazy
loading (未来是不可见的)。这样能够很好的将IO放到pure FP的里面。
另外,我个人不赞成pure FP, 我觉得在工作中根据需要可以FP, 可以imprative.
z****e
发帖数: 54598
2
时间久了你会发现这个帖子其实说得很对
immutable非常蛋疼,你一想变量就出问题
oop直接映射到代码中去,fp就不让你这么做,就各种纠结
用还是不用呢?scala允许你用,但是那样就不纯粹了呀
clj压根不让你用,所以游戏,simulation这种领域都不适合fp
oop非常合适,reactive,比如event driven这种就适合fp
发信人: liliput (粒粒菩提之军委主席), 信区: Programming
标 题: Re: scala很牛啊
发信站: BBS 未名空间站 (Tue Jun 17 00:41:59 2014, 美东)
不需要懂。这玩儿没实战意义。当年老师天天说immutable,monad,stream怎么怎么好
,几十年下来,原来预测的医药和航天、精密仪器等有可能火的行业都没火。
我粗鄙的认为,搞懂function as a first class citizens,懂map, filter, fold足
够了。industry就是industry,不是academia,没必要死楸immutable、monad。
c******o
发帖数: 1277
3
实践出真知,你这说法绝对是没实践过FP 在production. 也没有用FP思维编程过。
实际是最后的问题都是process level,detail level的,用immutable,FP绝对没问题
,当然不用所有地方都用。
很多时候,FP优势是很明显可见的。FP本身没有任何问题。
h*i
发帖数: 3446
4
程序语言发展的大趋势就是“这不让用那不用“。
machine languages -> 干啥都行(其实也不行,也有不同的mode)
structural languages -> 不准用goto,必须这个那个
VM languages -> 不准自己乱搞内存,必须这个那个
FP languages -> 不准自己乱赋值,必须这个那个
这不是个人意志能左右的,因为计算机语言也是人制造,人决定用啥的,是个social
construct,其发展规律其实是属于社会科学研究的范畴。哈哈。

【在 z****e 的大作中提到】
: 时间久了你会发现这个帖子其实说得很对
: immutable非常蛋疼,你一想变量就出问题
: oop直接映射到代码中去,fp就不让你这么做,就各种纠结
: 用还是不用呢?scala允许你用,但是那样就不纯粹了呀
: clj压根不让你用,所以游戏,simulation这种领域都不适合fp
: oop非常合适,reactive,比如event driven这种就适合fp
: 发信人: liliput (粒粒菩提之军委主席), 信区: Programming
: 标 题: Re: scala很牛啊
: 发信站: BBS 未名空间站 (Tue Jun 17 00:41:59 2014, 美东)
: 不需要懂。这玩儿没实战意义。当年老师天天说immutable,monad,stream怎么怎么好

z****e
发帖数: 54598
5
还行
prod中强行要求pure fp的我还没遇到过说好话的
你算是唯一一个吧
太学院派的就不考虑了
思维的训练本身就有些扯
招来的人哪有办法训练
等训练完半年都过去了
公司也不是大学,大学就负责训练,公司要出利润撒
没问题只能说用得好没问题,问题在于人不是完美的动物

【在 c******o 的大作中提到】
: 实践出真知,你这说法绝对是没实践过FP 在production. 也没有用FP思维编程过。
: 实际是最后的问题都是process level,detail level的,用immutable,FP绝对没问题
: ,当然不用所有地方都用。
: 很多时候,FP优势是很明显可见的。FP本身没有任何问题。

z****e
发帖数: 54598
6
就是dsl啊
scala用来造这个很合适,你们应该考虑自己发明dsl
就像r一样

【在 h*i 的大作中提到】
: 程序语言发展的大趋势就是“这不让用那不用“。
: machine languages -> 干啥都行(其实也不行,也有不同的mode)
: structural languages -> 不准用goto,必须这个那个
: VM languages -> 不准自己乱搞内存,必须这个那个
: FP languages -> 不准自己乱赋值,必须这个那个
: 这不是个人意志能左右的,因为计算机语言也是人制造,人决定用啥的,是个social
: construct,其发展规律其实是属于社会科学研究的范畴。哈哈。

z****e
发帖数: 54598
7
不让我用变量我接受不了啊
我写代码的乐趣就在于模拟现实
工作是另外一回事
oop显然最合适,fp的话你不让我用变量
我用information去搞,写代码就很快索然无味了
就跟解题一样,我当年就是数学系的逃兵
就是受不了数学的枯燥,可不想再被套进去
我人生很有乐趣的,兴趣爱好广泛
啥都知道一点,人生也多彩一点
不像某些呆瓜,233就挂了,这种活着有啥意思
是吧?

【在 h*i 的大作中提到】
: 程序语言发展的大趋势就是“这不让用那不用“。
: machine languages -> 干啥都行(其实也不行,也有不同的mode)
: structural languages -> 不准用goto,必须这个那个
: VM languages -> 不准自己乱搞内存,必须这个那个
: FP languages -> 不准自己乱赋值,必须这个那个
: 这不是个人意志能左右的,因为计算机语言也是人制造,人决定用啥的,是个social
: construct,其发展规律其实是属于社会科学研究的范畴。哈哈。

h*i
发帖数: 3446
8
我的主打语言是从Pascal -> C -> Java -> Clojure一路走过来的,我用Java的年头最
长。
总的说来,一旦过了FP一开始的那道坎,用FP编程和用IP编程其实区别真不大,高层的
思维是类似的,而底层都要干很多tedious shit,FP也没有什么magic的东东。
Clojure的好处,我个人觉得在于少一些worry。特别是程序大了之后,感觉改逻辑很容
易,一个个的函数而已,相互是没有关系的,不太怕搞出没想到的问题。
Java程序感觉更rigid,东西都是close-coupled,即使用了DI也改善不多,感觉改逻辑
很不容易,不可能只动很少的几个地方。

【在 c******o 的大作中提到】
: 实践出真知,你这说法绝对是没实践过FP 在production. 也没有用FP思维编程过。
: 实际是最后的问题都是process level,detail level的,用immutable,FP绝对没问题
: ,当然不用所有地方都用。
: 很多时候,FP优势是很明显可见的。FP本身没有任何问题。

H****S
发帖数: 1359
9
鲁纳说了越expressive的设计,背后机理越复杂。这儿大部分人都喜欢糙快猛,不会尿
这一壶的。
z****e
发帖数: 54598
10
你没用过rxjava和scala来点评这个是硬伤
来看其他人说的
http://www.ibm.com/developerworks/cn/views/java/libraryview.jsp

【在 h*i 的大作中提到】
: 我的主打语言是从Pascal -> C -> Java -> Clojure一路走过来的,我用Java的年头最
: 长。
: 总的说来,一旦过了FP一开始的那道坎,用FP编程和用IP编程其实区别真不大,高层的
: 思维是类似的,而底层都要干很多tedious shit,FP也没有什么magic的东东。
: Clojure的好处,我个人觉得在于少一些worry。特别是程序大了之后,感觉改逻辑很容
: 易,一个个的函数而已,相互是没有关系的,不太怕搞出没想到的问题。
: Java程序感觉更rigid,东西都是close-coupled,即使用了DI也改善不多,感觉改逻辑
: 很不容易,不可能只动很少的几个地方。

相关主题
functional programming?scala写个loop老难了
有没有喜欢haskell的同学criticism of Scala
从今天开始起,学C++!大牛们比较下 Node, Go, Scala
h*i
发帖数: 3446
11
咋说的?总结一下?

【在 z****e 的大作中提到】
: 你没用过rxjava和scala来点评这个是硬伤
: 来看其他人说的
: http://www.ibm.com/developerworks/cn/views/java/libraryview.jsp

z****e
发帖数: 54598
12
总结沙发就贴了呀
发信人: liliput (粒粒菩提之军委主席), 信区: Programming
标 题: Re: scala很牛啊
发信站: BBS 未名空间站 (Tue Jun 17 00:41:59 2014, 美东)
不需要懂。这玩儿没实战意义。当年老师天天说immutable,monad,stream怎么怎么好
,几十年下来,原来预测的医药和航天、精密仪器等有可能火的行业都没火。
我粗鄙的认为,搞懂function as a first class citizens,懂map, filter, fold足
够了。industry就是industry,不是academia,没必要死楸immutable、monad。

【在 h*i 的大作中提到】
: 咋说的?总结一下?
h*i
发帖数: 3446
13
真的强制性immutability的语言也就Haskell和Clojure,这些都不是有“好几十年”历
史的语言。将来如何还不知道。
这种限制人的东西如果不在语言层面强制执行,程序员自己不会主动去执行的,谁都想
用又容易威力又大的东东,对不对?

【在 z****e 的大作中提到】
: 总结沙发就贴了呀
: 发信人: liliput (粒粒菩提之军委主席), 信区: Programming
: 标 题: Re: scala很牛啊
: 发信站: BBS 未名空间站 (Tue Jun 17 00:41:59 2014, 美东)
: 不需要懂。这玩儿没实战意义。当年老师天天说immutable,monad,stream怎么怎么好
: ,几十年下来,原来预测的医药和航天、精密仪器等有可能火的行业都没火。
: 我粗鄙的认为,搞懂function as a first class citizens,懂map, filter, fold足
: 够了。industry就是industry,不是academia,没必要死楸immutable、monad。

z****e
发帖数: 54598
14
那要看多顺着人思维了
小学二年级我们就学会了列方程解应用题
列方程显然更靠近人的思维,变量当然应该保留
我超喜欢列方程的,哪怕最简单的1+x=2我都会列出来
因为简单
虽然我也承认oop有些地方不足
但是你说要把oop整个枪毙掉,从头来过
那这也有些问题吧?正常人应该都能看出这种做法有些问题
所以我觉得rxjava才是发展方向,至于什么immutable
水至清则无鱼,scala又太混乱,什么都来,也不行
rxjava作为扩展,跟java8搭配得很好呀
vert.x什么马上就能顶上,哦也
用了再说,没用过,没实践过,都是只说好的,不说坏的
说node的时候,有人注意到30层的callback hell吗?
现在说fp其实也是一样,层层嵌套是个大问题
我用rxjava的经验看,效果良好,既没有丢掉以前的经验
又做了效率提升以及适当的思维训练,大家都happy啊

【在 h*i 的大作中提到】
: 真的强制性immutability的语言也就Haskell和Clojure,这些都不是有“好几十年”历
: 史的语言。将来如何还不知道。
: 这种限制人的东西如果不在语言层面强制执行,程序员自己不会主动去执行的,谁都想
: 用又容易威力又大的东东,对不对?

H****S
发帖数: 1359
15
rxjava不如Scalaz stream。后者同时支持pull和push based streaming。

【在 z****e 的大作中提到】
: 那要看多顺着人思维了
: 小学二年级我们就学会了列方程解应用题
: 列方程显然更靠近人的思维,变量当然应该保留
: 我超喜欢列方程的,哪怕最简单的1+x=2我都会列出来
: 因为简单
: 虽然我也承认oop有些地方不足
: 但是你说要把oop整个枪毙掉,从头来过
: 那这也有些问题吧?正常人应该都能看出这种做法有些问题
: 所以我觉得rxjava才是发展方向,至于什么immutable
: 水至清则无鱼,scala又太混乱,什么都来,也不行

z****e
发帖数: 54598
16
scala的超集里面东西太多
导致互相冲突
我看个单词都要想半天是object还是func
是名词还是动词,效率不高呀
clojure太颠覆,scala太庞杂,折中下,rxjava刚刚好

【在 H****S 的大作中提到】
: rxjava不如Scalaz stream。后者同时支持pull和push based streaming。
d*******r
发帖数: 3299
17
干货不少,mark了
H****S
发帖数: 1359
18
rxjava要应付back pressure。上大型系统要写的善后程序太多,不值得。

【在 z****e 的大作中提到】
: scala的超集里面东西太多
: 导致互相冲突
: 我看个单词都要想半天是object还是func
: 是名词还是动词,效率不高呀
: clojure太颠覆,scala太庞杂,折中下,rxjava刚刚好

H****S
发帖数: 1359
19
补充一点:作者之一鲁纳的talk几乎个个经典,想学Scala和fp的多关注一下他。

python/

【在 c******o 的大作中提到】
: 本版最近有很多关于FP的讨论, 我说说我的认识,抛砖引玉。
: 我其实是c -> c++ -> java线上来的,工作以后又学了ruby/php.javascript/python/
: bash.
: 除了在学校里玩了一点点OCaml 以外,所有的FP都是在工作里学的,也是用在工作上的
: ,没啥学术的背景。
: 我对FP的知识主要启蒙于Functional Programming in Scala by Paul Chiusano & Rú
: nar Bjarnason
: http://www.manning.com/bjarnason/
: Paul Chiusano & Rúnar Bjarnason是scalaz的主要作者之一,他们是同事,在S&P
: Capital IQ Boston 工作,他们工作的production code确实是用scala FP 方式写的。

z****e
发帖数: 54598
20
一点点了,try catch过来的话这些比较容易习惯
fp的喜欢无副作用,但是颠覆性太强,思考起来颇为不易
所以虽然辛苦点,也将就吧,back pressure以后会有办法处理滴
现在刚出来没多久,让scala先实践
push/pull stream要做也不难,表急,给他们时间

【在 H****S 的大作中提到】
: rxjava要应付back pressure。上大型系统要写的善后程序太多,不值得。
相关主题
有因为Spark而学习Scala的吗?Clojure/West的会场几乎没有什么中国人
coursera 上scala的课上完了,作业也做完了。说说感想这年头有哪几个公司是用函数式编程的呢?
板上的高人们能给科普比较functional programming language么关于clojure
H****S
发帖数: 1359
21
加pull based streaming也许可能。但只要rxjava还抱着java做main language不换,
boilerplate多的会让你想把电脑吃掉。

【在 z****e 的大作中提到】
: 一点点了,try catch过来的话这些比较容易习惯
: fp的喜欢无副作用,但是颠覆性太强,思考起来颇为不易
: 所以虽然辛苦点,也将就吧,back pressure以后会有办法处理滴
: 现在刚出来没多久,让scala先实践
: push/pull stream要做也不难,表急,给他们时间

z****e
发帖数: 54598
22
rxjava不早就以jvm为目标平台而非java语言本身么?

【在 H****S 的大作中提到】
: 加pull based streaming也许可能。但只要rxjava还抱着java做main language不换,
: boilerplate多的会让你想把电脑吃掉。

z****e
发帖数: 54598
23
还有
对付boilerplate code,我们又可以从ide中寻求帮助
你看,ide是多好的一个神器啊
一个template其实就解决了

【在 H****S 的大作中提到】
: 加pull based streaming也许可能。但只要rxjava还抱着java做main language不换,
: boilerplate多的会让你想把电脑吃掉。

H****S
发帖数: 1359
24
java是implementation,其他的只是包了一层而已。

【在 z****e 的大作中提到】
: rxjava不早就以jvm为目标平台而非java语言本身么?
z****e
发帖数: 54598
25
你不看不写源代码,你管它

【在 H****S 的大作中提到】
: java是implementation,其他的只是包了一层而已。
h*i
发帖数: 3446
26
对一般人,变量是非常的不直观的,奇怪的东西。从个人来说,我记得我小学学变量就
觉得很鸡巴奇怪,我妈教高中数学的,还专门辅导了我一下,我才明白变量的问题;上
大学学编程一开始也是不明白变量,学了微机原理才算真搞明白了。我IQ140的。可见
这玩意不是每个人直觉就有的东东。因为在物理世界里,没有变量这个玩意。

【在 z****e 的大作中提到】
: 那要看多顺着人思维了
: 小学二年级我们就学会了列方程解应用题
: 列方程显然更靠近人的思维,变量当然应该保留
: 我超喜欢列方程的,哪怕最简单的1+x=2我都会列出来
: 因为简单
: 虽然我也承认oop有些地方不足
: 但是你说要把oop整个枪毙掉,从头来过
: 那这也有些问题吧?正常人应该都能看出这种做法有些问题
: 所以我觉得rxjava才是发展方向,至于什么immutable
: 水至清则无鱼,scala又太混乱,什么都来,也不行

z****e
发帖数: 54598
27
物理没有变量但是有对象,到处都是对象
数学很依赖变量以构建等式,函数几乎带着变量出现
你咋办捏?
fp对于数学家来说都没有太大吸引力,真滴

【在 h*i 的大作中提到】
: 对一般人,变量是非常的不直观的,奇怪的东西。从个人来说,我记得我小学学变量就
: 觉得很鸡巴奇怪,我妈教高中数学的,还专门辅导了我一下,我才明白变量的问题;上
: 大学学编程一开始也是不明白变量,学了微机原理才算真搞明白了。我IQ140的。可见
: 这玩意不是每个人直觉就有的东东。因为在物理世界里,没有变量这个玩意。

z****e
发帖数: 54598
28
你这里面定义的iq是变量不?

【在 h*i 的大作中提到】
: 对一般人,变量是非常的不直观的,奇怪的东西。从个人来说,我记得我小学学变量就
: 觉得很鸡巴奇怪,我妈教高中数学的,还专门辅导了我一下,我才明白变量的问题;上
: 大学学编程一开始也是不明白变量,学了微机原理才算真搞明白了。我IQ140的。可见
: 这玩意不是每个人直觉就有的东东。因为在物理世界里,没有变量这个玩意。

H****S
发帖数: 1359
29
我用一个库之前,必然要读源代码,否则出了事都不知道是怎么挂掉的。

【在 z****e 的大作中提到】
: 你不看不写源代码,你管它
z****e
发帖数: 54598
30
你真闲,我一般都不看

【在 H****S 的大作中提到】
: 我用一个库之前,必然要读源代码,否则出了事都不知道是怎么挂掉的。
相关主题
clojure这语言真不错一直不习惯immutability
非常喜欢Clojurefunctional programming why?
scala和monadvert.x平台上的新东西很让人兴奋阿
h*i
发帖数: 3446
31
对啊,物理世界就是没有变量的,所以对大多数人来说,变量是很不直观的。只有数学
上用得很多,没有多少人觉得数学很直观的。我们这些人都是biased,不知道一般人觉
得难的地方在哪里。再比如说教一般人编程是很难的,我教过,最大的问题, 就是大
多数人在学for loop的时候就被挡住了,搞不懂那个loop变量,不会用for loop来表达
问题,这我很有经验的。
所以没有变量的语言对一般人来说不是问题。

【在 z****e 的大作中提到】
: 物理没有变量但是有对象,到处都是对象
: 数学很依赖变量以构建等式,函数几乎带着变量出现
: 你咋办捏?
: fp对于数学家来说都没有太大吸引力,真滴

z****e
发帖数: 54598
32
有对象
你用对象来理解
变量是数学
但是小学二年级的数学一般人都能接受
如果小学二年级的数学搞不定
那说明九年义务教育没有完成
赶紧回炉重造

【在 h*i 的大作中提到】
: 对啊,物理世界就是没有变量的,所以对大多数人来说,变量是很不直观的。只有数学
: 上用得很多,没有多少人觉得数学很直观的。我们这些人都是biased,不知道一般人觉
: 得难的地方在哪里。再比如说教一般人编程是很难的,我教过,最大的问题, 就是大
: 多数人在学for loop的时候就被挡住了,搞不懂那个loop变量,不会用for loop来表达
: 问题,这我很有经验的。
: 所以没有变量的语言对一般人来说不是问题。

h*i
发帖数: 3446
33
人可以理解property,但不能直观的理解变量,因为在现实生活中,property总是依附
于object的。所以有人觉得OOP容易让人学,因为总有object.
而在数学和程序语言里面,变量是孤立存在的,不依存于可见的object, 所以非常的让
人费解。
所以一个人的IQ是这个人的property,很好理解,人人都懂。

【在 z****e 的大作中提到】
: 你这里面定义的iq是变量不?
h*i
发帖数: 3446
34
绝大部分美国人都是这样的。

【在 z****e 的大作中提到】
: 有对象
: 你用对象来理解
: 变量是数学
: 但是小学二年级的数学一般人都能接受
: 如果小学二年级的数学搞不定
: 那说明九年义务教育没有完成
: 赶紧回炉重造

z****e
发帖数: 54598
35
没事,oop里面变量就是object
你想成是你原文中的iq就好了
iq能定义得出来,变量肯定搞得定,我相信你

【在 h*i 的大作中提到】
: 人可以理解property,但不能直观的理解变量,因为在现实生活中,property总是依附
: 于object的。所以有人觉得OOP容易让人学,因为总有object.
: 而在数学和程序语言里面,变量是孤立存在的,不依存于可见的object, 所以非常的让
: 人费解。
: 所以一个人的IQ是这个人的property,很好理解,人人都懂。

z****e
发帖数: 54598
36
绝大多数人并不适合做程序员

【在 h*i 的大作中提到】
: 绝大部分美国人都是这样的。
h*i
发帖数: 3446
37
程序员只会更多,啥样的煞笔都会来作程序猿,所以傻瓜型语言会胜利,这是不以人的
意志为转移的。

【在 z****e 的大作中提到】
: 绝大多数人并不适合做程序员
z****e
发帖数: 54598
38
是吗?也许总量会上升
但是对于数学要求会越来越高
变量都理解不了的来搞,应该无法胜任
不过人类总是会进化的嘛,总体是越来越聪明的
变量越来越容易理解是大势所趋

【在 h*i 的大作中提到】
: 程序员只会更多,啥样的煞笔都会来作程序猿,所以傻瓜型语言会胜利,这是不以人的
: 意志为转移的。

h*i
发帖数: 3446
39
呵呵呵。好吧。希望是美好的,现实是残酷的。

【在 z****e 的大作中提到】
: 是吗?也许总量会上升
: 但是对于数学要求会越来越高
: 变量都理解不了的来搞,应该无法胜任
: 不过人类总是会进化的嘛,总体是越来越聪明的
: 变量越来越容易理解是大势所趋

T*******x
发帖数: 8565
40
那不错。

【在 h*i 的大作中提到】
: 我的主打语言是从Pascal -> C -> Java -> Clojure一路走过来的,我用Java的年头最
: 长。
: 总的说来,一旦过了FP一开始的那道坎,用FP编程和用IP编程其实区别真不大,高层的
: 思维是类似的,而底层都要干很多tedious shit,FP也没有什么magic的东东。
: Clojure的好处,我个人觉得在于少一些worry。特别是程序大了之后,感觉改逻辑很容
: 易,一个个的函数而已,相互是没有关系的,不太怕搞出没想到的问题。
: Java程序感觉更rigid,东西都是close-coupled,即使用了DI也改善不多,感觉改逻辑
: 很不容易,不可能只动很少的几个地方。

相关主题
怎么这里这么多人学python有没有喜欢haskell的同学
Haskell很难学。。从今天开始起,学C++!
functional programming?scala写个loop老难了
q*c
发帖数: 9453
41
你知道一般人 iq 多少?
连这个都不理解,别的都是无本之木

【在 h*i 的大作中提到】
: 对一般人,变量是非常的不直观的,奇怪的东西。从个人来说,我记得我小学学变量就
: 觉得很鸡巴奇怪,我妈教高中数学的,还专门辅导了我一下,我才明白变量的问题;上
: 大学学编程一开始也是不明白变量,学了微机原理才算真搞明白了。我IQ140的。可见
: 这玩意不是每个人直觉就有的东东。因为在物理世界里,没有变量这个玩意。

q*c
发帖数: 9453
42
对象的属性全是变量。
对象 + 变量 = 客观世界

【在 z****e 的大作中提到】
: 物理没有变量但是有对象,到处都是对象
: 数学很依赖变量以构建等式,函数几乎带着变量出现
: 你咋办捏?
: fp对于数学家来说都没有太大吸引力,真滴

q*c
发帖数: 9453
43
这 iq 显然有问题。

【在 h*i 的大作中提到】
: 对啊,物理世界就是没有变量的,所以对大多数人来说,变量是很不直观的。只有数学
: 上用得很多,没有多少人觉得数学很直观的。我们这些人都是biased,不知道一般人觉
: 得难的地方在哪里。再比如说教一般人编程是很难的,我教过,最大的问题, 就是大
: 多数人在学for loop的时候就被挡住了,搞不懂那个loop变量,不会用for loop来表达
: 问题,这我很有经验的。
: 所以没有变量的语言对一般人来说不是问题。

q*c
发帖数: 9453
44
所以 java 里面就没有单独的变量,全是属性变量。
属性变量也是变量,只是加个 name space 而已

【在 h*i 的大作中提到】
: 人可以理解property,但不能直观的理解变量,因为在现实生活中,property总是依附
: 于object的。所以有人觉得OOP容易让人学,因为总有object.
: 而在数学和程序语言里面,变量是孤立存在的,不依存于可见的object, 所以非常的让
: 人费解。
: 所以一个人的IQ是这个人的property,很好理解,人人都懂。

h*i
发帖数: 3446
45
IQ符合normal distribution (by design), mean=100,std=15. 也就是说IQ130就是2
个标准差(95%), IQ145就是3个标准差(99.7%)。
大部分上了大学的人IQ应该在110以上,这些人应该都能programing, 如果不能,只能
是计算机语言或者教育出了问题。

【在 q*c 的大作中提到】
: 你知道一般人 iq 多少?
: 连这个都不理解,别的都是无本之木

h*i
发帖数: 3446
46
you are proving my point.

【在 q*c 的大作中提到】
: 所以 java 里面就没有单独的变量,全是属性变量。
: 属性变量也是变量,只是加个 name space 而已

h*i
发帖数: 3446
47
I am sure it's not an IQ problem. These people include those who got
Stanford' law degree. They had real trouble understanding programming.

【在 q*c 的大作中提到】
: 这 iq 显然有问题。
z****e
发帖数: 54598
48
mean =
std =
你变量定义得很好,操作得也很好,别人也都看得懂
来,用fp表达一下这两个概念该怎么写?

2

【在 h*i 的大作中提到】
: IQ符合normal distribution (by design), mean=100,std=15. 也就是说IQ130就是2
: 个标准差(95%), IQ145就是3个标准差(99.7%)。
: 大部分上了大学的人IQ应该在110以上,这些人应该都能programing, 如果不能,只能
: 是计算机语言或者教育出了问题。

z****e
发帖数: 54598
49
law degree并不代表iq高
倒是能说明一定的eq
一路不学数学,是完全可以进law school的
如果是md搞不明白,我就信你说的
还有可能是你的表达出了问题,解释不清
for loop里面的变量直接映射成计数器,我当初就这么理解的
说到这里觉得你说物理现实中没有变量吗?
好像也不对吧,虽然我高等物理没怎么学过,属于民科水平
但是感觉过去,物理现实中是不是有变量好像也是很值得商榷的吧?
上帝是不是在掷骰子现在也没有一个公论,但是舆论好像倾向于在掷吧?
而且物理现实中到处是状态,有不同状态的同一个物体不就是变量?
你在解释你的答案时候大量使用了变量及其定义
而你却要告诉我变量的存在不是必需的?

【在 h*i 的大作中提到】
: I am sure it's not an IQ problem. These people include those who got
: Stanford' law degree. They had real trouble understanding programming.

h*i
发帖数: 3446
50
看来你的理解也是需要“计数器”的,和我当年也一样,是知道了计算机的原理才明白
的, 可见你也不是啥天然就懂变量的神人。
可惜一般人不明白计算机原理。

【在 z****e 的大作中提到】
: law degree并不代表iq高
: 倒是能说明一定的eq
: 一路不学数学,是完全可以进law school的
: 如果是md搞不明白,我就信你说的
: 还有可能是你的表达出了问题,解释不清
: for loop里面的变量直接映射成计数器,我当初就这么理解的
: 说到这里觉得你说物理现实中没有变量吗?
: 好像也不对吧,虽然我高等物理没怎么学过,属于民科水平
: 但是感觉过去,物理现实中是不是有变量好像也是很值得商榷的吧?
: 上帝是不是在掷骰子现在也没有一个公论,但是舆论好像倾向于在掷吧?

相关主题
criticism of Scalacoursera 上scala的课上完了,作业也做完了。说说感想
大牛们比较下 Node, Go, Scala板上的高人们能给科普比较functional programming language么
有因为Spark而学习Scala的吗?Clojure/West的会场几乎没有什么中国人
z****e
发帖数: 54598
51
映射成物理现实就不需要了
真正的变量像std这种才难
你连std都拿来说,没有变量你怎么办呀?

【在 h*i 的大作中提到】
: 看来你的理解也是需要“计数器”的,和我当年也一样,是知道了计算机的原理才明白
: 的, 可见你也不是啥天然就懂变量的神人。
: 可惜一般人不明白计算机原理。

h*i
发帖数: 3446
52
一般人也不懂统计呀。
我说std是告诉你我懂IQ咋回事,我可没说一般人懂,我知道你应该懂(?)。

【在 z****e 的大作中提到】
: 映射成物理现实就不需要了
: 真正的变量像std这种才难
: 你连std都拿来说,没有变量你怎么办呀?

h*i
发帖数: 3446
53
睡了。

【在 h*i 的大作中提到】
: 一般人也不懂统计呀。
: 我说std是告诉你我懂IQ咋回事,我可没说一般人懂,我知道你应该懂(?)。

z****e
发帖数: 54598
54
那离开了变量,怎么建模呢?

总不能让模型都留在脑子里吧?
要表达出来,写到纸面上传递给别人呀
std也许太高深,那一般人知道平均值这个概念不?
这也是一个典型的变量呀,别告诉我平均值是属性变量
你找几个美国人问问他懂不懂average啥意思
我赌10刀他懂

【在 h*i 的大作中提到】
: 一般人也不懂统计呀。
: 我说std是告诉你我懂IQ咋回事,我可没说一般人懂,我知道你应该懂(?)。

b*******g
发帖数: 603
55
老祖宗说,吃饭要吃七分饱。有七分饱就意味着有十分,有三分。多饱,这就是个变量
。老祖宗说这句话的时候,代数还不存在,不用说FP了。你非要说一般人不能理解变量
,显然是侮辱人民群众智商。人民群众对这个世界就是对象和变量建模的,从人和肚子
几分饱这个
及其原始的命题开始。
h****r
发帖数: 2056
56
I am wondering where were you teaching programming. if you were saying
majority people have difficulty to understand pointer at first, it sounds
reasonable, however for loop?

【在 h*i 的大作中提到】
: 对啊,物理世界就是没有变量的,所以对大多数人来说,变量是很不直观的。只有数学
: 上用得很多,没有多少人觉得数学很直观的。我们这些人都是biased,不知道一般人觉
: 得难的地方在哪里。再比如说教一般人编程是很难的,我教过,最大的问题, 就是大
: 多数人在学for loop的时候就被挡住了,搞不懂那个loop变量,不会用for loop来表达
: 问题,这我很有经验的。
: 所以没有变量的语言对一般人来说不是问题。

f******x
发帖数: 98
57
FP只是要求变量immutable,建模不需要mutable的变量:
三分饱的和七分饱的不是同一个人。你吃饭了,就产生一个新人。

【在 b*******g 的大作中提到】
: 老祖宗说,吃饭要吃七分饱。有七分饱就意味着有十分,有三分。多饱,这就是个变量
: 。老祖宗说这句话的时候,代数还不存在,不用说FP了。你非要说一般人不能理解变量
: ,显然是侮辱人民群众智商。人民群众对这个世界就是对象和变量建模的,从人和肚子
: 几分饱这个
: 及其原始的命题开始。

z****e
发帖数: 54598
58
自己感觉一下,这个逻辑是不是很不合理
吃饭前和吃饭后变成了两个人,如果这个人再出点汗,又多了一个人
上个洗手间,又换成另外一个人……
oop直接映射现实就好了,现实中怎么做,你就怎么做
fp为了不产生副作用,结果各种搞
到最后把自己都绑了进去,越看越觉得fp像唯心主义
oop才是客观的唯物主义,lambda是客观规律
比如力,但是客观规律的存在并不改变自身存在这一客观事实

【在 f******x 的大作中提到】
: FP只是要求变量immutable,建模不需要mutable的变量:
: 三分饱的和七分饱的不是同一个人。你吃饭了,就产生一个新人。

f******x
发帖数: 98
59
很合理呀,人不可能两次踏入一个河流,同理,人也没有时间上的延续性。这个view更
接近世界的本质。
x****u
发帖数: 44466
60
我早就说过,FP是理论的好东西但在现在体系下玩不了。
FP程序的最大问题是和冯诺依曼架构仅仅在资源趋向无限时等价,在残酷的真实世界里
面不可避免的要撞墙。

python/

【在 c******o 的大作中提到】
: 本版最近有很多关于FP的讨论, 我说说我的认识,抛砖引玉。
: 我其实是c -> c++ -> java线上来的,工作以后又学了ruby/php.javascript/python/
: bash.
: 除了在学校里玩了一点点OCaml 以外,所有的FP都是在工作里学的,也是用在工作上的
: ,没啥学术的背景。
: 我对FP的知识主要启蒙于Functional Programming in Scala by Paul Chiusano & Rú
: nar Bjarnason
: http://www.manning.com/bjarnason/
: Paul Chiusano & Rúnar Bjarnason是scalaz的主要作者之一,他们是同事,在S&P
: Capital IQ Boston 工作,他们工作的production code确实是用scala FP 方式写的。

相关主题
这年头有哪几个公司是用函数式编程的呢?非常喜欢Clojure
关于clojurescala和monad
clojure这语言真不错一直不习惯immutability
z****e
发帖数: 54598
61
人不踏入同一个河流两次
为啥不?
现实中来来回回的不要太多
改变属性就行了
为了不产生副作用而整个换掉使得这个语言本身就不合适用来映射客观世界
这个tradeoff不划算,计算机在我看来是电脑,在你看来只是一个计算器而已

【在 f******x 的大作中提到】
: 很合理呀,人不可能两次踏入一个河流,同理,人也没有时间上的延续性。这个view更
: 接近世界的本质。

l*********s
发帖数: 5409
62
改变一下思路可以导致更安全有效的多线程, 我觉得很合算。 模拟物件是手段不是目
的,保证功能/输出,优化质量(可维护性,灵活性,可缩放性)才是。

【在 z****e 的大作中提到】
: 人不踏入同一个河流两次
: 为啥不?
: 现实中来来回回的不要太多
: 改变属性就行了
: 为了不产生副作用而整个换掉使得这个语言本身就不合适用来映射客观世界
: 这个tradeoff不划算,计算机在我看来是电脑,在你看来只是一个计算器而已

c******o
发帖数: 1277
63
你们太搞笑了。都在争论啥呀。
fp immutable来源于函数映射的概念。oo attribute来源于物体的属性
都对,都是对实际世界的认识。
至于我剃了个头,还是不是我。是哲学问题。其实是有争论的,但和我们无关。
在换句话说,oo和fp不矛盾。我可以写出immutable oo来做prod没问题。
c******o
发帖数: 1277
64
正是因为现代计算储存能力的大跃进和并行分布的崛起才导致了fp的流行。你说的没错
:)

【在 x****u 的大作中提到】
: 我早就说过,FP是理论的好东西但在现在体系下玩不了。
: FP程序的最大问题是和冯诺依曼架构仅仅在资源趋向无限时等价,在残酷的真实世界里
: 面不可避免的要撞墙。
:
: python/

z****e
发帖数: 54598
65
多线程不应该是你来写
直接上框架
更不要说fp那种多线程,掌握思想之后
其实也就是那么一回事,用oop一样可以写出来
只要保证隔离,但是那种多线程很明显,是不能满足一些server的需要滴
有些server就需要你做同步,比如游戏,最简单的棋牌乐就需要做一定的同步处理

【在 l*********s 的大作中提到】
: 改变一下思路可以导致更安全有效的多线程, 我觉得很合算。 模拟物件是手段不是目
: 的,保证功能/输出,优化质量(可维护性,灵活性,可缩放性)才是。

z****e
发帖数: 54598
66
没有var很难建模,对世界认识不直观
函数本身是一个比object更为抽象的概念
如果object不能映射出来,却能把func给映射出来
那天赋迥异了

【在 c******o 的大作中提到】
: 你们太搞笑了。都在争论啥呀。
: fp immutable来源于函数映射的概念。oo attribute来源于物体的属性
: 都对,都是对实际世界的认识。
: 至于我剃了个头,还是不是我。是哲学问题。其实是有争论的,但和我们无关。
: 在换句话说,oo和fp不矛盾。我可以写出immutable oo来做prod没问题。

z****e
发帖数: 54598
67
另外,直接拿lambda搭配observer是一个非常好的模式
这一点已经被强制几乎所有语言予以执行
这就是reactive,部分吸收才是王道,而不是动不动就闹革命
历史上动不动就革命的国家几乎都在贫困的边缘徘徊
因为任何重建都需要高昂的成本

【在 l*********s 的大作中提到】
: 改变一下思路可以导致更安全有效的多线程, 我觉得很合算。 模拟物件是手段不是目
: 的,保证功能/输出,优化质量(可维护性,灵活性,可缩放性)才是。

c******o
发帖数: 1277
68
仔细研究一下初等代数,映射是基本概念,函数就是映射定义出来的。

【在 z****e 的大作中提到】
: 没有var很难建模,对世界认识不直观
: 函数本身是一个比object更为抽象的概念
: 如果object不能映射出来,却能把func给映射出来
: 那天赋迥异了

z****e
发帖数: 54598
69
object和variable是小学数学二年级的概念
代数等到初中再弄,而且adt几个概念涉及集合论,这可不是什么初中就可以搞的
小学数学尚且无法理解,你上初中数学,岂不是要跳楼?

【在 c******o 的大作中提到】
: 仔细研究一下初等代数,映射是基本概念,函数就是映射定义出来的。
c******o
发帖数: 1277
70
百度文库 > 教育专区 > 初中教育 > 数学 > 初二数学
http://wenku.baidu.com/link?url=1KOop3QEtykKgfeukfEumv2b4I7_FHB
再说,啥时候小学教变量了?

【在 z****e 的大作中提到】
: object和variable是小学数学二年级的概念
: 代数等到初中再弄,而且adt几个概念涉及集合论,这可不是什么初中就可以搞的
: 小学数学尚且无法理解,你上初中数学,岂不是要跳楼?

相关主题
functional programming why?Haskell很难学。。
vert.x平台上的新东西很让人兴奋阿functional programming?
怎么这里这么多人学python有没有喜欢haskell的同学
z****e
发帖数: 54598
71
我没说不是呀
只是告诉你说,变量是小学二年级就可以学会的概念
而你这个要初二,小二和初二差了六年呢
前面不是有人argue说变量太难么?
我说那是小学二年级的概念,他argue了半天
你这初二的概念岂不是远比那个要难?
变量都理解不了,函数能理解?我很怀疑
看清楚context

【在 c******o 的大作中提到】
: 百度文库 > 教育专区 > 初中教育 > 数学 > 初二数学
: http://wenku.baidu.com/link?url=1KOop3QEtykKgfeukfEumv2b4I7_FHB
: 再说,啥时候小学教变量了?

z****e
发帖数: 54598
72
函数也好,变量也罢,object
这些基础概念没有摆脱初中教育水平
问题在于你光理解这些概念就足够了么?
你可以尝试一下找个初中生解释一下monad
object我有信心他能掌握,monad未必哦
更不要说你还要毙掉他从小就习惯的设变量,列方程,解应用题
这个你要毙掉的话,本身就是一个巨大的副作用
抵触的不要太多,数学系的估计都不干了
没有变量,他们怎么活呀

【在 c******o 的大作中提到】
: 百度文库 > 教育专区 > 初中教育 > 数学 > 初二数学
: http://wenku.baidu.com/link?url=1KOop3QEtykKgfeukfEumv2b4I7_FHB
: 再说,啥时候小学教变量了?

c******o
发帖数: 1277
73
我的意思就是说这个没啥好争论的,OO/FP都是对的对世界的描述,没啥高下

【在 z****e 的大作中提到】
: 我没说不是呀
: 只是告诉你说,变量是小学二年级就可以学会的概念
: 而你这个要初二,小二和初二差了六年呢
: 前面不是有人argue说变量太难么?
: 我说那是小学二年级的概念,他argue了半天
: 你这初二的概念岂不是远比那个要难?
: 变量都理解不了,函数能理解?我很怀疑
: 看清楚context

z****e
发帖数: 54598
74
这是你的论点,问题是某人老是要argue说变量很难
我也觉得有些匪夷所思

【在 c******o 的大作中提到】
: 我的意思就是说这个没啥好争论的,OO/FP都是对的对世界的描述,没啥高下
c******o
发帖数: 1277
75
你还没明白,函数这个概念本身是“不依赖于”变量这个概念的。
变量“不是”描述世界的必要条件。

【在 z****e 的大作中提到】
: 函数也好,变量也罢,object
: 这些基础概念没有摆脱初中教育水平
: 问题在于你光理解这些概念就足够了么?
: 你可以尝试一下找个初中生解释一下monad
: object我有信心他能掌握,monad未必哦
: 更不要说你还要毙掉他从小就习惯的设变量,列方程,解应用题
: 这个你要毙掉的话,本身就是一个巨大的副作用
: 抵触的不要太多,数学系的估计都不干了
: 没有变量,他们怎么活呀

z****e
发帖数: 54598
76
我没有说是依赖啊
我知道他们可以互相独立
我只是说这些概念的理解并不复杂
我没有说他们互相依赖,虽然oop里面很多这样做
我在比较两个p的掌握难度上的差异
你把原文再好好看看

【在 c******o 的大作中提到】
: 你还没明白,函数这个概念本身是“不依赖于”变量这个概念的。
: 变量“不是”描述世界的必要条件。

z****e
发帖数: 54598
77
变量不是描述世界的必要条件
但是却是描述世界的一大方便
方便啊,我们做事情不就是予人方便么?
fp要方便某些东西,而作出了巨大的牺牲
牺牲了另外一个方便,这个牺牲是否值得呢?
显然很多人认为不值得,这就是pure fp的问题
水至清则无鱼,你不也这么说么?一开始就在说这个

【在 c******o 的大作中提到】
: 你还没明白,函数这个概念本身是“不依赖于”变量这个概念的。
: 变量“不是”描述世界的必要条件。

c******o
发帖数: 1277
78
我和你看法的区别在于,我觉得在一般web/big data/micro service领域,FP为主,
imperative为辅更好。
你觉得相反。
OO其实根本不是事,随便用在FP里,不矛盾

【在 z****e 的大作中提到】
: 变量不是描述世界的必要条件
: 但是却是描述世界的一大方便
: 方便啊,我们做事情不就是予人方便么?
: fp要方便某些东西,而作出了巨大的牺牲
: 牺牲了另外一个方便,这个牺牲是否值得呢?
: 显然很多人认为不值得,这就是pure fp的问题
: 水至清则无鱼,你不也这么说么?一开始就在说这个

h*i
发帖数: 3446
79
你说的是事物的属性,我都说了,一般人都懂这个。有问题的,是独立于事物的变量,
这是数学的抽象,需要学习。
程序语言课一上来就是这种独立的变量,这是有问题的。我记得当年上第一门程序语言
课,Pascal, 第一节课的作业,就是说“有一个变量a, 一个变量b, 要求把a, b的值
交换。“我当时觉得这题很他妈困难,想了好久才想出来需要引入第三个变量c。为什
么困难?这些变量不是物理的,没有对应的物理对象,因为那时候还没学计算机原理,
所以对计算机语言的变量还没有物理认识,所以觉得很难。
人和人不同。也许有人觉得这很容易,不需要物理认识。我不是这样的人。有人觉得指
针很难,而我觉得很容易,因为我对计算机变量的认识是基于对计算机的物理认识,所
以觉得指针很容易。我猜想啊,那些把计算机语言变量等同于数学变量来认识的人,可
能就会觉得指针很难。

【在 b*******g 的大作中提到】
: 老祖宗说,吃饭要吃七分饱。有七分饱就意味着有十分,有三分。多饱,这就是个变量
: 。老祖宗说这句话的时候,代数还不存在,不用说FP了。你非要说一般人不能理解变量
: ,显然是侮辱人民群众智商。人民群众对这个世界就是对象和变量建模的,从人和肚子
: 几分饱这个
: 及其原始的命题开始。

h*i
发帖数: 3446
80
我也是这个看法。
FP更接近人的思维的本质,而IP更接近机器的实现。所以细节用IP,大方向用FP。
OOP的确是可以用在FP里面,不矛盾,比如Clojure的protocol啥的。

【在 c******o 的大作中提到】
: 我和你看法的区别在于,我觉得在一般web/big data/micro service领域,FP为主,
: imperative为辅更好。
: 你觉得相反。
: OO其实根本不是事,随便用在FP里,不矛盾

相关主题
从今天开始起,学C++!大牛们比较下 Node, Go, Scala
scala写个loop老难了有因为Spark而学习Scala的吗?
criticism of Scalacoursera 上scala的课上完了,作业也做完了。说说感想
z****e
发帖数: 54598
81
那不好说
io都是个问题的话
你这个实践起来会有巨大的障碍
你见过哪个oop连io都搞不定的?
io最简单就是搭配上一个变量
fp一看就难受,浑身难受,不纯了嘛
但是又没办法,就各种纠结
还有扁平化的问题,这个随着rxjava的出现
fp会越来越突出,因为那一坨括号金字塔的确是很让人讨厌呀
可读性就这么被弄低的,偏偏oop那边这个搞定了,因为本来也没有多少这个问题
加上一开始为了异步效率而导入的fp也被rxjava搞定,连效率提升这个初衷也都没有了
自然就让人没有理由坚持下去了嘛
就我实践中看,oop为主,fp为辅是绝佳的,没有什么不对
效果良好,倒是你的工具scala不少人说看不懂
可行和执行效果是两回事,我并没有在说可行不可行
理论上啥不可行,你自己刻机器码都可行不是?

【在 c******o 的大作中提到】
: 我和你看法的区别在于,我觉得在一般web/big data/micro service领域,FP为主,
: imperative为辅更好。
: 你觉得相反。
: OO其实根本不是事,随便用在FP里,不矛盾

z****e
发帖数: 54598
82
木有人说冲突啊
反过来,fp用在oop里不可以么?
当然可以
coltzhao说的是,不要stick to fp
有些东西可用可不用
你用的可是pure fp,至少纯度上说要高不少
你们两个说的是一回事?
显然不是啊
coltzhao跟我说的是fp和oop哪个为主的问题
而你用的根本就没有oop,还谈什么为主为辅?
最重要的区别就是变量的定位
他跟你的理解完全不同
你根本就在否定变量存在的意义
而他根本就没有否定好不好,不信你把原主帖好好看看
浑水摸鱼的太多

【在 h*i 的大作中提到】
: 我也是这个看法。
: FP更接近人的思维的本质,而IP更接近机器的实现。所以细节用IP,大方向用FP。
: OOP的确是可以用在FP里面,不矛盾,比如Clojure的protocol啥的。

z****e
发帖数: 54598
83
变量小学二年级就有了
列方程解应用题
一般小学应用题两种解答
一种完全逆向思维,就是逆着解出来
我们都知道,这很难
还有一种直接定义变量,然后顺着写出来
再逆着推出来
后者显然更简单,这就是为什么需要变量
因为变量很方便,是不是必需?
不是必需,但是变量是一个巨大的方便
为啥随便丢掉呢?
要求不用变量,那一些简单问题都会变得复杂起来
比如io,原本这不是个事呀

【在 h*i 的大作中提到】
: 你说的是事物的属性,我都说了,一般人都懂这个。有问题的,是独立于事物的变量,
: 这是数学的抽象,需要学习。
: 程序语言课一上来就是这种独立的变量,这是有问题的。我记得当年上第一门程序语言
: 课,Pascal, 第一节课的作业,就是说“有一个变量a, 一个变量b, 要求把a, b的值
: 交换。“我当时觉得这题很他妈困难,想了好久才想出来需要引入第三个变量c。为什
: 么困难?这些变量不是物理的,没有对应的物理对象,因为那时候还没学计算机原理,
: 所以对计算机语言的变量还没有物理认识,所以觉得很难。
: 人和人不同。也许有人觉得这很容易,不需要物理认识。我不是这样的人。有人觉得指
: 针很难,而我觉得很容易,因为我对计算机变量的认识是基于对计算机的物理认识,所
: 以觉得指针很容易。我猜想啊,那些把计算机语言变量等同于数学变量来认识的人,可

z****e
发帖数: 54598
84
说这些都扯蛋
就从你们两个自身说起
coltzhao你除了scala你还接触过什么?
rxjava,clj你写过么?应该是没有吧
hci,你除了clj你还写过什么?
rxjava,scala你写过么?应该也是没有写过吧?
我现在的vert.x里面几个mod里面有clj,有scala,还有rxjava
我好歹还是写过,然后把这些东西放到同一个环境中对比后观察后的结果
你们两个除了自己那个语言以外,接触过其他两个?
整个thread说下来就逐步沦为扯蛋一类了
也就是hobocs说的rxjava的那几个贴值得看看
至少他还跑去看源码,说这里可能会有问题,我以后再看看hoho
剩下的没做过,也就是凭空想象,变成扯蛋的一种
洋洋洒洒好像很多,但其实很多都是胡扯
变成传教,号召群众入教做教徒
c******o
发帖数: 1277
85
clojure做了不少啊,就是script,没啥production app
rxjava没有,但是reactive stream的东西做了不少了

【在 z****e 的大作中提到】
: 说这些都扯蛋
: 就从你们两个自身说起
: coltzhao你除了scala你还接触过什么?
: rxjava,clj你写过么?应该是没有吧
: hci,你除了clj你还写过什么?
: rxjava,scala你写过么?应该也是没有写过吧?
: 我现在的vert.x里面几个mod里面有clj,有scala,还有rxjava
: 我好歹还是写过,然后把这些东西放到同一个环境中对比后观察后的结果
: 你们两个除了自己那个语言以外,接触过其他两个?
: 整个thread说下来就逐步沦为扯蛋一类了

q*c
发帖数: 9453
86
你iq 这么高, 该知道 2-3 标准差意味着啥吧?

2

【在 h*i 的大作中提到】
: IQ符合normal distribution (by design), mean=100,std=15. 也就是说IQ130就是2
: 个标准差(95%), IQ145就是3个标准差(99.7%)。
: 大部分上了大学的人IQ应该在110以上,这些人应该都能programing, 如果不能,只能
: 是计算机语言或者教育出了问题。

h*i
发帖数: 3446
87
我的观点很清楚,那种数学抽象的变量对大部分人来说是不直观的,需要有意识的去学
习,而不是已经变成了程序员的人们想象的那么直观和不可缺少。你说来说去就是“小
学都学了的,blah blah", 这和我说的不矛盾。
Clojure当然用OOP,可以说是继承了OOP好的方面,比如只有protocol,相当于Java的
interface, 没有继承; 有record,相当于Java的class, 但只能implement protocol,
没有自己的method. 等等。 这些都是design pattern鼓励的一些做法,Clojure在语言
层面强制执行而已。 Clojure要搞大系统,鼓励用component https://github.com/
stuartsierra/component), 这玩意就是DI, 和Spring差不多。
你没用过Clojure, 认识有偏差,可以理解,大家相互学习嘛。

【在 z****e 的大作中提到】
: 木有人说冲突啊
: 反过来,fp用在oop里不可以么?
: 当然可以
: coltzhao说的是,不要stick to fp
: 有些东西可用可不用
: 你用的可是pure fp,至少纯度上说要高不少
: 你们两个说的是一回事?
: 显然不是啊
: coltzhao跟我说的是fp和oop哪个为主的问题
: 而你用的根本就没有oop,还谈什么为主为辅?

h*i
发帖数: 3446
88
我的意思是说,IQ这么高的人都觉得不直观需要学习的东东,普通人觉得困难更应该了。

【在 q*c 的大作中提到】
: 你iq 这么高, 该知道 2-3 标准差意味着啥吧?
:
: 2

h*i
发帖数: 3446
89
写过和真正用是两回事。比如你觉得Clojure没有OOP, 这完全就是不了解。
我对不了解的事不会有你这什么strong的opinion. 比如我不了解Scala, 不会去说
scala这不好那不好,我只是说既然连scala自己的most active committer都有这么多
意见,人人都说scala很复杂,我还是不要去碰为好,干嘛跟自己过不去,这不符合我
的追求简单的哲学嘛。到此为止。我不会去说scala有这个那个问题,一是我不知道有
啥问题,二是我也不关心。
See the difference?

【在 z****e 的大作中提到】
: 说这些都扯蛋
: 就从你们两个自身说起
: coltzhao你除了scala你还接触过什么?
: rxjava,clj你写过么?应该是没有吧
: hci,你除了clj你还写过什么?
: rxjava,scala你写过么?应该也是没有写过吧?
: 我现在的vert.x里面几个mod里面有clj,有scala,还有rxjava
: 我好歹还是写过,然后把这些东西放到同一个环境中对比后观察后的结果
: 你们两个除了自己那个语言以外,接触过其他两个?
: 整个thread说下来就逐步沦为扯蛋一类了

z****e
发帖数: 54598
90
protocol算什么object呀?
object最重要的是物体要能够映射出来
protocol和record最重要的部件是啥?
func呀
这个跟design pattern有关系?
哪个pattern?
你说的都是fp好不好,protocol只是一个name space
你甚至无法映射protocol到物理现实中的object
java要写成这样,估计就跟你例子中的一样
一堆的static method
你写的java我都能猜出来是啥样
估计是c-style java,你大量使用了static吧?
所以给我的哪个例子里面B***.getB***的头一字母大写
你当年怎么用spring的?人家都是ioc,把控制权交出去
你倒好,跟spring争抢控制权……
大型项目当然要模块化,否则怎么做大型项目?
从属关系无法确定,这个项目没法做
但是这个跟oop也木有必然联系呀

【在 h*i 的大作中提到】
: 我的观点很清楚,那种数学抽象的变量对大部分人来说是不直观的,需要有意识的去学
: 习,而不是已经变成了程序员的人们想象的那么直观和不可缺少。你说来说去就是“小
: 学都学了的,blah blah", 这和我说的不矛盾。
: Clojure当然用OOP,可以说是继承了OOP好的方面,比如只有protocol,相当于Java的
: interface, 没有继承; 有record,相当于Java的class, 但只能implement protocol,
: 没有自己的method. 等等。 这些都是design pattern鼓励的一些做法,Clojure在语言
: 层面强制执行而已。 Clojure要搞大系统,鼓励用component https://github.com/
: stuartsierra/component), 这玩意就是DI, 和Spring差不多。
: 你没用过Clojure, 认识有偏差,可以理解,大家相互学习嘛。

相关主题
板上的高人们能给科普比较functional programming language么关于clojure
Clojure/West的会场几乎没有什么中国人clojure这语言真不错
这年头有哪几个公司是用函数式编程的呢?非常喜欢Clojure
z****e
发帖数: 54598
91
没有绝对纯粹的fp,oop亦然
所以后面加了一句,至少纯度上高很多
你就别转进到这里来避难了
很明显,你们对于变量的定位有明显差异
你说的变量认知不直观,人家根本不承认呵呵
你说的例子也没啥说服力,for loop都搞不定?
美国人很蠢,但是要蠢到这种程度也不容易
另外我就真正用了这些语言写的mod
你不懂vertx结构就不要凭空想象了

【在 h*i 的大作中提到】
: 写过和真正用是两回事。比如你觉得Clojure没有OOP, 这完全就是不了解。
: 我对不了解的事不会有你这什么strong的opinion. 比如我不了解Scala, 不会去说
: scala这不好那不好,我只是说既然连scala自己的most active committer都有这么多
: 意见,人人都说scala很复杂,我还是不要去碰为好,干嘛跟自己过不去,这不符合我
: 的追求简单的哲学嘛。到此为止。我不会去说scala有这个那个问题,一是我不知道有
: 啥问题,二是我也不关心。
: See the difference?

b*******g
发帖数: 603
92
人思维的本质是对象和相互作用,不是状态机。我举了个几分饱的例子。做开发更是离
不开数据库建模,通行的ER modeling很显然也是前者。OOP和FP正交没有错,大部分
use case用OOP更方便。FP只在一些算法,复杂并发的地方更方便。整个业界反映的就
是这种现状。

【在 h*i 的大作中提到】
: 我也是这个看法。
: FP更接近人的思维的本质,而IP更接近机器的实现。所以细节用IP,大方向用FP。
: OOP的确是可以用在FP里面,不矛盾,比如Clojure的protocol啥的。

z****e
发帖数: 54598
93
我很清楚滴知道fp怎么用,包括clj怎么用
但是你显然不知道rxjava解决了fp的什么问题
你对付那些问题的方式要么否认,要么就转进
比如“我从来不debug”,“不能再简单了”
我看了rxjava,我觉得比fp做得更简单
可以说rxjava本身就是fp的一种借用
另外对比不是要尽量公平嘛?
vert.x是多好的一个公平竞技的平台啊
你不懂的话,先了解了解再说

【在 h*i 的大作中提到】
: 写过和真正用是两回事。比如你觉得Clojure没有OOP, 这完全就是不了解。
: 我对不了解的事不会有你这什么strong的opinion. 比如我不了解Scala, 不会去说
: scala这不好那不好,我只是说既然连scala自己的most active committer都有这么多
: 意见,人人都说scala很复杂,我还是不要去碰为好,干嘛跟自己过不去,这不符合我
: 的追求简单的哲学嘛。到此为止。我不会去说scala有这个那个问题,一是我不知道有
: 啥问题,二是我也不关心。
: See the difference?

z****e
发帖数: 54598
94
一般oop里面当func部分和实体部分分离之后
实体部分一般不会用interface,ejb用过,吃饱了撑着
entitybean,所以挂了,大多数时候都是pojo和set/get方法
只有func部分才需要interface,那这块跟fp就很接近了
func套的object只是一个name space而已了
所以fp和oop一个显著区别就是object或者class这个东西允许不允许存在
这个没啥好争论的,swift就有,clj就没有(除了java部分,这个没办法)
这个才是从语法上最大的差异,而不是故意混淆protocol和interface
看来hci的java基础不行啊,这10多年java都在写啥东西?
h*i
发帖数: 3446
95
protocol和name space是两回事。
我教过software engineering课的,用head first design pattern那本书做教材。OOP
design pattern鼓励用composition而不用继承, 对不对?Composition的一种办法就
是用interface来实现polymorphism, 对不对?
Clojure的protocol就是interface, 里面declare一些method, 然后这样各种record或
者type可以来实现这些method. 无非是Clojure的protocol可以附加到任何Java class
上面, 不需要这个Java class事先实现这个interface, 所以改了个名字叫protocol以
示区别而已。
这些Clojue record, type和Java的class类似,里面可以有member. 无非是只能有
instance member, 没有Java class和instance member的区分而已,而且methods只能
是protocol里面的,大大简化了。为什么?因为Clojure里面function已经是first
class的了, 不必依附在一个class里面,所以区分class和instance method是不必要的。
Java也是鼓励static的,能static的,都应该static.

【在 z****e 的大作中提到】
: protocol算什么object呀?
: object最重要的是物体要能够映射出来
: protocol和record最重要的部件是啥?
: func呀
: 这个跟design pattern有关系?
: 哪个pattern?
: 你说的都是fp好不好,protocol只是一个name space
: 你甚至无法映射protocol到物理现实中的object
: java要写成这样,估计就跟你例子中的一样
: 一堆的static method

h*i
发帖数: 3446
96
我对rxjava和vert.x一句话都没有评论过。我一点都不了解。

【在 z****e 的大作中提到】
: 没有绝对纯粹的fp,oop亦然
: 所以后面加了一句,至少纯度上高很多
: 你就别转进到这里来避难了
: 很明显,你们对于变量的定位有明显差异
: 你说的变量认知不直观,人家根本不承认呵呵
: 你说的例子也没啥说服力,for loop都搞不定?
: 美国人很蠢,但是要蠢到这种程度也不容易
: 另外我就真正用了这些语言写的mod
: 你不懂vertx结构就不要凭空想象了

z****e
发帖数: 54598
97
java当然不鼓励static咯
hoho
你问问其他人,我反正static用得是越来越少了
spring出来之后,我几乎都不用static了
static是spring的事,所以说你在跟spring争抢控制权
你这样写spring,当然苦逼了,当然无法解耦了
到底听谁的?
另外type,record这些和class的差异在于
type,record是一个相对完备的集合
class则是一个无限延伸的概念
实体也就是object部分往往关注的是数量
所以有object(1), class(无限), enum(有限)这些
scala和java,swift什么都有
js,ruby,python也都有class,因为都有oo的部分嘛
这些东西往往是名词
而interface盖着的只是一堆func的集合
这种一般都以什么factory, util这些单词结尾
product往往是object,也就是实体
而这个实体才是现实中最真实的物体的映射
然后放在程序中一般都是变量
fp就纠结这个东西,就没有这些东西
因为从本质上否定有变量的存在,所以必需准备好足够的常量集
否则会很麻烦,而class定义成无限个东东,就不符合fp的要求
变量存在会导致func产生副作用,所以这里就开始纠结
大概就这个意思

OOP
class

【在 h*i 的大作中提到】
: protocol和name space是两回事。
: 我教过software engineering课的,用head first design pattern那本书做教材。OOP
: design pattern鼓励用composition而不用继承, 对不对?Composition的一种办法就
: 是用interface来实现polymorphism, 对不对?
: Clojure的protocol就是interface, 里面declare一些method, 然后这样各种record或
: 者type可以来实现这些method. 无非是Clojure的protocol可以附加到任何Java class
: 上面, 不需要这个Java class事先实现这个interface, 所以改了个名字叫protocol以
: 示区别而已。
: 这些Clojue record, type和Java的class类似,里面可以有member. 无非是只能有
: instance member, 没有Java class和instance member的区分而已,而且methods只能

z****e
发帖数: 54598
98
鼓励你去了解

【在 h*i 的大作中提到】
: 我对rxjava和vert.x一句话都没有评论过。我一点都不了解。
z****e
发帖数: 54598
99
古德霸说过c程序员风格的java代码
几乎通篇都是static
这就跟c很接近了
我觉得他说的跟你很像了

OOP
class

【在 h*i 的大作中提到】
: protocol和name space是两回事。
: 我教过software engineering课的,用head first design pattern那本书做教材。OOP
: design pattern鼓励用composition而不用继承, 对不对?Composition的一种办法就
: 是用interface来实现polymorphism, 对不对?
: Clojure的protocol就是interface, 里面declare一些method, 然后这样各种record或
: 者type可以来实现这些method. 无非是Clojure的protocol可以附加到任何Java class
: 上面, 不需要这个Java class事先实现这个interface, 所以改了个名字叫protocol以
: 示区别而已。
: 这些Clojue record, type和Java的class类似,里面可以有member. 无非是只能有
: instance member, 没有Java class和instance member的区分而已,而且methods只能

z****e
发帖数: 54598
100
Composition不是一个好的模式
因为扁平化的需要,其实Composition是一个app的pattern
oop很多pattern,尤其是常见的21个大多数都适合做app,而非server
server扁平化在spring出来之后就很明显了
几乎都不用过于复杂的interface
flat,简单就好,不用弄那么麻烦

OOP
class

【在 h*i 的大作中提到】
: protocol和name space是两回事。
: 我教过software engineering课的,用head first design pattern那本书做教材。OOP
: design pattern鼓励用composition而不用继承, 对不对?Composition的一种办法就
: 是用interface来实现polymorphism, 对不对?
: Clojure的protocol就是interface, 里面declare一些method, 然后这样各种record或
: 者type可以来实现这些method. 无非是Clojure的protocol可以附加到任何Java class
: 上面, 不需要这个Java class事先实现这个interface, 所以改了个名字叫protocol以
: 示区别而已。
: 这些Clojue record, type和Java的class类似,里面可以有member. 无非是只能有
: instance member, 没有Java class和instance member的区分而已,而且methods只能

相关主题
scala和monadvert.x平台上的新东西很让人兴奋阿
一直不习惯immutability怎么这里这么多人学python
functional programming why?Haskell很难学。。
h*i
发帖数: 3446
101
都说了很多遍了, Clojure的record就是类似于class的。为了强化这个概念,连写法
都一样,Clojure的record常规也用camel case来写,SomeRecord. 和其他clojure的
符号写法都不同,其他符号都是LISP写法,some-things。
要得到一个record instance,也必须要new, (new SomeRecord member1 member2), 语
法糖用(SomeRecord. member1 member2).
所以说这句话是nonsense: “fp和oop一个显著区别就是object或者class这个东西允
许不允许存在”。 说这话的人是既不懂FP, 也不懂OOP,完全一团浆糊。

【在 z****e 的大作中提到】
: 一般oop里面当func部分和实体部分分离之后
: 实体部分一般不会用interface,ejb用过,吃饱了撑着
: entitybean,所以挂了,大多数时候都是pojo和set/get方法
: 只有func部分才需要interface,那这块跟fp就很接近了
: func套的object只是一个name space而已了
: 所以fp和oop一个显著区别就是object或者class这个东西允许不允许存在
: 这个没啥好争论的,swift就有,clj就没有(除了java部分,这个没办法)
: 这个才是从语法上最大的差异,而不是故意混淆protocol和interface
: 看来hci的java基础不行啊,这10多年java都在写啥东西?

z****e
发帖数: 54598
102
你用object的思维去写fp累不累?
clj可以直接调用java的class
你不需要强行把两个概念混为一谈
否则record就没有必要存在了
多此一举嘛

【在 h*i 的大作中提到】
: 都说了很多遍了, Clojure的record就是类似于class的。为了强化这个概念,连写法
: 都一样,Clojure的record常规也用camel case来写,SomeRecord. 和其他clojure的
: 符号写法都不同,其他符号都是LISP写法,some-things。
: 要得到一个record instance,也必须要new, (new SomeRecord member1 member2), 语
: 法糖用(SomeRecord. member1 member2).
: 所以说这句话是nonsense: “fp和oop一个显著区别就是object或者class这个东西允
: 许不允许存在”。 说这话的人是既不懂FP, 也不懂OOP,完全一团浆糊。

z****e
发帖数: 54598
103
class还new
new啥呀
factory.build
new不是一个很好的生命周期的控制方式
容易造成内存泄漏
不过这个是经验上的扯蛋
我来告诉你record是啥
record其实是prototype
fp里面大量使用了prototype这个pattern
前面说了,需要准备好一个完备的集合
否则集合里面元素变来变去,会导致你的func经常性修改
你用fp就不合适鸟
当然你非要把record写成class,我也没办法
只能说这不是作者的初衷

【在 h*i 的大作中提到】
: 都说了很多遍了, Clojure的record就是类似于class的。为了强化这个概念,连写法
: 都一样,Clojure的record常规也用camel case来写,SomeRecord. 和其他clojure的
: 符号写法都不同,其他符号都是LISP写法,some-things。
: 要得到一个record instance,也必须要new, (new SomeRecord member1 member2), 语
: 法糖用(SomeRecord. member1 member2).
: 所以说这句话是nonsense: “fp和oop一个显著区别就是object或者class这个东西允
: 许不允许存在”。 说这话的人是既不懂FP, 也不懂OOP,完全一团浆糊。

z****e
发帖数: 54598
104
我觉得record也好,type也罢
都很清晰滴从字面上告诉你是啥意思了
你非要理解成class,我也没办法
class显然更抽象,record和type都可以直接对应具体物体
所以最好先准备好这些物体,否则到时要用找不到就麻烦了
oop的class都可以动态生成了
new算个p啊
你怎么还在new啊
你说你写过spring,我很怀疑啊
你这个spring写得一塌糊涂的说

【在 h*i 的大作中提到】
: 都说了很多遍了, Clojure的record就是类似于class的。为了强化这个概念,连写法
: 都一样,Clojure的record常规也用camel case来写,SomeRecord. 和其他clojure的
: 符号写法都不同,其他符号都是LISP写法,some-things。
: 要得到一个record instance,也必须要new, (new SomeRecord member1 member2), 语
: 法糖用(SomeRecord. member1 member2).
: 所以说这句话是nonsense: “fp和oop一个显著区别就是object或者class这个东西允
: 许不允许存在”。 说这话的人是既不懂FP, 也不懂OOP,完全一团浆糊。

h*i
发帖数: 3446
105
你可以new无限多个record, (SomeRecord. 1), (SomeRecord. 2), ....
和 new SomeClass(1), new SomeClass(2), ....
一摸一样。
看来你一点也不懂record, 所以不知道这其实是一种有限制的class,其实在JVM里面就
是这么实现的。
这么叫“相对完备的集合”? nonsense again?

【在 z****e 的大作中提到】
: java当然不鼓励static咯
: hoho
: 你问问其他人,我反正static用得是越来越少了
: spring出来之后,我几乎都不用static了
: static是spring的事,所以说你在跟spring争抢控制权
: 你这样写spring,当然苦逼了,当然无法解耦了
: 到底听谁的?
: 另外type,record这些和class的差异在于
: type,record是一个相对完备的集合
: class则是一个无限延伸的概念

h*i
发帖数: 3446
106
Clojure的point就是附加各种限制, Clojure能做的,JVM都能做(不一定Java语言能做
,比如protocol),the point is to limit what you can do.
就如Java的point就是不准你自己allocate memory一样,that's the point.
Damn, why is this so hard for this guy?

【在 z****e 的大作中提到】
: 你用object的思维去写fp累不累?
: clj可以直接调用java的class
: 你不需要强行把两个概念混为一谈
: 否则record就没有必要存在了
: 多此一举嘛

z****e
发帖数: 54598
107
你把其他人转的文章好好看看
就知道了
new无限多个只是你可以这么做
并不代表你应该这么做呵呵
更不要说动态生成对象了
反射用过没?
让程序凭空造出一个原先没有写好的类对象
这才是oop最灵活的地方
当然需要有一个接口,这里接口就体现出跟protocol不同的地方了

【在 h*i 的大作中提到】
: 你可以new无限多个record, (SomeRecord. 1), (SomeRecord. 2), ....
: 和 new SomeClass(1), new SomeClass(2), ....
: 一摸一样。
: 看来你一点也不懂record, 所以不知道这其实是一种有限制的class,其实在JVM里面就
: 是这么实现的。
: 这么叫“相对完备的集合”? nonsense again?

z****e
发帖数: 54598
108
你这不是废话吗
最后不都是字节码
要是jvm不能做的话,你这个语言运行在哪上面?
火星?
我倒是很佩服你用oop的方式写fp
你oop写得一塌糊涂不说,fp好像也受到了影响

【在 h*i 的大作中提到】
: Clojure的point就是附加各种限制, Clojure能做的,JVM都能做(不一定Java语言能做
: ,比如protocol),the point is to limit what you can do.
: 就如Java的point就是不准你自己allocate memory一样,that's the point.
: Damn, why is this so hard for this guy?

h*i
发帖数: 3446
109
By now, everyone following should see my point. I will stop.

【在 z****e 的大作中提到】
: 你把其他人转的文章好好看看
: 就知道了
: new无限多个只是你可以这么做
: 并不代表你应该这么做呵呵
: 更不要说动态生成对象了
: 反射用过没?
: 让程序凭空造出一个原先没有写好的类对象
: 这才是oop最灵活的地方
: 当然需要有一个接口,这里接口就体现出跟protocol不同的地方了

c******o
发帖数: 1277
110
你们两个真有劲。
不如做个library, 给micro service的integration layer专门做optimize batch
fetching/caching,一定能火。
相关主题
functional programming?scala写个loop老难了
有没有喜欢haskell的同学criticism of Scala
从今天开始起,学C++!大牛们比较下 Node, Go, Scala
z****e
发帖数: 54598
111
你的point就是死活没弄明白prototype和class的区别
所以给你一个反射动态生成类对象的例子,让你看得更明白点
不过貌似效果一般般,你的java写得够糟糕的不是我说
spring都用不好,个人英雄主义,oop没那么难,但是显然你做得不好

【在 h*i 的大作中提到】
: By now, everyone following should see my point. I will stop.
h*i
发帖数: 3446
112
这个zhaoce挺笨的,看不上。

【在 c******o 的大作中提到】
: 你们两个真有劲。
: 不如做个library, 给micro service的integration layer专门做optimize batch
: fetching/caching,一定能火。

z****e
发帖数: 54598
113
再笨也不会比你用spring还狂写static糟糕
你好意思说出来

【在 h*i 的大作中提到】
: 这个zhaoce挺笨的,看不上。
h*i
发帖数: 3446
114
Whatever. To me, you are just a stupid guy who don't know when to stop. That
's it. No more.

【在 z****e 的大作中提到】
: 你的point就是死活没弄明白prototype和class的区别
: 所以给你一个反射动态生成类对象的例子,让你看得更明白点
: 不过貌似效果一般般,你的java写得够糟糕的不是我说
: spring都用不好,个人英雄主义,oop没那么难,但是显然你做得不好

z****e
发帖数: 54598
115
当例子开始深入理论核心的时候你就开始打滚了

That

【在 h*i 的大作中提到】
: Whatever. To me, you are just a stupid guy who don't know when to stop. That
: 's it. No more.

q*c
发帖数: 9453
116
有人就是要代表人民。:)
我发现 fp 的拥蹇有两个共同特定
1 左派,喜欢替别人做决定。
2 自我中心, 我觉得xx 所以事实就是 xx.
很少例外

【在 b*******g 的大作中提到】
: 老祖宗说,吃饭要吃七分饱。有七分饱就意味着有十分,有三分。多饱,这就是个变量
: 。老祖宗说这句话的时候,代数还不存在,不用说FP了。你非要说一般人不能理解变量
: ,显然是侮辱人民群众智商。人民群众对这个世界就是对象和变量建模的,从人和肚子
: 几分饱这个
: 及其原始的命题开始。

l*y
发帖数: 21010
117
左派确实比右派牛逼

【在 q*c 的大作中提到】
: 有人就是要代表人民。:)
: 我发现 fp 的拥蹇有两个共同特定
: 1 左派,喜欢替别人做决定。
: 2 自我中心, 我觉得xx 所以事实就是 xx.
: 很少例外

q*c
发帖数: 9453
118
你需要了解一件事情,就是你和大多数人不一样。

【在 h*i 的大作中提到】
: 你说的是事物的属性,我都说了,一般人都懂这个。有问题的,是独立于事物的变量,
: 这是数学的抽象,需要学习。
: 程序语言课一上来就是这种独立的变量,这是有问题的。我记得当年上第一门程序语言
: 课,Pascal, 第一节课的作业,就是说“有一个变量a, 一个变量b, 要求把a, b的值
: 交换。“我当时觉得这题很他妈困难,想了好久才想出来需要引入第三个变量c。为什
: 么困难?这些变量不是物理的,没有对应的物理对象,因为那时候还没学计算机原理,
: 所以对计算机语言的变量还没有物理认识,所以觉得很难。
: 人和人不同。也许有人觉得这很容易,不需要物理认识。我不是这样的人。有人觉得指
: 针很难,而我觉得很容易,因为我对计算机变量的认识是基于对计算机的物理认识,所
: 以觉得指针很容易。我猜想啊,那些把计算机语言变量等同于数学变量来认识的人,可

l*y
发帖数: 21010
119
这是优点。大多数人都是傻逼

【在 q*c 的大作中提到】
: 你需要了解一件事情,就是你和大多数人不一样。
q*c
发帖数: 9453
120
那就不对了。iq 太高根据人品守恒定律, 常识就缺了。
人类活到今天,靠的可不是超高 iq, 靠的是普及的常识。

了。

【在 h*i 的大作中提到】
: 我的意思是说,IQ这么高的人都觉得不直观需要学习的东东,普通人觉得困难更应该了。
相关主题
有因为Spark而学习Scala的吗?Clojure/West的会场几乎没有什么中国人
coursera 上scala的课上完了,作业也做完了。说说感想这年头有哪几个公司是用函数式编程的呢?
板上的高人们能给科普比较functional programming language么关于clojure
q*c
发帖数: 9453
121
lol...果然,左派兄。
只是你要小心饿死三千万人的时候,你是分子上的,不是分母上的 :)
有这个自信是好事。

【在 l*y 的大作中提到】
: 这是优点。大多数人都是傻逼
h*i
发帖数: 3446
122
这个我当然知道。人的个体差异很大。但我相信思维的机理是一样的。
当我发现别人思想上有问题的时候,我喜欢分析出问题的原因。比如有人学不会for
loop,觉得指针很难,等等。我分析出的原因可能的是错的,如果有证据表明我错了,
我接受,但没有证据光靠argue, 这是没有用的,我肯定会坚持我自己的分析,因为这
个分析与我自己的经验是一致的。

【在 q*c 的大作中提到】
: 你需要了解一件事情,就是你和大多数人不一样。
h*i
发帖数: 3446
123
你的常识是什么?“大部分人直觉就懂得变量”是常识?
这就是你的常识?我看你犯了自以为是的错误吧?我是有直接经验教人编程的,见过非
程序员是如何觉得困难的,而你的常识从哪儿来的?是不是自己相信的就是常识,与自
己不同的就不是常识,就“因为我是个普通人,而那个人不是普通人”?这儿的逻辑错
误看出来了么?

【在 q*c 的大作中提到】
: 那就不对了。iq 太高根据人品守恒定律, 常识就缺了。
: 人类活到今天,靠的可不是超高 iq, 靠的是普及的常识。
:
: 了。

d****i
发帖数: 4809
124
你说的太对了,scala这种东西就是欧洲学院派左逼搞出来的,加上两三个人帮着忽悠
吹嘘hype一下,其实根本不可能成气候。美国人还是喜欢技术实用主义的。

【在 q*c 的大作中提到】
: 有人就是要代表人民。:)
: 我发现 fp 的拥蹇有两个共同特定
: 1 左派,喜欢替别人做决定。
: 2 自我中心, 我觉得xx 所以事实就是 xx.
: 很少例外

l*y
发帖数: 21010
125
我学习fp的决心更加坚定了

【在 d****i 的大作中提到】
: 你说的太对了,scala这种东西就是欧洲学院派左逼搞出来的,加上两三个人帮着忽悠
: 吹嘘hype一下,其实根本不可能成气候。美国人还是喜欢技术实用主义的。

h*i
发帖数: 3446
126
你看看自己说的话, 是不是更牛?:你不但已经毋庸置疑地代表了人民,连非人民是
如何如何的都能一语道破,能深刻揭露其非人民的反动本质。
你的行为生动地阐释了“文革为什么是可能的”。哈哈。

【在 q*c 的大作中提到】
: 有人就是要代表人民。:)
: 我发现 fp 的拥蹇有两个共同特定
: 1 左派,喜欢替别人做决定。
: 2 自我中心, 我觉得xx 所以事实就是 xx.
: 很少例外

q*c
发帖数: 9453
127
指出原因根本毫无用处 - 我指出你跑的慢是因为腿短, 你就跑的快了?
最重要的是事实 - 事实就是让人理解变量非常非常的容易, 但是简单的尾递归? 呵
呵。
和事实硬刚 -- 当然没人能喝事实硬刚, 这么干的不是在现实里面被打脸, 就是在
网上练嘴。

【在 h*i 的大作中提到】
: 这个我当然知道。人的个体差异很大。但我相信思维的机理是一样的。
: 当我发现别人思想上有问题的时候,我喜欢分析出问题的原因。比如有人学不会for
: loop,觉得指针很难,等等。我分析出的原因可能的是错的,如果有证据表明我错了,
: 我接受,但没有证据光靠argue, 这是没有用的,我肯定会坚持我自己的分析,因为这
: 个分析与我自己的经验是一致的。

b*******g
发帖数: 603
128
我的肚子饱还是饿,智商50以上都能理解吧。我->instance没变, 饱/饿->变量。
你非要理解成肚子饿的我吃饭就变成了一个新的肚子饱的我,智商130以下都很吃力。
这就叫做常识。

【在 h*i 的大作中提到】
: 你的常识是什么?“大部分人直觉就懂得变量”是常识?
: 这就是你的常识?我看你犯了自以为是的错误吧?我是有直接经验教人编程的,见过非
: 程序员是如何觉得困难的,而你的常识从哪儿来的?是不是自己相信的就是常识,与自
: 己不同的就不是常识,就“因为我是个普通人,而那个人不是普通人”?这儿的逻辑错
: 误看出来了么?

q*c
发帖数: 9453
129
我也教过学校编程啊。
我的事实就是我身边的职业程序员都在骂 fp, 但是所有人都觉得java 容易。
这也是网上一面倒的结论。

【在 h*i 的大作中提到】
: 你的常识是什么?“大部分人直觉就懂得变量”是常识?
: 这就是你的常识?我看你犯了自以为是的错误吧?我是有直接经验教人编程的,见过非
: 程序员是如何觉得困难的,而你的常识从哪儿来的?是不是自己相信的就是常识,与自
: 己不同的就不是常识,就“因为我是个普通人,而那个人不是普通人”?这儿的逻辑错
: 误看出来了么?

h*i
发帖数: 3446
130
看出你在干什么没有?你不但觉得自己很牛,还要预见别人会如何倒霉,从而享受到到
更高级的快感。而这一切,都是在“我代表了大众,所以我说的就是至高无上的真理“
的语境下进行,对hci这些”非大众“进行无情的批判。
自己想想是不是这样吧。

【在 q*c 的大作中提到】
: 指出原因根本毫无用处 - 我指出你跑的慢是因为腿短, 你就跑的快了?
: 最重要的是事实 - 事实就是让人理解变量非常非常的容易, 但是简单的尾递归? 呵
: 呵。
: 和事实硬刚 -- 当然没人能喝事实硬刚, 这么干的不是在现实里面被打脸, 就是在
: 网上练嘴。

相关主题
clojure这语言真不错一直不习惯immutability
非常喜欢Clojurefunctional programming why?
scala和monadvert.x平台上的新东西很让人兴奋阿
h*i
发帖数: 3446
131
有一个变量a, 另有一变量b, 请写出代码, 让变量a和b的值交换。
这就是第一次上编程课的作业,你非要说人人都会做这个,这是常识,我也无话可说,
看来我是比一般人要笨一些。嗯。
我都说了,OOP人们觉得更简单,就是因为OOP讲的变量是总是某个东西的性质,而不是
独立的一个抽象概念,叫做变量,这样的东西在物理现实中是不存在的。
而一个人吃了饭,从一个饿人变成了一个饱人,饿人和饱人是不一样的,我要做饱人,
不要做饿人,这个人人都懂吧?

【在 b*******g 的大作中提到】
: 我的肚子饱还是饿,智商50以上都能理解吧。我->instance没变, 饱/饿->变量。
: 你非要理解成肚子饿的我吃饭就变成了一个新的肚子饱的我,智商130以下都很吃力。
: 这就叫做常识。

h*i
发帖数: 3446
132
我的论点就是说这些职业程序员是biased,不知道非程序员的困难点在什么地方。他们
骂FP正常,但非要说计算机语言里面的变量是人人都懂的常识就过分了。

【在 q*c 的大作中提到】
: 我也教过学校编程啊。
: 我的事实就是我身边的职业程序员都在骂 fp, 但是所有人都觉得java 容易。
: 这也是网上一面倒的结论。

p******h
发帖数: 1783
133
不知道你编程老师或者启蒙课本是怎么说的
我记得是把变量比喻成盒子,交换变量值就是交换盒子里的东西

【在 h*i 的大作中提到】
: 有一个变量a, 另有一变量b, 请写出代码, 让变量a和b的值交换。
: 这就是第一次上编程课的作业,你非要说人人都会做这个,这是常识,我也无话可说,
: 看来我是比一般人要笨一些。嗯。
: 我都说了,OOP人们觉得更简单,就是因为OOP讲的变量是总是某个东西的性质,而不是
: 独立的一个抽象概念,叫做变量,这样的东西在物理现实中是不存在的。
: 而一个人吃了饭,从一个饿人变成了一个饱人,饿人和饱人是不一样的,我要做饱人,
: 不要做饿人,这个人人都懂吧?

h*i
发帖数: 3446
134
看到没有,还是要物理化,具体化,要打比方。这就不是人人生而俱来的常识了。
That, is exactly my point.

【在 p******h 的大作中提到】
: 不知道你编程老师或者启蒙课本是怎么说的
: 我记得是把变量比喻成盒子,交换变量值就是交换盒子里的东西

d****i
发帖数: 4809
135
左逼,同性恋,外F, 吸毒者,嘻皮士 =》FP
伟大光荣正确的保守主义=》C,C++,Java, JavaScript,PHP,Perl, Python等等一众
历史悠久的传统主流语言全包打天下。

【在 l*y 的大作中提到】
: 我学习fp的决心更加坚定了
h*i
发帖数: 3446
136
Conservatives always lose in the end.
Today's mainstream was hippies in 1960.

【在 d****i 的大作中提到】
: 左逼,同性恋,外F, 吸毒者,嘻皮士 =》FP
: 伟大光荣正确的保守主义=》C,C++,Java, JavaScript,PHP,Perl, Python等等一众
: 历史悠久的传统主流语言全包打天下。

d****i
发帖数: 4809
137
你这个是乱讲,fp在几十年前Lisp时候就有了,可是从来未被工业界接纳过,你也不想
想是什么原因,难道计算机工业界的人都是傻子?其实很好判断,一个语言能够经受住
历史的考验就说明牛叉,你看C, C++, Java,JavaScript在各自的领域莫不是如此。但
是和C同时代的Pascal, Fortran, Basic, Cobol等等都已经几乎绝迹了。FP则是干脆几
十年来连Pascal, Fortran, Basic, Cobol的地位都从来没有过。

【在 h*i 的大作中提到】
: Conservatives always lose in the end.
: Today's mainstream was hippies in 1960.

h*i
发帖数: 3446
138
LISP were mostly imperative programming languages, just like other languages
. If you are basically bashing a variable over and over. You are using an
imperative language, that's it. Doesn't matter if it is LISP.
The widely used FP languages today are Haskell and Clojure. These two
languages are not that old.

【在 d****i 的大作中提到】
: 你这个是乱讲,fp在几十年前Lisp时候就有了,可是从来未被工业界接纳过,你也不想
: 想是什么原因,难道计算机工业界的人都是傻子?其实很好判断,一个语言能够经受住
: 历史的考验就说明牛叉,你看C, C++, Java,JavaScript在各自的领域莫不是如此。但
: 是和C同时代的Pascal, Fortran, Basic, Cobol等等都已经几乎绝迹了。FP则是干脆几
: 十年来连Pascal, Fortran, Basic, Cobol的地位都从来没有过。

h*i
发帖数: 3446
139
LISP NOT= FP.
FP = referential transparency. See OP's article.

【在 d****i 的大作中提到】
: 你这个是乱讲,fp在几十年前Lisp时候就有了,可是从来未被工业界接纳过,你也不想
: 想是什么原因,难道计算机工业界的人都是傻子?其实很好判断,一个语言能够经受住
: 历史的考验就说明牛叉,你看C, C++, Java,JavaScript在各自的领域莫不是如此。但
: 是和C同时代的Pascal, Fortran, Basic, Cobol等等都已经几乎绝迹了。FP则是干脆几
: 十年来连Pascal, Fortran, Basic, Cobol的地位都从来没有过。

h*i
发帖数: 3446
140
I am 计算机工业界的人, I am voting with my feet.

【在 d****i 的大作中提到】
: 你这个是乱讲,fp在几十年前Lisp时候就有了,可是从来未被工业界接纳过,你也不想
: 想是什么原因,难道计算机工业界的人都是傻子?其实很好判断,一个语言能够经受住
: 历史的考验就说明牛叉,你看C, C++, Java,JavaScript在各自的领域莫不是如此。但
: 是和C同时代的Pascal, Fortran, Basic, Cobol等等都已经几乎绝迹了。FP则是干脆几
: 十年来连Pascal, Fortran, Basic, Cobol的地位都从来没有过。

相关主题
怎么这里这么多人学python有没有喜欢haskell的同学
Haskell很难学。。从今天开始起,学C++!
functional programming?scala写个loop老难了
b*******g
发帖数: 603
141
天哪,让你举个反例你都举到编程课堂上了。这不就说明生活中反例很难找吗?如果你
像楼下说的那样举生活中的例子,盒子只能放一个东西,两个盒子里的东西怎么交换,
智商100的人是不会有啥问题的。
你举的例子只是进一步证明了变量是多么符合常识。

【在 h*i 的大作中提到】
: 有一个变量a, 另有一变量b, 请写出代码, 让变量a和b的值交换。
: 这就是第一次上编程课的作业,你非要说人人都会做这个,这是常识,我也无话可说,
: 看来我是比一般人要笨一些。嗯。
: 我都说了,OOP人们觉得更简单,就是因为OOP讲的变量是总是某个东西的性质,而不是
: 独立的一个抽象概念,叫做变量,这样的东西在物理现实中是不存在的。
: 而一个人吃了饭,从一个饿人变成了一个饱人,饿人和饱人是不一样的,我要做饱人,
: 不要做饿人,这个人人都懂吧?

h*i
发帖数: 3446
142
我要说明的,就是计算机语言里的变量是不直观,不符合一般人的常识的。当然要到编
程课堂找例子。你们在现实中找例子是与我的论点无关的。

★ 发自iPhone App: ChineseWeb 8.7

【在 b*******g 的大作中提到】
: 天哪,让你举个反例你都举到编程课堂上了。这不就说明生活中反例很难找吗?如果你
: 像楼下说的那样举生活中的例子,盒子只能放一个东西,两个盒子里的东西怎么交换,
: 智商100的人是不会有啥问题的。
: 你举的例子只是进一步证明了变量是多么符合常识。

q*c
发帖数: 9453
143
我有个计数器, 上面显示一个数字, 这个数字我可以变化。
人脑自然就把这个东西简化成个抽象的数字 -- 你非要加个 LED 屏幕在后面也行,
交换两个变量, 就引入第三个计数器, 记住其中一个, 然后复制, 然后写回去。
多么的负符合自然。
这就是变量的现实存在。 有啥难理解的?我 5 岁女儿就能理解。
然后你试试给5岁娃上个尾递归试试?

【在 h*i 的大作中提到】
: 有一个变量a, 另有一变量b, 请写出代码, 让变量a和b的值交换。
: 这就是第一次上编程课的作业,你非要说人人都会做这个,这是常识,我也无话可说,
: 看来我是比一般人要笨一些。嗯。
: 我都说了,OOP人们觉得更简单,就是因为OOP讲的变量是总是某个东西的性质,而不是
: 独立的一个抽象概念,叫做变量,这样的东西在物理现实中是不存在的。
: 而一个人吃了饭,从一个饿人变成了一个饱人,饿人和饱人是不一样的,我要做饱人,
: 不要做饿人,这个人人都懂吧?

q*c
发帖数: 9453
144
that is why 1960 US is world center, and now they are not.

【在 h*i 的大作中提到】
: Conservatives always lose in the end.
: Today's mainstream was hippies in 1960.

h*i
发帖数: 3446
145
上面说了,你们举例的这些现实中的变量全是具体的事物属性,和我说的数学和计算机
语言的变量不是一回事,这两者,我都有证据表明人们理解起来有困难。

【在 q*c 的大作中提到】
: 我有个计数器, 上面显示一个数字, 这个数字我可以变化。
: 人脑自然就把这个东西简化成个抽象的数字 -- 你非要加个 LED 屏幕在后面也行,
: 交换两个变量, 就引入第三个计数器, 记住其中一个, 然后复制, 然后写回去。
: 多么的负符合自然。
: 这就是变量的现实存在。 有啥难理解的?我 5 岁女儿就能理解。
: 然后你试试给5岁娃上个尾递归试试?

h*i
发帖数: 3446
146
Does't change the fact that hippies become the mainstream.

【在 q*c 的大作中提到】
: that is why 1960 US is world center, and now they are not.
b*******g
发帖数: 603
147
你说的不是变量,是算法,交换变量就是个简单算法。算法没学过想不出来很正常,而
且算法是跟计算机体系结构相关的。你
不要试图混淆变量和算法。

【在 h*i 的大作中提到】
: 我要说明的,就是计算机语言里的变量是不直观,不符合一般人的常识的。当然要到编
: 程课堂找例子。你们在现实中找例子是与我的论点无关的。
:
: ★ 发自iPhone App: ChineseWeb 8.7

q*c
发帖数: 9453
148
while it shows the fact that non-hippie is winning the world, for an example
, like china. and you lose already owned world when you become hippies.
you can be the mainstream of a fucked up country - there is no problem of
that.
I want to be mainstream of a winning country though.

【在 h*i 的大作中提到】
: Does't change the fact that hippies become the mainstream.
h*i
发帖数: 3446
149
你自己都说了,如果吧变量变成盒子,人一下就能想出办法来,不正说明我的论点么?
抽象的变量人们有理解困难。而imperative programming的根基就是抽象的变量。

【在 b*******g 的大作中提到】
: 你说的不是变量,是算法,交换变量就是个简单算法。算法没学过想不出来很正常,而
: 且算法是跟计算机体系结构相关的。你
: 不要试图混淆变量和算法。

h*i
发帖数: 3446
150
计算机语言没有国界。

example

【在 q*c 的大作中提到】
: while it shows the fact that non-hippie is winning the world, for an example
: , like china. and you lose already owned world when you become hippies.
: you can be the mainstream of a fucked up country - there is no problem of
: that.
: I want to be mainstream of a winning country though.

相关主题
criticism of Scalacoursera 上scala的课上完了,作业也做完了。说说感想
大牛们比较下 Node, Go, Scala板上的高人们能给科普比较functional programming language么
有因为Spark而学习Scala的吗?Clojure/West的会场几乎没有什么中国人
b*******g
发帖数: 603
151
你这不是狡辩吗?算法是算法,变量是变量。交换变量的算法不懂正常,但也是一次就
能理解的东西。

【在 h*i 的大作中提到】
: 你自己都说了,如果吧变量变成盒子,人一下就能想出办法来,不正说明我的论点么?
: 抽象的变量人们有理解困难。而imperative programming的根基就是抽象的变量。

h*i
发帖数: 3446
152
变量换成盒子,算法一样,一个觉得难,一个觉得简单,问题显然处在变量上。

【在 b*******g 的大作中提到】
: 你这不是狡辩吗?算法是算法,变量是变量。交换变量的算法不懂正常,但也是一次就
: 能理解的东西。

b*******g
发帖数: 603
153
啥东西不是抽象了就难。小朋友知道一个加一个苹果是两个,1+1=2就需要教。OOP和FP
的区别不在这里,区别在于建模的方式不同,OOP更接近于正常人类的建模,有整个宏
观物理学为证。

【在 h*i 的大作中提到】
: 变量换成盒子,算法一样,一个觉得难,一个觉得简单,问题显然处在变量上。
q*c
发帖数: 9453
154
对啊, 所以 FP 在全世界应用规模上都被 OOP 打脸。
和事实完全相符。

【在 h*i 的大作中提到】
: 计算机语言没有国界。
:
: example

h*i
发帖数: 3446
155
当然抽象了就难。这是没有疑问的。
OOP和FP没有冲突。 FP只是和IP不同,不要混淆了。
FP=没有变量。吃饱的人 != 挨饿的人, =》 简单。
IP=有变量。吃饱的人可能=, 可能!=挨饿的人,要看情况,=》复杂。

FP

【在 b*******g 的大作中提到】
: 啥东西不是抽象了就难。小朋友知道一个加一个苹果是两个,1+1=2就需要教。OOP和FP
: 的区别不在这里,区别在于建模的方式不同,OOP更接近于正常人类的建模,有整个宏
: 观物理学为证。

d****i
发帖数: 4809
156
fp没有变量这一点从基本的数学上的函数定义来讲也是天理难容啊,比如数学中一个函数
y = f(a, b, c)
这里a,b, c都是变量,放到C和Java里面对应的就是函数和方法的args。你一个没有变
量的东东还好意思出来混,这不是扯淡吗。

【在 h*i 的大作中提到】
: 当然抽象了就难。这是没有疑问的。
: OOP和FP没有冲突。 FP只是和IP不同,不要混淆了。
: FP=没有变量。吃饱的人 != 挨饿的人, =》 简单。
: IP=有变量。吃饱的人可能=, 可能!=挨饿的人,要看情况,=》复杂。
:
: FP

h*i
发帖数: 3446
157
wait and see.

【在 q*c 的大作中提到】
: 对啊, 所以 FP 在全世界应用规模上都被 OOP 打脸。
: 和事实完全相符。

l*y
发帖数: 21010
158
you are a loser. because you think China is winning the world. lol.

example

【在 q*c 的大作中提到】
: while it shows the fact that non-hippie is winning the world, for an example
: , like china. and you lose already owned world when you become hippies.
: you can be the mainstream of a fucked up country - there is no problem of
: that.
: I want to be mainstream of a winning country though.

q*c
发帖数: 9453
159
左派就以挑战人类常识为荣啊 ;)

函数

【在 d****i 的大作中提到】
: fp没有变量这一点从基本的数学上的函数定义来讲也是天理难容啊,比如数学中一个函数
: y = f(a, b, c)
: 这里a,b, c都是变量,放到C和Java里面对应的就是函数和方法的args。你一个没有变
: 量的东东还好意思出来混,这不是扯淡吗。

q*c
发帖数: 9453
160
等了几十年啦, 人生苦短啊。

【在 h*i 的大作中提到】
: wait and see.
相关主题
这年头有哪几个公司是用函数式编程的呢?非常喜欢Clojure
关于clojurescala和monad
clojure这语言真不错一直不习惯immutability
q*c
发帖数: 9453
161
https://www.quandl.com/c/economics/gdp-as-share-of-world-gdp-at-ppp-by-
country

【在 l*y 的大作中提到】
: you are a loser. because you think China is winning the world. lol.
:
: example

h*i
发帖数: 3446
162
变量!=参数,你在说参数。我在说变量,变量=可以变化的量,IP依靠这个。
FP:一个量是不可变的。量和对象分开。一个对象可以现在是这个量,明天是另一个量
,但不是量本身在变,而是这个对象所指的量不同了。
吃饱的张三 != 挨饿的张三,FP承认这个简单的的真理。IP说要看情况。
所以IP复杂,FP简单。

函数

【在 d****i 的大作中提到】
: fp没有变量这一点从基本的数学上的函数定义来讲也是天理难容啊,比如数学中一个函数
: y = f(a, b, c)
: 这里a,b, c都是变量,放到C和Java里面对应的就是函数和方法的args。你一个没有变
: 量的东东还好意思出来混,这不是扯淡吗。

d****i
发帖数: 4809
163
又在扯,不用绕圈子偷换概念,数学上一个函数有自变量和应变量,在
y=f(a, b, c)
中自变量就是a,b,c,都可以被赋以任何在自变量定义域内的值,y就是应变量。数学上
所有东西到处都是变量,没有变量哪里来的微积分,代数,几何这些理论?

【在 h*i 的大作中提到】
: 变量!=参数,你在说参数。我在说变量,变量=可以变化的量,IP依靠这个。
: FP:一个量是不可变的。量和对象分开。一个对象可以现在是这个量,明天是另一个量
: ,但不是量本身在变,而是这个对象所指的量不同了。
: 吃饱的张三 != 挨饿的张三,FP承认这个简单的的真理。IP说要看情况。
: 所以IP复杂,FP简单。
:
: 函数

h*i
发帖数: 3446
164
所以绝大部分人觉得数学复杂,到处是变量,搞不懂。

【在 d****i 的大作中提到】
: 又在扯,不用绕圈子偷换概念,数学上一个函数有自变量和应变量,在
: y=f(a, b, c)
: 中自变量就是a,b,c,都可以被赋以任何在自变量定义域内的值,y就是应变量。数学上
: 所有东西到处都是变量,没有变量哪里来的微积分,代数,几何这些理论?

h*i
发帖数: 3446
165
你看懂我写的没有?看不懂就是在扯?呵呵。

【在 d****i 的大作中提到】
: 又在扯,不用绕圈子偷换概念,数学上一个函数有自变量和应变量,在
: y=f(a, b, c)
: 中自变量就是a,b,c,都可以被赋以任何在自变量定义域内的值,y就是应变量。数学上
: 所有东西到处都是变量,没有变量哪里来的微积分,代数,几何这些理论?

h*i
发帖数: 3446
166
感觉鸡同鸭讲啊。呵呵。居然以为我说没有变量就是没有参数。这水平低得也不简单了
啊。

【在 h*i 的大作中提到】
: 你看懂我写的没有?看不懂就是在扯?呵呵。
T*******x
发帖数: 8565
167
你认为fp和structural programming 是什么关系?

【在 h*i 的大作中提到】
: 我也是这个看法。
: FP更接近人的思维的本质,而IP更接近机器的实现。所以细节用IP,大方向用FP。
: OOP的确是可以用在FP里面,不矛盾,比如Clojure的protocol啥的。

h*i
发帖数: 3446
168
structural programming =》 不准goto
functional programming =》 不准赋值
是应用程序语言逐步远离机器的历程上的不同阶段。
最终目的地就是自然语言?这倒是可以讨论讨论。

【在 T*******x 的大作中提到】
: 你认为fp和structural programming 是什么关系?
d****i
发帖数: 4809
169
不要回避基本的中学数学,这个变量的道理连很多小学生都知道。说到底FP既不符合基
本的数学原理,也不符合人的思维,更不符合计算机基本工作原理和冯诺依曼体系架构
,所以根本就是joke。

【在 h*i 的大作中提到】
: 你看懂我写的没有?看不懂就是在扯?呵呵。
b*******g
发帖数: 603
170
你写个方法, f(x), 然后调用f(1),不叫赋值?对参数赋值也叫赋值。fp的特征是没有
side effect而已。

【在 h*i 的大作中提到】
: structural programming =》 不准goto
: functional programming =》 不准赋值
: 是应用程序语言逐步远离机器的历程上的不同阶段。
: 最终目的地就是自然语言?这倒是可以讨论讨论。

相关主题
functional programming why?Haskell很难学。。
vert.x平台上的新东西很让人兴奋阿functional programming?
怎么这里这么多人学python有没有喜欢haskell的同学
h*i
发帖数: 3446
171
说来说去,就是车轱辘话,“变量小学就学了, 变量是冯诺依曼体系架构基本的原理
”,blah blah. 好像在说什么大家不知道的真理一样。而我的论点是,在已经知道上
述论点的基础上,我认为:
1. 计算机语言的变量需要学,不是程序员想象的那么直观。
2. 应用程序语言发展的趋势就是逐步远离机器实现细节,而逐步接近人自然具有不需
要学的功能。
你搞了半天也没有什么论据来说我的论点如何不对了。讨论不在一个层面上,没有太多
意思。
betterbug试图举例说明FP不符合人的思维,结果这个例子正好说明FP的思维是人们不
用学的自然思维。饱人不同于饿人,所以大家都想做饱人。如果饱人和饿人一样的,那
就不给你吃饭好了,反正都一样的。呵呵。

【在 d****i 的大作中提到】
: 不要回避基本的中学数学,这个变量的道理连很多小学生都知道。说到底FP既不符合基
: 本的数学原理,也不符合人的思维,更不符合计算机基本工作原理和冯诺依曼体系架构
: ,所以根本就是joke。

b*******g
发帖数: 603
172
你这话说的,一天吃三顿饭,撒五泡尿,都要变身,人民群众能接受才怪了。
FP是怎么建模的?就是克隆一个把原来的干掉,这是科幻片呀。

【在 h*i 的大作中提到】
: 说来说去,就是车轱辘话,“变量小学就学了, 变量是冯诺依曼体系架构基本的原理
: ”,blah blah. 好像在说什么大家不知道的真理一样。而我的论点是,在已经知道上
: 述论点的基础上,我认为:
: 1. 计算机语言的变量需要学,不是程序员想象的那么直观。
: 2. 应用程序语言发展的趋势就是逐步远离机器实现细节,而逐步接近人自然具有不需
: 要学的功能。
: 你搞了半天也没有什么论据来说我的论点如何不对了。讨论不在一个层面上,没有太多
: 意思。
: betterbug试图举例说明FP不符合人的思维,结果这个例子正好说明FP的思维是人们不
: 用学的自然思维。饱人不同于饿人,所以大家都想做饱人。如果饱人和饿人一样的,那

h*i
发帖数: 3446
173
就加个“乱”字好了。不准乱赋值,满意了吧?
我的FP的定义更严格一些,是在语言层面用immutablility来实现没有side effect。程
序员是不能被信任的,如果immutability只是可选项,那肯定会乱套。所以Scala在我
眼中不是FP language,因为它不能阻止人把它当IP语言用。

【在 b*******g 的大作中提到】
: 你写个方法, f(x), 然后调用f(1),不叫赋值?对参数赋值也叫赋值。fp的特征是没有
: side effect而已。

h*i
发帖数: 3446
174
人们群众是这么理解的,“饱人和饿人不一样,我要做饱人,不要做饿人。”
FP概念上也就这么干的啊。无非实现上不用克隆而已,能重用的部分就重用嘛,要节约。

【在 b*******g 的大作中提到】
: 你这话说的,一天吃三顿饭,撒五泡尿,都要变身,人民群众能接受才怪了。
: FP是怎么建模的?就是克隆一个把原来的干掉,这是科幻片呀。

q*c
发帖数: 9453
175
先说说自己是不是左派吧, 让我多个数据点。hehe

【在 h*i 的大作中提到】
: 说来说去,就是车轱辘话,“变量小学就学了, 变量是冯诺依曼体系架构基本的原理
: ”,blah blah. 好像在说什么大家不知道的真理一样。而我的论点是,在已经知道上
: 述论点的基础上,我认为:
: 1. 计算机语言的变量需要学,不是程序员想象的那么直观。
: 2. 应用程序语言发展的趋势就是逐步远离机器实现细节,而逐步接近人自然具有不需
: 要学的功能。
: 你搞了半天也没有什么论据来说我的论点如何不对了。讨论不在一个层面上,没有太多
: 意思。
: betterbug试图举例说明FP不符合人的思维,结果这个例子正好说明FP的思维是人们不
: 用学的自然思维。饱人不同于饿人,所以大家都想做饱人。如果饱人和饿人一样的,那

h*i
发帖数: 3446
176
I am an republican and a card carrying NRA member. I used to be board master
in qiangyou.org

【在 q*c 的大作中提到】
: 先说说自己是不是左派吧, 让我多个数据点。hehe
h*i
发帖数: 3446
177
Besides, I don't trust programmers to do that right thing. You should
already know that I am not 左派.

【在 q*c 的大作中提到】
: 先说说自己是不是左派吧, 让我多个数据点。hehe
f******x
发帖数: 98
178
你先解释一下为什么 x = x + 1 符合数学原理?
你讲的是我理解的数学吗?
禁止赋值才符合数学原因,case closed

【在 d****i 的大作中提到】
: 不要回避基本的中学数学,这个变量的道理连很多小学生都知道。说到底FP既不符合基
: 本的数学原理,也不符合人的思维,更不符合计算机基本工作原理和冯诺依曼体系架构
: ,所以根本就是joke。

b*******g
发帖数: 603
179
OOP说,人还是同一个人,饿吃饭变饱了。FP说,饿人消失了,出现了一个饱人。饿人
和饱人只是两个状态,互相没有关系。
人民群众理解的是哪个?你缺乏的是常识。

约。

【在 h*i 的大作中提到】
: 人们群众是这么理解的,“饱人和饿人不一样,我要做饱人,不要做饿人。”
: FP概念上也就这么干的啊。无非实现上不用克隆而已,能重用的部分就重用嘛,要节约。

h*i
发帖数: 3446
180
Nice one. x = x + 1 is very confusing for non-programmers.

【在 f******x 的大作中提到】
: 你先解释一下为什么 x = x + 1 符合数学原理?
: 你讲的是我理解的数学吗?
: 禁止赋值才符合数学原因,case closed

相关主题
从今天开始起,学C++!大牛们比较下 Node, Go, Scala
scala写个loop老难了有因为Spark而学习Scala的吗?
criticism of Scalacoursera 上scala的课上完了,作业也做完了。说说感想
d****i
发帖数: 4809
181
你读了我上面的帖子了吗?一个简单的三元函数
y=f(a,b,c)
让a=1, b=2, c=3,这个不是赋值给自变量是什么?

【在 f******x 的大作中提到】
: 你先解释一下为什么 x = x + 1 符合数学原理?
: 你讲的是我理解的数学吗?
: 禁止赋值才符合数学原因,case closed

f******x
发帖数: 98
182
这是狡辩,FP当然有函数和自变量,应变量。FP只是禁止变量赋值,在IP里,你先说 a
= 1, 过会又说a = 2, 那我问你a到底是几呀?你只好说看情况。在FP里,饱人永远是
饱人,饿人永远是饿人,简单明了。

函数

【在 d****i 的大作中提到】
: fp没有变量这一点从基本的数学上的函数定义来讲也是天理难容啊,比如数学中一个函数
: y = f(a, b, c)
: 这里a,b, c都是变量,放到C和Java里面对应的就是函数和方法的args。你一个没有变
: 量的东东还好意思出来混,这不是扯淡吗。

b*******g
发帖数: 603
183
OO是以物理建模的,物理符合人类的感知,数学才是抽象的描述。这就是为啥 OOP比
FP容易理解的原因。虽然物理和数学不矛盾。物理说物体速度是可变的,你不是连这个
都要否认吧。

【在 f******x 的大作中提到】
: 你先解释一下为什么 x = x + 1 符合数学原理?
: 你讲的是我理解的数学吗?
: 禁止赋值才符合数学原因,case closed

f******x
发帖数: 98
184
这个在FP里没问题呀?你要是过会又说 a = 2, 那你刚才说a = 1是在撒谎吗?

【在 d****i 的大作中提到】
: 你读了我上面的帖子了吗?一个简单的三元函数
: y=f(a,b,c)
: 让a=1, b=2, c=3,这个不是赋值给自变量是什么?

j*****l
发帖数: 37
185
关键还是效率问题吧。
f******x
发帖数: 98
186
胡扯,物理里面也没有 x = x + 1 这种nonsense

【在 b*******g 的大作中提到】
: OO是以物理建模的,物理符合人类的感知,数学才是抽象的描述。这就是为啥 OOP比
: FP容易理解的原因。虽然物理和数学不矛盾。物理说物体速度是可变的,你不是连这个
: 都要否认吧。

d****i
发帖数: 4809
187
你没有得到它,假如这个函数再加入一个时间的变量t
y=f(a,b,c,t)
然后t=t1的时候a=1,t=t2的时候变为a=2,这个完全成立。所有函数的变量在任何时间
和空间中都是可变的,这才是数学和物理的定义。

【在 f******x 的大作中提到】
: 这个在FP里没问题呀?你要是过会又说 a = 2, 那你刚才说a = 1是在撒谎吗?
b*******g
发帖数: 603
188
操,物理里说我的速度为 0静止, 作用力使我速度为 2. 赤裸裸打脸呀。

【在 f******x 的大作中提到】
: 胡扯,物理里面也没有 x = x + 1 这种nonsense
b*******g
发帖数: 603
189
说得很好,物理是个四维空间物体属性可变的建模,不是状态机的建模。你可以说两者
数学
上等价,但物理书怎么描述的才是人类的常识。

【在 d****i 的大作中提到】
: 你没有得到它,假如这个函数再加入一个时间的变量t
: y=f(a,b,c,t)
: 然后t=t1的时候a=1,t=t2的时候变为a=2,这个完全成立。所有函数的变量在任何时间
: 和空间中都是可变的,这才是数学和物理的定义。

f******x
发帖数: 98
190
FP说,变量赋值不是必需的。这个世界根本上是可以完全用常量描述,在一个确定的时
间所见的状态都是常量。时间变化只要理解成不断产生新的常量就可以了。哲学上也没
问题,人不可能两次踏入一个河流。FP现实的好处是简单明了,适合并发。
OOP里的变量不是必需的。按照精简原则,不是必须的就要砍掉。这里只是基本原则上
的讨论,实际中当然要考虑各种因素,FP不一定最合适。想我在工作上也只能用python
,但在原则上FP makes a heck lot of more sense than OOP.

【在 b*******g 的大作中提到】
: OO是以物理建模的,物理符合人类的感知,数学才是抽象的描述。这就是为啥 OOP比
: FP容易理解的原因。虽然物理和数学不矛盾。物理说物体速度是可变的,你不是连这个
: 都要否认吧。

相关主题
板上的高人们能给科普比较functional programming language么关于clojure
Clojure/West的会场几乎没有什么中国人clojure这语言真不错
这年头有哪几个公司是用函数式编程的呢?非常喜欢Clojure
b*******g
发帖数: 603
191
我说过数学上等价,但是物理书怎么描述显示了人类的常识。FP不是错误的,但是是反
人类常识的,所以大众不了。

python

【在 f******x 的大作中提到】
: FP说,变量赋值不是必需的。这个世界根本上是可以完全用常量描述,在一个确定的时
: 间所见的状态都是常量。时间变化只要理解成不断产生新的常量就可以了。哲学上也没
: 问题,人不可能两次踏入一个河流。FP现实的好处是简单明了,适合并发。
: OOP里的变量不是必需的。按照精简原则,不是必须的就要砍掉。这里只是基本原则上
: 的讨论,实际中当然要考虑各种因素,FP不一定最合适。想我在工作上也只能用python
: ,但在原则上FP makes a heck lot of more sense than OOP.

b*******g
发帖数: 603
192
什么精简原则本来就是你一厢情愿加上的。人类有什么语言是能简则简吗?你的前提是
错误的,结论正确与否都没有意义。

python

【在 f******x 的大作中提到】
: FP说,变量赋值不是必需的。这个世界根本上是可以完全用常量描述,在一个确定的时
: 间所见的状态都是常量。时间变化只要理解成不断产生新的常量就可以了。哲学上也没
: 问题,人不可能两次踏入一个河流。FP现实的好处是简单明了,适合并发。
: OOP里的变量不是必需的。按照精简原则,不是必须的就要砍掉。这里只是基本原则上
: 的讨论,实际中当然要考虑各种因素,FP不一定最合适。想我在工作上也只能用python
: ,但在原则上FP makes a heck lot of more sense than OOP.

f******x
发帖数: 98
193
你只是定义了一个 a(t) 的函数,这个在FP里的实现和物理概念是一样的。在IP里,你
如果用赋值,那好出在哪里?又怎么接近物理了?物理里的变量都是函数,没有自发乱
变的(暂不考虑随机变量)。你不会argue IP里变量是随机的吧?

【在 d****i 的大作中提到】
: 你没有得到它,假如这个函数再加入一个时间的变量t
: y=f(a,b,c,t)
: 然后t=t1的时候a=1,t=t2的时候变为a=2,这个完全成立。所有函数的变量在任何时间
: 和空间中都是可变的,这才是数学和物理的定义。

f******x
发帖数: 98
194
你的人类常识,不是数学,不是物理,是什么常识?

【在 b*******g 的大作中提到】
: 我说过数学上等价,但是物理书怎么描述显示了人类的常识。FP不是错误的,但是是反
: 人类常识的,所以大众不了。
:
: python

b*******g
发帖数: 603
195
什么叫做怎么符合物理?物理书里充斥了速度变化这个概念。这个就叫做常识描述。我
们中学物理书,甚至不提时间,连这个你也想否认?一个简单的概念都要到哲学的高度
,你指望多少人能理解?

【在 f******x 的大作中提到】
: 你只是定义了一个 a(t) 的函数,这个在FP里的实现和物理概念是一样的。在IP里,你
: 如果用赋值,那好出在哪里?又怎么接近物理了?物理里的变量都是函数,没有自发乱
: 变的(暂不考虑随机变量)。你不会argue IP里变量是随机的吧?

f******x
发帖数: 98
196
不要偷换概念,用时间作为argument的函数在FP里有什么问题?核心问题是为什么需要
赋值?FP
说不需要赋值,你说物理需要赋值。我说只是你的物理需要赋值,真正的数学物理只需
要函数,无需赋值。数学物理里面没有x = x + 1这种玩意儿。
另外函数只是映射关系,和赋值无关。硬说call函数就是赋值,纯属狡辩

【在 b*******g 的大作中提到】
: 什么叫做怎么符合物理?物理书里充斥了速度变化这个概念。这个就叫做常识描述。我
: 们中学物理书,甚至不提时间,连这个你也想否认?一个简单的概念都要到哲学的高度
: ,你指望多少人能理解?

f******x
发帖数: 98
197
你的物理对这个过程的描述是something like x = x +1?
时间呢,力呢?你把所有的方程写下来,看有没有 x = x + 1 这种nonsense,

【在 b*******g 的大作中提到】
: 操,物理里说我的速度为 0静止, 作用力使我速度为 2. 赤裸裸打脸呀。
b*******g
发帖数: 603
198
什么叫做偷换概念?物理书提到的就是常识,中学物理提了速度变化,没提时间轴。你
有本事改了教科书再来辩。

【在 f******x 的大作中提到】
: 不要偷换概念,用时间作为argument的函数在FP里有什么问题?核心问题是为什么需要
: 赋值?FP
: 说不需要赋值,你说物理需要赋值。我说只是你的物理需要赋值,真正的数学物理只需
: 要函数,无需赋值。数学物理里面没有x = x + 1这种玩意儿。
: 另外函数只是映射关系,和赋值无关。硬说call函数就是赋值,纯属狡辩

f******x
发帖数: 98
199
Ockham's razor, 不会没听见过吧。虽然在语言上不见得适用,也可以参考。

【在 b*******g 的大作中提到】
: 什么精简原则本来就是你一厢情愿加上的。人类有什么语言是能简则简吗?你的前提是
: 错误的,结论正确与否都没有意义。
:
: python

f******x
发帖数: 98
200
速度是可以自发变化的吗?你学的物理是这样的吗?

【在 b*******g 的大作中提到】
: 什么叫做偷换概念?物理书提到的就是常识,中学物理提了速度变化,没提时间轴。你
: 有本事改了教科书再来辩。

相关主题
scala和monadvert.x平台上的新东西很让人兴奋阿
一直不习惯immutability怎么这里这么多人学python
functional programming why?Haskell很难学。。
d****i
发帖数: 4809
201
Again, 你没有得到它
At t=t0, x = x0 (asm: MOV R0, #x0)
At t=t0+delta_t, x = x0+1 (asm: ADD R0, 1)
So in real computer programming languages such as C/C++/Java, it is
expressed as
x=x+1 (or simply x++)
哪里有什么问题?

【在 f******x 的大作中提到】
: 你的物理对这个过程的描述是something like x = x +1?
: 时间呢,力呢?你把所有的方程写下来,看有没有 x = x + 1 这种nonsense,

h*i
发帖数: 3446
202
fp与oop不对立,是兼容的。
现实中,我们知道一个饿人与一个饱人是同一个人,靠的是这个人独特的属性,SSN,
等等。FP用同样的办法。而IP,比如JAVA,是靠同一个内存地址来知道这是同一个
object.

★ 发自iPhone App: ChineseWeb 8.7

【在 b*******g 的大作中提到】
: OOP说,人还是同一个人,饿吃饭变饱了。FP说,饿人消失了,出现了一个饱人。饿人
: 和饱人只是两个状态,互相没有关系。
: 人民群众理解的是哪个?你缺乏的是常识。
:
: 约。

h*i
发帖数: 3446
203
所以IP语言是用计算机的实现特性来区分个体的,更接近机器,一般人不容易理解,因
为不懂什么内存地址啥的。
FP对个体的区分与人是一样的,用属性,而不是机器地址。

★ 发自iPhone App: ChineseWeb 8.7
★ 发自iPhone App: ChineseWeb 8.7

【在 h*i 的大作中提到】
: fp与oop不对立,是兼容的。
: 现实中,我们知道一个饿人与一个饱人是同一个人,靠的是这个人独特的属性,SSN,
: 等等。FP用同样的办法。而IP,比如JAVA,是靠同一个内存地址来知道这是同一个
: object.
:
: ★ 发自iPhone App: ChineseWeb 8.7

h*i
发帖数: 3446
204
FP更远离机器,是不是效率一定低?不一定。比如要看一个复杂数据结构发生了变化没
有,
FP只需检查是否reference与原来不同了,不用遍历这个数据结构。

★ 发自iPhone App: ChineseWeb 8.7
★ 发自iPhone App: ChineseWeb 8.7

【在 h*i 的大作中提到】
: 所以IP语言是用计算机的实现特性来区分个体的,更接近机器,一般人不容易理解,因
: 为不懂什么内存地址啥的。
: FP对个体的区分与人是一样的,用属性,而不是机器地址。
:
: ★ 发自iPhone App: ChineseWeb 8.7
: ★ 发自iPhone App: ChineseWeb 8.7

f******x
发帖数: 98
205
问题是,你不知道x到底是多少。还得防备别的thread改它的值。
FP主张不用赋值表达同样的逻辑,而且所有的variable都是immutable,更清楚明了。
前面说过赋值不是必须的,没有赋值对世界的描述也可以是完全自洽和完备的。数学物
理里面是没有x=x+1这种东西的。

【在 d****i 的大作中提到】
: Again, 你没有得到它
: At t=t0, x = x0 (asm: MOV R0, #x0)
: At t=t0+delta_t, x = x0+1 (asm: ADD R0, 1)
: So in real computer programming languages such as C/C++/Java, it is
: expressed as
: x=x+1 (or simply x++)
: 哪里有什么问题?

z****e
发帖数: 54598
206
还在硬拗
说说record和class吧
这两个其实fp和oop都不用
虽然看上去很像
先说fp
fp的理念是information,不是对象,也谈不上class,没有变量
写过clj应该知道,clj不提倡你用什么record
因为这个东西长得像class,你应该尽量把information放入map
这样不会隐藏其内部结构,还有list,就像json一样
所以record的存在很尴尬,因为不提倡用,你不应该写出来
这是一,其次record即便要写,你也要写成json那样
各种扁平化,不依赖不继承,尽量immutable
从本质上说只是一个information的集合体
不是现实中对象的映射,所以说record是java里面的class纯粹就是生搬硬套
这么理解的话,显然oop的习惯影响了fp,仅仅因为都有new就说这两个是一样的
这个是错误的,fp的information的概念没有形成
其次oop
oop虽然有class,但是oop也已经逐步摆脱new这种做法了
之所以摆脱,一个重要原因就是func和entity的分离
spring就是管理func的工具,包装func的object缺省设置是singleton
生命周期是贯穿整个application全部,一开始就会建立
然后一直存在,把这部分的object理解成是func的name space并无不可
虽然name space跟object概念不一样
其本质就跟某人用static func是一样的
但是本质一样,实现不一样,用static是严重错误的
因为static所处的内存区域不一样,方法区理论上只是heap的一部分
可能单独存在,可能不单独存在,但是不管怎样,这一块比heap整体而言偏小
所以不应该无节制滴使用static,否则你那个方法区划分出来有p用
只有一些常用的方法放到这个区域中去,static 变量更是应该节制
否则很快你的memory就会抱怨,然后一般的object的new
应该管理起来,否则很容易造成内存的泄漏,至少用上factory
在写app的时候,class的表现更为明显,更像是一个现实物体的映射
而在写web的时候,则很多时候映射到了form中去,就变成单纯的信息载体
但是这不是class的全部意义,这是一个阉割版的class,这么做简单
但是并不代表这么做是class的全部,所以有动态代理等操作
只是很多人用不到而已,而且class在系统中存在几乎都是以变量的形式存在
变量就不是information了,information只是其property的value而已
summary一下
fp里面的数据结构本质是information的载体,information是immutable滴
所以数据结构本身也可以immutable
oop里面ojbect以及变量本质是现实世界物体的一个缩影,所以变化起来很正常
information只是其property的一个value而已
所以从定义上说,这就不是一个东西,至于怎么实现,怎么写,new什么
那都是细节,跟概念本身无关,人家也尽量加以区分了,还死活要说成一个东西
如果是class,语言本身会告诉你这是class,其他所有语言都没有给class另外命名
何苦非要把一个不是class的东西说成class呢?
只能说明从概念上并没有理解这到底是一个什么东西
只是觉得像class,所以就以为是class了,oop没有写好,fp也受到影响
z****e
发帖数: 54598
207
单纯的fp和单纯的oop效率差不多,从机器执行上看
都要绕好多层,现在fp的效率优化是建立在oop引入异步的基础之上的
确切点说是lambda,所以java才考虑加入lambda
这个看明白了rxjava就很容易理解,而不会被fp zealot所忽悠

【在 j*****l 的大作中提到】
: 关键还是效率问题吧。
z****e
发帖数: 54598
208
物理常识是object
数学常识是变量
fp常识是func和information
显然fp跟数学物理常识格格不入

【在 f******x 的大作中提到】
: 你的人类常识,不是数学,不是物理,是什么常识?
z****e
发帖数: 54598
209
数学里面怎么会没有x=x+1呢?
当然有,无解而已了
数学本质是变量,fp根本就否认变量,而强调information
物理本质是object,fp根本就否认object,而强调information的载体
怎么看fp都跟数学物理无关

【在 f******x 的大作中提到】
: 问题是,你不知道x到底是多少。还得防备别的thread改它的值。
: FP主张不用赋值表达同样的逻辑,而且所有的variable都是immutable,更清楚明了。
: 前面说过赋值不是必须的,没有赋值对世界的描述也可以是完全自洽和完备的。数学物
: 理里面是没有x=x+1这种东西的。

z****e
发帖数: 54598
210
是不对立
但是对于同一个东西的认知上,是南辕北辙的
典型的如record vs class
从实现上是一个东西
但是record是信息的载体,本身也可以理解成是信息
而class则是现实中物体的映射,信息只是其属性值,或者说状态而已
这种认识是互相冲突的
这种认识同样也存在于protocol vs interface上
虽然实现起来好像是一个东西
但其实不是一个东西
所以主次不分明的话,会互相干扰
最后oop没写好,fp也弄不好

【在 h*i 的大作中提到】
: fp与oop不对立,是兼容的。
: 现实中,我们知道一个饿人与一个饱人是同一个人,靠的是这个人独特的属性,SSN,
: 等等。FP用同样的办法。而IP,比如JAVA,是靠同一个内存地址来知道这是同一个
: object.
:
: ★ 发自iPhone App: ChineseWeb 8.7

相关主题
functional programming?scala写个loop老难了
有没有喜欢haskell的同学criticism of Scala
从今天开始起,学C++!大牛们比较下 Node, Go, Scala
z****e
发帖数: 54598
211
average,平均的概念就是变量
这个东西肯定不是属性,你就是不敢面对绝大多数人都理解并掌握average的事实
你说你小时候不懂,鬼知道是不是真的,就算是真的
这个东西还要你妈妈来辅导,这也是奇芭一朵
你自身经验不能推广到其他所有人

【在 h*i 的大作中提到】
: 有一个变量a, 另有一变量b, 请写出代码, 让变量a和b的值交换。
: 这就是第一次上编程课的作业,你非要说人人都会做这个,这是常识,我也无话可说,
: 看来我是比一般人要笨一些。嗯。
: 我都说了,OOP人们觉得更简单,就是因为OOP讲的变量是总是某个东西的性质,而不是
: 独立的一个抽象概念,叫做变量,这样的东西在物理现实中是不存在的。
: 而一个人吃了饭,从一个饿人变成了一个饱人,饿人和饱人是不一样的,我要做饱人,
: 不要做饿人,这个人人都懂吧?

f******x
发帖数: 98
212
你可真扯,你java里写的x=x+1是打算无解的吗?
我没听说物理的本质是object, 数学的本质是变量,数学物理的本质,我不知道也不敢
乱讲,但肯定不是你说的object和变量。您继续扯,我不参与了。

【在 z****e 的大作中提到】
: 数学里面怎么会没有x=x+1呢?
: 当然有,无解而已了
: 数学本质是变量,fp根本就否认变量,而强调information
: 物理本质是object,fp根本就否认object,而强调information的载体
: 怎么看fp都跟数学物理无关

z****e
发帖数: 54598
213
你是想说赋值嘛
那最简单的数学的应用题
列方程解应用题的时候
你难道没有给x赋过值?
显然是有嘛
物理的本质你要是不敢讲那就成宗教了
数学的本质亦然,这不敢讲那不敢讲
说明你已经开始从心里worship这个东西
你已经成为教徒了

【在 f******x 的大作中提到】
: 你可真扯,你java里写的x=x+1是打算无解的吗?
: 我没听说物理的本质是object, 数学的本质是变量,数学物理的本质,我不知道也不敢
: 乱讲,但肯定不是你说的object和变量。您继续扯,我不参与了。

z****e
发帖数: 54598
214


【在 f******x 的大作中提到】
: 你可真扯,你java里写的x=x+1是打算无解的吗?
: 我没听说物理的本质是object, 数学的本质是变量,数学物理的本质,我不知道也不敢
: 乱讲,但肯定不是你说的object和变量。您继续扯,我不参与了。

b*******g
发帖数: 603
215
当你对简单的实例没法反驳,拉出一些难以理解的大名词的时候,你已经是为辩而辨了
。中学物理有没有谈速度可变,有没有引入时间,这都是无可争议的。你还要否认变量
才是人类常识的话需要先修改教科书。常识的东西本来就不要求最简,人类语言就是明
证,数学才会要求最简。说来说去你只是证明 FP抽象,数学,但不符合常识。

【在 f******x 的大作中提到】
: Ockham's razor, 不会没听见过吧。虽然在语言上不见得适用,也可以参考。
p******h
发帖数: 1783
216
没有赋值的话,采集的数据如何存储?
就说你每隔一小时测一下体重,然后把一天的体重用图画出来,如何实现?

【在 f******x 的大作中提到】
: 问题是,你不知道x到底是多少。还得防备别的thread改它的值。
: FP主张不用赋值表达同样的逻辑,而且所有的variable都是immutable,更清楚明了。
: 前面说过赋值不是必须的,没有赋值对世界的描述也可以是完全自洽和完备的。数学物
: 理里面是没有x=x+1这种东西的。

h*i
发帖数: 3446
217
不赋值,不代表不创造新的值。
这个采集的数据的CASE, 如果不准改数据,只有采集和画图的话,IP和FP是一模一样的
,都是一个数据点创造一个新值,存起来,画图的时候读。
如果可以改数据,IP和FP就不一样了。IP想改哪个就改哪个,但是,一旦一个数据被改
了,以前的数据就被抹掉了。FP要改数据就得创造一个新值,老数据还在。
Clojure有一个FP数据库产品,叫datomic,就是这样的,immutable data, so history
is free and forever. 有人用在银行的应用里面.

【在 p******h 的大作中提到】
: 没有赋值的话,采集的数据如何存储?
: 就说你每隔一小时测一下体重,然后把一天的体重用图画出来,如何实现?

h*i
发帖数: 3446
218
你上面能准确描述出FP和IP的区别,但还会问出这样的问题,说明要真的理解
immutable data, 光说不干是不够的,必须要自己用过。
所以很多程序员学Clojure都有一个unlearn programming的过程,就是发现自己不会
programming了,什么简单的事都不会干了。
等过了这个坎发现,其实很简单的,真他妈简单,学这个还是很值得的,怎么早点没有
学?

【在 p******h 的大作中提到】
: 没有赋值的话,采集的数据如何存储?
: 就说你每隔一小时测一下体重,然后把一天的体重用图画出来,如何实现?

o**o
发帖数: 3964
219
日 一群赋值和等于都分不清的人讨论什么变量常量,尼玛秀智商下线
n*w
发帖数: 3393
220
看到时是很无语。

【在 o**o 的大作中提到】
: 日 一群赋值和等于都分不清的人讨论什么变量常量,尼玛秀智商下线
相关主题
有因为Spark而学习Scala的吗?Clojure/West的会场几乎没有什么中国人
coursera 上scala的课上完了,作业也做完了。说说感想这年头有哪几个公司是用函数式编程的呢?
板上的高人们能给科普比较functional programming language么关于clojure
b*******s
发帖数: 5216
221
most of them are just doing java
some facts

【在 z****e 的大作中提到】
: 是吗?也许总量会上升
: 但是对于数学要求会越来越高
: 变量都理解不了的来搞,应该无法胜任
: 不过人类总是会进化的嘛,总体是越来越聪明的
: 变量越来越容易理解是大势所趋

b*******s
发帖数: 5216
222
fortran is still alive.
basic was as popular as java

【在 d****i 的大作中提到】
: 你这个是乱讲,fp在几十年前Lisp时候就有了,可是从来未被工业界接纳过,你也不想
: 想是什么原因,难道计算机工业界的人都是傻子?其实很好判断,一个语言能够经受住
: 历史的考验就说明牛叉,你看C, C++, Java,JavaScript在各自的领域莫不是如此。但
: 是和C同时代的Pascal, Fortran, Basic, Cobol等等都已经几乎绝迹了。FP则是干脆几
: 十年来连Pascal, Fortran, Basic, Cobol的地位都从来没有过。

b*******s
发帖数: 5216
223
very decent point

【在 h*i 的大作中提到】
: structural programming =》 不准goto
: functional programming =》 不准赋值
: 是应用程序语言逐步远离机器的历程上的不同阶段。
: 最终目的地就是自然语言?这倒是可以讨论讨论。

z****e
发帖数: 54598
224
笑了
这个一看就知道是怎么回事了
关于形式上的东西
需要看context,懒得看,直接借题发挥就好了
就像那个pbscript,少打了一个s,一个typo而已了
但是关于变量常量的探索是本质上探索
这个并不依赖于形式
另外,hci一直没有把immutable给说清楚
我怀疑他自己是不是懂为什么需要immutable
因为一旦不immutable,fp很快就会开始传递状态
而造成大面积的重复修改灾难,hci始终没有说到这个
而是不停滴否认变量存在的意义
一开始就有一个陷阱,挖好了,他掉了进去,一直就没办法爬出来
最后开始否定变量存在的意义,这是很搞笑的

【在 o**o 的大作中提到】
: 日 一群赋值和等于都分不清的人讨论什么变量常量,尼玛秀智商下线
x****u
发帖数: 44466
225
问题是这里混的都是工业界的啊,计算和存储都是换算成银子的,老板肯定要压榨到最
后一滴。

【在 c******o 的大作中提到】
: 正是因为现代计算储存能力的大跃进和并行分布的崛起才导致了fp的流行。你说的没错
: :)

c******o
发帖数: 1277
226
你老板把钱省在硬件上也太搞笑了。
aws为啥崛起,因为省钱?
每年aws都是要把instance type 升一级,再减价的
事实上,我们用了scala,云计算以后,依靠horizontal scaling省了硬件,软件的可
靠度/效率也提高了很多。
其实大部分人在fp/云计算的转移上都是在薪酬和技术人才上头疼。

【在 x****u 的大作中提到】
: 问题是这里混的都是工业界的啊,计算和存储都是换算成银子的,老板肯定要压榨到最
: 后一滴。

h*i
发帖数: 3446
227
说得很对。人才是最头疼的问题。你们上哪儿找技术人才啊?

【在 c******o 的大作中提到】
: 你老板把钱省在硬件上也太搞笑了。
: aws为啥崛起,因为省钱?
: 每年aws都是要把instance type 升一级,再减价的
: 事实上,我们用了scala,云计算以后,依靠horizontal scaling省了硬件,软件的可
: 靠度/效率也提高了很多。
: 其实大部分人在fp/云计算的转移上都是在薪酬和技术人才上头疼。

x****u
发帖数: 44466
228
云计算省钱和FP有毛关系,再说就算AWS也不是免费的,你用的多自然价钱高。
现在用fp的场合一大目的是减少代码,这样能省工资减少三哥团队介入。

【在 c******o 的大作中提到】
: 你老板把钱省在硬件上也太搞笑了。
: aws为啥崛起,因为省钱?
: 每年aws都是要把instance type 升一级,再减价的
: 事实上,我们用了scala,云计算以后,依靠horizontal scaling省了硬件,软件的可
: 靠度/效率也提高了很多。
: 其实大部分人在fp/云计算的转移上都是在薪酬和技术人才上头疼。

c******o
发帖数: 1277
229
谁说没有关系?
我们选 play spark的最大原因就是因为 fp 编reactive/async/distribute/autoscale
的容易。
事实上也达到了要求。async,reactive,distibuted的资源利用率高。容错性强。易于
扩展。你以为都是吹牛?
最近刚刚经历了一个700%load jump到 about 1M rpm
非常smooth,虽然主要的concern在mongodb,和一些3rd party service, 但是其他方面
表现的非常完美。
由于autoscale,整个过程几乎可以用boring来形容,总结的时候scala/play就占一席地位
减少代码绝对不是我们的要求,事实上,刚开始代码加注释比java多。
现在也就是少一些而已。

【在 x****u 的大作中提到】
: 云计算省钱和FP有毛关系,再说就算AWS也不是免费的,你用的多自然价钱高。
: 现在用fp的场合一大目的是减少代码,这样能省工资减少三哥团队介入。

p******h
发帖数: 1783
230
同样的case接着问,如果数据采集时出了错,事后修改怎么办?
FP是把原来错的数据打个标记,再建个新的同时标记去取代错的?

history

【在 h*i 的大作中提到】
: 不赋值,不代表不创造新的值。
: 这个采集的数据的CASE, 如果不准改数据,只有采集和画图的话,IP和FP是一模一样的
: ,都是一个数据点创造一个新值,存起来,画图的时候读。
: 如果可以改数据,IP和FP就不一样了。IP想改哪个就改哪个,但是,一旦一个数据被改
: 了,以前的数据就被抹掉了。FP要改数据就得创造一个新值,老数据还在。
: Clojure有一个FP数据库产品,叫datomic,就是这样的,immutable data, so history
: is free and forever. 有人用在银行的应用里面.

相关主题
clojure这语言真不错一直不习惯immutability
非常喜欢Clojurefunctional programming why?
scala和monadvert.x平台上的新东西很让人兴奋阿
h*i
发帖数: 3446
231
差不多吧。
现在硬件不值钱,所以FP兴起了。很自然的,人还是不爱麻烦自己去侍候机器的。

★ 发自iPhone App: ChineseWeb 8.7

【在 p******h 的大作中提到】
: 同样的case接着问,如果数据采集时出了错,事后修改怎么办?
: FP是把原来错的数据打个标记,再建个新的同时标记去取代错的?
:
: history

b*******g
发帖数: 603
232
我们的autoscale也很boring,这个实在说不上是fp的优点。甚至AWS的service都是
Java写的,你的autoscale也只不过调用而已。事实上只要做到stateless,autoscale
都很boring.

autoscale
地位

【在 c******o 的大作中提到】
: 谁说没有关系?
: 我们选 play spark的最大原因就是因为 fp 编reactive/async/distribute/autoscale
: 的容易。
: 事实上也达到了要求。async,reactive,distibuted的资源利用率高。容错性强。易于
: 扩展。你以为都是吹牛?
: 最近刚刚经历了一个700%load jump到 about 1M rpm
: 非常smooth,虽然主要的concern在mongodb,和一些3rd party service, 但是其他方面
: 表现的非常完美。
: 由于autoscale,整个过程几乎可以用boring来形容,总结的时候scala/play就占一席地位
: 减少代码绝对不是我们的要求,事实上,刚开始代码加注释比java多。

c******o
发帖数: 1277
233
关键是在volume spike/work with dead(crippled) 3rd party service/ease of
scaling/exhaust resource AMAP
上,scala/play都是真的给我们带来了很多benifit

autoscale

【在 b*******g 的大作中提到】
: 我们的autoscale也很boring,这个实在说不上是fp的优点。甚至AWS的service都是
: Java写的,你的autoscale也只不过调用而已。事实上只要做到stateless,autoscale
: 都很boring.
:
: autoscale
: 地位

x****u
发帖数: 44466
234
这话你横向对比还行,挑战java这个行业标准就不对了

autoscale
地位

【在 c******o 的大作中提到】
: 谁说没有关系?
: 我们选 play spark的最大原因就是因为 fp 编reactive/async/distribute/autoscale
: 的容易。
: 事实上也达到了要求。async,reactive,distibuted的资源利用率高。容错性强。易于
: 扩展。你以为都是吹牛?
: 最近刚刚经历了一个700%load jump到 about 1M rpm
: 非常smooth,虽然主要的concern在mongodb,和一些3rd party service, 但是其他方面
: 表现的非常完美。
: 由于autoscale,整个过程几乎可以用boring来形容,总结的时候scala/play就占一席地位
: 减少代码绝对不是我们的要求,事实上,刚开始代码加注释比java多。

b*******g
发帖数: 603
235
关于这方面你可以看看RxJava/Hystrix。并不是必需Scala才能做到resilience. 而且
就如我说的,类库才是第一生产力。相比之下,语言的feature太底层了。

【在 c******o 的大作中提到】
: 关键是在volume spike/work with dead(crippled) 3rd party service/ease of
: scaling/exhaust resource AMAP
: 上,scala/play都是真的给我们带来了很多benifit
:
: autoscale

c******o
发帖数: 1277
236
不明白你说我们挑战啥。
能写scala的一定能学Java,何况我们都是java出身
我们选了scala, 没选Java. 而且对自己的选择非常满意。
行业标准太虚无飘渺了

【在 x****u 的大作中提到】
: 这话你横向对比还行,挑战java这个行业标准就不对了
:
: autoscale
: 地位

c******o
发帖数: 1277
237
嗯,会看看,但是我们需要的是一个reactive full web server
Rxjava不行

【在 b*******g 的大作中提到】
: 关于这方面你可以看看RxJava/Hystrix。并不是必需Scala才能做到resilience. 而且
: 就如我说的,类库才是第一生产力。相比之下,语言的feature太底层了。

z****e
发帖数: 54598
238
scala是行业探索者
开路先锋
java跟着后面抄就好了
scala是孙坚
java是曹操
谁是刘备?
clojure?道统上的正确?

【在 c******o 的大作中提到】
: 不明白你说我们挑战啥。
: 能写scala的一定能学Java,何况我们都是java出身
: 我们选了scala, 没选Java. 而且对自己的选择非常满意。
: 行业标准太虚无飘渺了

z****e
发帖数: 54598
239
用vert.x自己建就好了
比用play什么要灵活
你们肯定木有问题的了

【在 c******o 的大作中提到】
: 嗯,会看看,但是我们需要的是一个reactive full web server
: Rxjava不行

f******x
发帖数: 98
240
确实,挺FP的大多是OOP写得不耐烦,写吐了的。

【在 c******o 的大作中提到】
: 不明白你说我们挑战啥。
: 能写scala的一定能学Java,何况我们都是java出身
: 我们选了scala, 没选Java. 而且对自己的选择非常满意。
: 行业标准太虚无飘渺了

相关主题
怎么这里这么多人学python有没有喜欢haskell的同学
Haskell很难学。。从今天开始起,学C++!
functional programming?scala写个loop老难了
z****e
发帖数: 54598
241
其他人不知道
但是从这个thread看下来
显然有些人oop是写得一塌糊涂
而且很多人是没怎么写过

【在 f******x 的大作中提到】
: 确实,挺FP的大多是OOP写得不耐烦,写吐了的。
x****u
发帖数: 44466
242
就算你选了FLG,也不代表FLG是主流宗教吧。

【在 c******o 的大作中提到】
: 不明白你说我们挑战啥。
: 能写scala的一定能学Java,何况我们都是java出身
: 我们选了scala, 没选Java. 而且对自己的选择非常满意。
: 行业标准太虚无飘渺了

c******o
发帖数: 1277
243
我什么时候说过fp是主流?
我说它现在火,不对么?
说它好,不能发表意见么?我可是实际的举例的。
再说主流对我又不是啥不会的东西。

【在 x****u 的大作中提到】
: 就算你选了FLG,也不代表FLG是主流宗教吧。
x****u
发帖数: 44466
244
FP又不是一无是处,任何小众工具语言都有其特别的用武之地。

【在 c******o 的大作中提到】
: 我什么时候说过fp是主流?
: 我说它现在火,不对么?
: 说它好,不能发表意见么?我可是实际的举例的。
: 再说主流对我又不是啥不会的东西。

1 (共1页)
相关主题
这年头有哪几个公司是用函数式编程的呢?怎么这里这么多人学python
关于clojureHaskell很难学。。
clojure这语言真不错functional programming?
非常喜欢Clojure有没有喜欢haskell的同学
scala和monad从今天开始起,学C++!
一直不习惯immutabilityscala写个loop老难了
functional programming why?criticism of Scala
vert.x平台上的新东西很让人兴奋阿大牛们比较下 Node, Go, Scala
相关话题的讨论汇总
话题: fp话题: 变量话题: oop话题: java话题: int