p*****2 发帖数: 21240 | 1 很上瘾,跟吸毒差不多,写的时候很爽,写完了感觉很失落
这是好还是不好呢? |
l**********n 发帖数: 8443 | 2 读angularjs的文档感觉好过瘾, Remember! With power comes responsibility. |
p*****2 发帖数: 21240 | 3 很上瘾,跟吸毒差不多,写的时候很爽,写完了感觉很失落
这是好还是不好呢? |
l**********n 发帖数: 8443 | 4 读angularjs的文档感觉好过瘾, Remember! With power comes responsibility. |
q*c 发帖数: 9453 | 5 这叫斯德哥尔摩综合症,卡卡
【在 p*****2 的大作中提到】 : 很上瘾,跟吸毒差不多,写的时候很爽,写完了感觉很失落 : 这是好还是不好呢?
|
y**********u 发帖数: 6366 | 6 二爷您现在特有艺术气息
我现在还兼职写php了,吐血啊
【在 p*****2 的大作中提到】 : 很上瘾,跟吸毒差不多,写的时候很爽,写完了感觉很失落 : 这是好还是不好呢?
|
p*****2 发帖数: 21240 | 7 php不错 我一点也不会
准备下个半年好好搞搞scala spark 和 spray了
简称3s
【在 y**********u 的大作中提到】 : 二爷您现在特有艺术气息 : 我现在还兼职写php了,吐血啊
|
N********n 发帖数: 8363 | 8
你过去不是NODE完胜SCALA吗,怎么又吃回头草了?
【在 p*****2 的大作中提到】 : 很上瘾,跟吸毒差不多,写的时候很爽,写完了感觉很失落 : 这是好还是不好呢?
|
p*****2 发帖数: 21240 | 9 用处不同
node是做startup的利器
scala用于大数据很牛逼
【在 N********n 的大作中提到】 : : 你过去不是NODE完胜SCALA吗,怎么又吃回头草了?
|
d******e 发帖数: 2265 | 10 贴端代码看看?
我怎么觉得scala很噁心的语言呢?
看上去就是4不象。
【在 p*****2 的大作中提到】 : 很上瘾,跟吸毒差不多,写的时候很爽,写完了感觉很失落 : 这是好还是不好呢?
|
|
|
p*****2 发帖数: 21240 | 11
是4不象,哈哈。
val res = io.Source.fromURL(url)(io.Codec.UTF8).mkString
val deals = parse(res).extract[List[DealMeta]]
.filter(_.customer_taxonomy_hierarchy.getOrElse(List.empty[Taxonomy]).
exists(_.isGoods))
for(i<-deals) yield {
val taxonomy = i.customer_taxonomy_hierarchy.get
.filter(_.isGoods)
.map(_.category.get)
.groupBy(identity)
.mapValues(_.size)
.toList
.sortBy(- _._2)
val epoch = (List(DateTime.now, new DateTime(i.start_at)) map (_.
getMillis) reduce (_ - _)) / ONE_DAY
Deal(i.id, taxonomy(0)._1, i.sold_quantity, epoch.toInt)
【在 d******e 的大作中提到】 : 贴端代码看看? : 我怎么觉得scala很噁心的语言呢? : 看上去就是4不象。
|
m******t 发帖数: 635 | 12 不厚道一下,这语言难看
).
【在 p*****2 的大作中提到】 : : 是4不象,哈哈。 : val res = io.Source.fromURL(url)(io.Codec.UTF8).mkString : val deals = parse(res).extract[List[DealMeta]] : .filter(_.customer_taxonomy_hierarchy.getOrElse(List.empty[Taxonomy]). : exists(_.isGoods)) : for(i<-deals) yield { : val taxonomy = i.customer_taxonomy_hierarchy.get : .filter(_.isGoods) : .map(_.category.get)
|
h*i 发帖数: 3446 | 13 So fugly, won't touch it with a 10 feet pole. LOL.
).
【在 p*****2 的大作中提到】 : : 是4不象,哈哈。 : val res = io.Source.fromURL(url)(io.Codec.UTF8).mkString : val deals = parse(res).extract[List[DealMeta]] : .filter(_.customer_taxonomy_hierarchy.getOrElse(List.empty[Taxonomy]). : exists(_.isGoods)) : for(i<-deals) yield { : val taxonomy = i.customer_taxonomy_hierarchy.get : .filter(_.isGoods) : .map(_.category.get)
|
z****e 发帖数: 54598 | 14 估计是共识了?
好写难看
就跟吸毒一样
一开始很爽
到后面就浑身难受
【在 m******t 的大作中提到】 : 不厚道一下,这语言难看 : : ).
|
m********t 发帖数: 13072 | 15 靠,姐姐我不喜欢
这怎么什么都有点
).
【在 p*****2 的大作中提到】 : : 是4不象,哈哈。 : val res = io.Source.fromURL(url)(io.Codec.UTF8).mkString : val deals = parse(res).extract[List[DealMeta]] : .filter(_.customer_taxonomy_hierarchy.getOrElse(List.empty[Taxonomy]). : exists(_.isGoods)) : for(i<-deals) yield { : val taxonomy = i.customer_taxonomy_hierarchy.get : .filter(_.isGoods) : .map(_.category.get)
|
w***g 发帖数: 5958 | 16 这几行代码写下来的时候就没有准备以后要再看的。如果以后发现不对,肯可能就是再
重新写一下。反正这也是一种需求。
如果是需要维护的代码应该不会写成这样。如果想感受下高质量的scala代码,可以点到
https://github.com/apache/spark里看一眼,其实还是由大量的while循环。
【在 m******t 的大作中提到】 : 不厚道一下,这语言难看 : : ).
|
s***o 发帖数: 2191 | 17 不会吧。我觉得linq写多了再看这个会有很熟悉的感觉
【在 m******t 的大作中提到】 : 不厚道一下,这语言难看 : : ).
|
s***o 发帖数: 2191 | 18 两个月后再读的时候还很爽或者至少明白写的是啥,那才算真成了 |
g*****g 发帖数: 34805 | 19 应该说是两年后整个团队换了一波,要往上加个新feature,新人没费力就读明白了。
。。
【在 s***o 的大作中提到】 : 两个月后再读的时候还很爽或者至少明白写的是啥,那才算真成了
|
H*******g 发帖数: 6997 | 20 LINQ looks better... I am talking about the looking only... lol
【在 s***o 的大作中提到】 : 不会吧。我觉得linq写多了再看这个会有很熟悉的感觉
|
|
|
z****e 发帖数: 54598 | 21 都是fp,当然看上去相似和熟悉
idea都是共通的,唯一的差异就是愿意不愿意被m$这些商业公司插管吸血而已了
马云敢去ioe,其实也是看到了这一点,baba要是没有去吸血鬼的魄力
今天也不会成为仅次于google的第二大互联网公司
【在 s***o 的大作中提到】 : 不会吧。我觉得linq写多了再看这个会有很熟悉的感觉
|
H*******g 发帖数: 6997 | 22 feel so good for the 插管吸血. my question is why not? why the hell I should
use those freebie crap?
【在 z****e 的大作中提到】 : 都是fp,当然看上去相似和熟悉 : idea都是共通的,唯一的差异就是愿意不愿意被m$这些商业公司插管吸血而已了 : 马云敢去ioe,其实也是看到了这一点,baba要是没有去吸血鬼的魄力 : 今天也不会成为仅次于google的第二大互联网公司
|
z****e 发帖数: 54598 | 23 钱的问题
蛋糕就这么大,插管吸血的话,谁的利益都会受损
这种所谓的利益方就像歹徒分赃,分赃的人总是越少越好
should
【在 H*******g 的大作中提到】 : feel so good for the 插管吸血. my question is why not? why the hell I should : use those freebie crap?
|
p*****2 发帖数: 21240 | 24
点到
while loop是因为performance吧?所以这里边很多值得商榷的地方。FP对performance
的考虑没有imperative那么强烈。更注重的是function。适合更high level的开发。当
然了Scala是个万金油,根据需求会有不同的用法。
【在 w***g 的大作中提到】 : 这几行代码写下来的时候就没有准备以后要再看的。如果以后发现不对,肯可能就是再 : 重新写一下。反正这也是一种需求。 : 如果是需要维护的代码应该不会写成这样。如果想感受下高质量的scala代码,可以点到 : https://github.com/apache/spark里看一眼,其实还是由大量的while循环。
|
H*******g 发帖数: 6997 | 25 it is better than nothing... Open Source is actually destroying the whole
market...
I am not talking about the contribution of the open source community, all I
am talking about is the money.
【在 z****e 的大作中提到】 : 钱的问题 : 蛋糕就这么大,插管吸血的话,谁的利益都会受损 : 这种所谓的利益方就像歹徒分赃,分赃的人总是越少越好 : : should
|
z****e 发帖数: 54598 | 26 这种market本来就不应该存在
只有创造价值才能真正获得尊重
我是左逼,跟我说这个没用
I
【在 H*******g 的大作中提到】 : it is better than nothing... Open Source is actually destroying the whole : market... : I am not talking about the contribution of the open source community, all I : am talking about is the money.
|
s***o 发帖数: 2191 | 27 linq 的确有更”人性化“的感觉
【在 H*******g 的大作中提到】 : LINQ looks better... I am talking about the looking only... lol
|
v*******e 发帖数: 11604 | |
x*x 发帖数: 156 | 29 感觉就是perl , 还claim type safe. 要是遇到implicit, 可以把你噁心半天
).
【在 p*****2 的大作中提到】 : : 点到 : while loop是因为performance吧?所以这里边很多值得商榷的地方。FP对performance : 的考虑没有imperative那么强烈。更注重的是function。适合更high level的开发。当 : 然了Scala是个万金油,根据需求会有不同的用法。
|
L***s 发帖数: 1148 | 30 (- _._2)
(_ - _)
(0)._1
真的不是表情符么?(__ __)||b
).
【在 p*****2 的大作中提到】 : : 点到 : while loop是因为performance吧?所以这里边很多值得商榷的地方。FP对performance : 的考虑没有imperative那么强烈。更注重的是function。适合更high level的开发。当 : 然了Scala是个万金油,根据需求会有不同的用法。
|
|
|
x***4 发帖数: 1815 | 31 我刚看spark src的时候,惊讶地发现无数var
performance
【在 p*****2 的大作中提到】 : : 点到 : while loop是因为performance吧?所以这里边很多值得商榷的地方。FP对performance : 的考虑没有imperative那么强烈。更注重的是function。适合更high level的开发。当 : 然了Scala是个万金油,根据需求会有不同的用法。
|
f****3 发帖数: 77 | 32 操作rdd这种数据结构,必然要var阿
【在 x***4 的大作中提到】 : 我刚看spark src的时候,惊讶地发现无数var : : performance
|
z****e 发帖数: 54598 | 33 scala的var是假的var,毕竟是static type语言
机器知道是啥,在初始化时候已经记下了,不能随便改类型
只是人看起来很吃力
其他脚本的var是真的var
机器都不确定是啥,随时可以变类型
【在 x***4 的大作中提到】 : 我刚看spark src的时候,惊讶地发现无数var : : performance
|
p*****2 发帖数: 21240 | 34 这个好像不是这么理解的吧
【在 z****e 的大作中提到】 : scala的var是假的var,毕竟是static type语言 : 机器知道是啥,在初始化时候已经记下了,不能随便改类型 : 只是人看起来很吃力 : 其他脚本的var是真的var : 机器都不确定是啥,随时可以变类型
|
n*w 发帖数: 3393 | 35 把type inference用到极致的是ml系列的ocaml,f#吧。
我也有过用了f#就不想用c#的情况,更不用提java了。
【在 p*****2 的大作中提到】 : 这个好像不是这么理解的吧
|
e*******o 发帖数: 4654 | |
d******e 发帖数: 2265 | 37 这段代码还好吧。
看上去想 method chaining 的linq.
【在 e*******o 的大作中提到】 : debug 起来呢?
|
f****3 发帖数: 77 | 38 二爷说说咋理解?
【在 p*****2 的大作中提到】 : 这个好像不是这么理解的吧
|
L***s 发帖数: 1148 | 39
var变量可以重新引用符号表里的另一个符号,val绑死一个符号
换句话说,python/ruby/js只有var变量,没有val变量
当然这跟mutability是两码事,跟typing更八杆子打不着
【在 f****3 的大作中提到】 : 二爷说说咋理解?
|
z****e 发帖数: 54598 | 40 这是实现
当然跟typing打得着关系
对于人来说,看到var,能够获取的信息十分有限
基本上约等于没说,python就干脆没有var
因为说跟不说没啥区别
从人的角度出发,看到一个变量,需要作处理的时候
最重要的是区分类型,而区分类型一个非常常见的方法
就是通过看这个变量定义的时候是什么类型
而var在很大程度上使得这个操作无效化
至于符号表,那是机器的事,把人当机器用,都是错误的
写个脚本还需要理解符号表,那比学java还折腾
【在 L***s 的大作中提到】 : : var变量可以重新引用符号表里的另一个符号,val绑死一个符号 : 换句话说,python/ruby/js只有var变量,没有val变量 : 当然这跟mutability是两码事,跟typing更八杆子打不着
|
|
|
z****e 发帖数: 54598 | 41 scala教材里面见过不少次的说法
var是mutable,是variable的缩写
val是immutable,是value的缩写
记住就行了,简单的概念总是被人认为地复杂化
【在 L***s 的大作中提到】 : : var变量可以重新引用符号表里的另一个符号,val绑死一个符号 : 换句话说,python/ruby/js只有var变量,没有val变量 : 当然这跟mutability是两码事,跟typing更八杆子打不着
|
L***s 发帖数: 1148 | 42
var修饰的变量可以是immutable的,val修饰的变量也可以是mutable的
var/val描述的是变量作为一个符号,其在符号表中的映射能不能被更改,
而mutability说的是变量所指示的那块内存或引用的那个对象能不能被更改,
这两者是完全正交的。
【在 z****e 的大作中提到】 : scala教材里面见过不少次的说法 : var是mutable,是variable的缩写 : val是immutable,是value的缩写 : 记住就行了,简单的概念总是被人认为地复杂化
|
p*****2 发帖数: 21240 | 43 没错
【在 L***s 的大作中提到】 : : var修饰的变量可以是immutable的,val修饰的变量也可以是mutable的 : var/val描述的是变量作为一个符号,其在符号表中的映射能不能被更改, : 而mutability说的是变量所指示的那块内存或引用的那个对象能不能被更改, : 这两者是完全正交的。
|
p*****2 发帖数: 21240 | 44 没错
【在 L***s 的大作中提到】 : : var修饰的变量可以是immutable的,val修饰的变量也可以是mutable的 : var/val描述的是变量作为一个符号,其在符号表中的映射能不能被更改, : 而mutability说的是变量所指示的那块内存或引用的那个对象能不能被更改, : 这两者是完全正交的。
|
z****e 发帖数: 54598 | 45 我们还是用jvm上的语言吧
就是stack的那个位置的值是不可更改的
就像final修饰的变量
jvm上不谈符号表
所谓val变量是mutable的意思就是这个引用所指向的heap块
里面的东西可以被更改
这种思考方式是非常混乱的
val本意就是让思考简化,而不是复杂化记忆和思考
如果什么东西都从这个角度去思考,根本没有办法把大问题搞定
脚本几乎就是极限了,会有大量时间浪费在到底是还是不是上
【在 L***s 的大作中提到】 : : var修饰的变量可以是immutable的,val修饰的变量也可以是mutable的 : var/val描述的是变量作为一个符号,其在符号表中的映射能不能被更改, : 而mutability说的是变量所指示的那块内存或引用的那个对象能不能被更改, : 这两者是完全正交的。
|
w***g 发帖数: 5958 | 46 val和var的问题是有两个字母是一样的,容易看混。val应该用const或者con。
别的我没啥意见。窃以为scala的发明者没啥taste,弄出来的语言很糙,
没有精雕细琢的感觉。
【在 z****e 的大作中提到】 : scala教材里面见过不少次的说法 : var是mutable,是variable的缩写 : val是immutable,是value的缩写 : 记住就行了,简单的概念总是被人认为地复杂化
|
p*****2 发帖数: 21240 | 47 val 用 let 如何?
【在 w***g 的大作中提到】 : val和var的问题是有两个字母是一样的,容易看混。val应该用const或者con。 : 别的我没啥意见。窃以为scala的发明者没啥taste,弄出来的语言很糙, : 没有精雕细琢的感觉。
|
w***g 发帖数: 5958 | 48 let好。con有别的意思。
【在 p*****2 的大作中提到】 : val 用 let 如何?
|
z****e 发帖数: 54598 | 49 ide可以自动区分val和var
con经常表示connection,cons表示con的复数
const太长
【在 w***g 的大作中提到】 : val和var的问题是有两个字母是一样的,容易看混。val应该用const或者con。 : 别的我没啥意见。窃以为scala的发明者没啥taste,弄出来的语言很糙, : 没有精雕细琢的感觉。
|