由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - java 8就是一坨屎
相关主题
Java8的lambda很难用呀问个java8问题
go几天的一些感受swift不是fp语言
Java 8 闪亮发布了关于FP
阅读scala中看了一下monad,让我想到了Java的AOP
粉FP的人是因为把电脑想象成图灵机了java8等不及的话,groovy很好啊
lambda 什么时候进入 c++的?看了看Java的lambda,感觉还是没啥意思
scala写个loop老难了java8 lambda 就是语法糖
我还是认为scala的程序员水平高spark 为啥不用 java 写
相关话题的讨论汇总
话题: java话题: loop话题: str1话题: map话题: fp
进入Programming版参与讨论
1 (共1页)
d******e
发帖数: 2265
1
在读一个java8的proj.简直要抓狂了。
所有的code都是函数式的。builder被传来传去。加上没有case class.
简直是灾难啊。
看来java到头了。基本上java 7就够了。否则转scala.
d******e
发帖数: 2265
2
来一段:
listReuqest.ifPresent(lr -> {blah})
你又不是函数式chaining结果,就要个side effiect.
不能好好的写
if (listRequest){
blah
}
吗。
都省了定义optional了。
d******e
发帖数: 2265
3
顺便问一嘴,现在写java有没有超过effecitve java的东西?
好久不写java了
z****e
发帖数: 54598
4
本来就不是纯fp
你非要按照fp那一套写
难怪会出问题
lambda主要是用来对付annoymous class时候用的
谁让你什么都写成fp
pure functional就是一灾难
有多少人能把side effect弄清楚的?
z****e
发帖数: 54598
5
java的边界不是function
是class,所以只要没有跑出class之外
都是无side effect的
然后按照actor model,用vert.x就可以保证没有side effect
只有fp那种苛刻的要求才会要求你不准用状态
java经过vert.x等优化之后,没有这个要求
这是好事,别不习惯
z****e
发帖数: 54598
6
俺只有在spring的时候,不敢随便用状态
用了vert.x之后,状态随便传,不传对不起自己
各种省内存
e***i
发帖数: 231
7
言过了吧

【在 d******e 的大作中提到】
: 在读一个java8的proj.简直要抓狂了。
: 所有的code都是函数式的。builder被传来传去。加上没有case class.
: 简直是灾难啊。
: 看来java到头了。基本上java 7就够了。否则转scala.

z****e
发帖数: 54598
8
java关于并发的控制,从ejb开始
一直都是冲着class为边界去的
fp那种要求,一直在java世界里面被认为是太苛刻
ejb比fp要爽不少
ejb后来失败了,主要是因为配置太麻烦
各种xml
现在有了vert.x之后就不一样了
x***4
发帖数: 1815
9
java8的lambda主要是语法糖,不要真是按fp的思考模式写java8。
如果想用fp用得爽,你要保证用immutable data才行。

【在 d******e 的大作中提到】
: 来一段:
: listReuqest.ifPresent(lr -> {blah})
: 你又不是函数式chaining结果,就要个side effiect.
: 不能好好的写
: if (listRequest){
: blah
: }
: 吗。
: 都省了定义optional了。

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

然,java还是oop
纯粹的fp根本不应该用java
适得其反
java本质上是不赞同fp那种搞法的
全部封装到function这个level中去的话
各种折腾少不了,side effect这些,很多人搞不明白
oop则比较容易被大众所接受

【在 x***4 的大作中提到】
: java8的lambda主要是语法糖,不要真是按fp的思考模式写java8。
: 如果想用fp用得爽,你要保证用immutable data才行。

相关主题
lambda 什么时候进入 c++的?问个java8问题
scala写个loop老难了swift不是fp语言
我还是认为scala的程序员水平高关于FP
进入Programming版参与讨论
T*******x
发帖数: 8565
11
这个有道理。

【在 z****e 的大作中提到】
: java的边界不是function
: 是class,所以只要没有跑出class之外
: 都是无side effect的
: 然后按照actor model,用vert.x就可以保证没有side effect
: 只有fp那种苛刻的要求才会要求你不准用状态
: java经过vert.x等优化之后,没有这个要求
: 这是好事,别不习惯

C*******n
发帖数: 193
12
同意
c*********e
发帖数: 16335
13
现在spring, vert.x哪个更流行?

【在 z****e 的大作中提到】
: java关于并发的控制,从ejb开始
: 一直都是冲着class为边界去的
: fp那种要求,一直在java世界里面被认为是太苛刻
: ejb比fp要爽不少
: ejb后来失败了,主要是因为配置太麻烦
: 各种xml
: 现在有了vert.x之后就不一样了

c*********e
发帖数: 16335
14
scala更会让你抓狂,仿佛回到遥远的过去用perl的时代。

【在 d******e 的大作中提到】
: 在读一个java8的proj.简直要抓狂了。
: 所有的code都是函数式的。builder被传来传去。加上没有case class.
: 简直是灾难啊。
: 看来java到头了。基本上java 7就够了。否则转scala.

n******7
发帖数: 12463
15
我一直不太清楚 lambda到底是啥
看介绍都是长篇大论,甚至一本书
但是java8里面用起来
好像就是写匿名函数简洁一点的效果?

【在 x***4 的大作中提到】
: java8的lambda主要是语法糖,不要真是按fp的思考模式写java8。
: 如果想用fp用得爽,你要保证用immutable data才行。

Y**G
发帖数: 1089
16
把值传给那个consumer不是省掉了吗?不是很简洁吗。
https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html#ifPresent-
java.util.function.Consumer-

【在 d******e 的大作中提到】
: 来一段:
: listReuqest.ifPresent(lr -> {blah})
: 你又不是函数式chaining结果,就要个side effiect.
: 不能好好的写
: if (listRequest){
: blah
: }
: 吗。
: 都省了定义optional了。

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

匿名方法
就是当你临时想马上定义一个方法
然后只在这里用,用完就不再需要的时候
就需要用到匿名方法
java以前不支持匿名方法
必需要在匿名方法外面套上一层class
这就是所谓的匿名类
所以java8主要就是用来简化这个用的
说成一本书主要是因为func这个是fp的基础
所以关于func的定义什么都需要扩展
所以就说成了一本书
如果是java的话,可以不用鸟这些东东

【在 n******7 的大作中提到】
: 我一直不太清楚 lambda到底是啥
: 看介绍都是长篇大论,甚至一本书
: 但是java8里面用起来
: 好像就是写匿名函数简洁一点的效果?

c*********e
发帖数: 16335
18
c#里面很多lambda, linq
var values = new List() { 7, 13, 4, 9, 3 };
// Map the anonymous function over all elements in the list, return the new
list
var foo = values.ConvertAll(d => d*d) ;

【在 n******7 的大作中提到】
: 我一直不太清楚 lambda到底是啥
: 看介绍都是长篇大论,甚至一本书
: 但是java8里面用起来
: 好像就是写匿名函数简洁一点的效果?

x***4
发帖数: 1815
19
正解

【在 z****e 的大作中提到】
:
: 匿名方法
: 就是当你临时想马上定义一个方法
: 然后只在这里用,用完就不再需要的时候
: 就需要用到匿名方法
: java以前不支持匿名方法
: 必需要在匿名方法外面套上一层class
: 这就是所谓的匿名类
: 所以java8主要就是用来简化这个用的
: 说成一本书主要是因为func这个是fp的基础

d******e
发帖数: 2265
20
scala用的好好的。新项目看了java 8才要疯掉。
关键是:
要么你fp,要么你oop.两个浇在一起,项目很可能嗝屁。
另外就是看了一下原作者,毕业两年多。貌似拿这个项目联系各种design pattern玩。
各种over engieering.

【在 c*********e 的大作中提到】
: scala更会让你抓狂,仿佛回到遥远的过去用perl的时代。
相关主题
看了一下monad,让我想到了Java的AOPjava8 lambda 就是语法糖
java8等不及的话,groovy很好啊spark 为啥不用 java 写
看了看Java的lambda,感觉还是没啥意思整天拿fp来说事的看看人家真正的数学家的东东
进入Programming版参与讨论
n******7
发帖数: 12463
21
这跟java8基本一样
就是匿名函数写的方便点

new

【在 c*********e 的大作中提到】
: c#里面很多lambda, linq
: var values = new List() { 7, 13, 4, 9, 3 };
: // Map the anonymous function over all elements in the list, return the new
: list
: var foo = values.ConvertAll(d => d*d) ;

n******7
发帖数: 12463
22
那这也不怪java8了
本来灵活性被滥用了就是灾难
前几天有人读python code不也吐血了
都是为了用某个feature霸王硬上弓

【在 d******e 的大作中提到】
: scala用的好好的。新项目看了java 8才要疯掉。
: 关键是:
: 要么你fp,要么你oop.两个浇在一起,项目很可能嗝屁。
: 另外就是看了一下原作者,毕业两年多。貌似拿这个项目联系各种design pattern玩。
: 各种over engieering.

S***k
发帖数: 370
23
java's lambda is not nice and "nature" as c#.
if using java, it could looks like:
values.Stream()
.map(d->d*d)
.collect(Collectors.toList())
to be honest, I don't think this is better than for loop from any aspects.
The parallel is another funny one.
in c#, we just say Parallel.ForEach(value, v=>{blalala});
in java: values.parallelStream().map(blah).flatMap(List::Stream)
And, c# async is easier to use than java. I am still not sure if java's
async could work well because it is implemented using threading.
Anyway, I agree with "java 8就是一坨屎".

new

【在 c*********e 的大作中提到】
: c#里面很多lambda, linq
: var values = new List() { 7, 13, 4, 9, 3 };
: // Map the anonymous function over all elements in the list, return the new
: list
: var foo = values.ConvertAll(d => d*d) ;

z****e
发帖数: 54598
24
all u need is rxjava
then u can do sth. like .map(d -> d*d)
and forEach(v->{blablabla});
this is just a way to pass in function as a parameter
how stupid u r to think this is impossible for java
u can even impl. this by urself rather than using rxjava
as long as u have lambda & reflection
besides, for async part, u should know java.nio
which have been impl.ed in 1.4 many years ago
if u wanna a sync way to write async code
u need javaagent and for framework quosar would be the answer

【在 S***k 的大作中提到】
: java's lambda is not nice and "nature" as c#.
: if using java, it could looks like:
: values.Stream()
: .map(d->d*d)
: .collect(Collectors.toList())
: to be honest, I don't think this is better than for loop from any aspects.
: The parallel is another funny one.
: in c#, we just say Parallel.ForEach(value, v=>{blalala});
: in java: values.parallelStream().map(blah).flatMap(List::Stream)
: And, c# async is easier to use than java. I am still not sure if java's

z****e
发帖数: 54598
25
here is a simple example of rx.map
Observable.from("item1")
.map((str1)->{
System.out.println("insde the map " + str1);
return str1;
})
.subscribe(System.out::println);
u can see str1 -> {blablabla}
z****e
发帖数: 54598
26
compared to for loop
how to use for loop in the streaming?
u dont even know the border of the stream/loop
u need a listener rather than a loop
reactive rather than active
reactive is not for zhuangbi
is used for solving problems
especially for those streaming industry like Netflix
if u can use for loop then plez use for loop
do not use forEach which should only be used in streaming api
and i personally believe for loop is enough for batch api
u dont need streaming for batch like db/file system crud operations
except the dataset is extremely large then u may need streaming
otherwise, just use for loop, make other ppl's life a lot easier
too many zhuangbi -ers
S***k
发帖数: 370
27
simple example? How many "." there. lol

【在 z****e 的大作中提到】
: here is a simple example of rx.map
: Observable.from("item1")
: .map((str1)->{
: System.out.println("insde the map " + str1);
: return str1;
: })
: .subscribe(System.out::println);
: u can see str1 -> {blablabla}

S***k
发帖数: 370
28
impl?? this is another sample of "java 就是一坨屎"

【在 z****e 的大作中提到】
: all u need is rxjava
: then u can do sth. like .map(d -> d*d)
: and forEach(v->{blablabla});
: this is just a way to pass in function as a parameter
: how stupid u r to think this is impossible for java
: u can even impl. this by urself rather than using rxjava
: as long as u have lambda & reflection
: besides, for async part, u should know java.nio
: which have been impl.ed in 1.4 many years ago
: if u wanna a sync way to write async code

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

u can import static if u want
i dont think . has problems since this part is usually written by IDE

【在 S***k 的大作中提到】
: simple example? How many "." there. lol
z****e
发帖数: 54598
30

lol
gotta admit that
DOTNET is really suitable for those ppl who do not have a brain

【在 S***k 的大作中提到】
: impl?? this is another sample of "java 就是一坨屎"
相关主题
这么说吧,fp不是否定变量,而是控制变量的范围go几天的一些感受
我对为什么使用FP的理解 (补)Java 8 闪亮发布了
Java8的lambda很难用呀阅读scala中
进入Programming版参与讨论
S***k
发帖数: 370
31
Whoops do you need a bandage for your tail

【在 z****e 的大作中提到】
:
: lol
: gotta admit that
: DOTNET is really suitable for those ppl who do not have a brain

S***k
发帖数: 370
32
I agree with this.

【在 z****e 的大作中提到】
: compared to for loop
: how to use for loop in the streaming?
: u dont even know the border of the stream/loop
: u need a listener rather than a loop
: reactive rather than active
: reactive is not for zhuangbi
: is used for solving problems
: especially for those streaming industry like Netflix
: if u can use for loop then plez use for loop
: do not use forEach which should only be used in streaming api

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

u just lazy

【在 S***k 的大作中提到】
: Whoops do you need a bandage for your tail
d******e
发帖数: 2265
34
推荐读读
http://www.slideshare.net/ScottWlaschin/fp-patterns-ndc-london2
java 8根本思路就是错的。本来就是给笨蛋烙印用的,管的死死的。
加上fp就4不象了。开始想C++发展了。

【在 n******7 的大作中提到】
: 那这也不怪java8了
: 本来灵活性被滥用了就是灾难
: 前几天有人读python code不也吐血了
: 都是为了用某个feature霸王硬上弓

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

for fp
when start writing codes, u have to know these
state, immutable, side effect
u have been "管的死死的"ed already
i do agree some times patterns r 八股
but compared to monad
oop patterns r far more easier

【在 d******e 的大作中提到】
: 推荐读读
: http://www.slideshare.net/ScottWlaschin/fp-patterns-ndc-london2
: java 8根本思路就是错的。本来就是给笨蛋烙印用的,管的死死的。
: 加上fp就4不象了。开始想C++发展了。

g*****g
发帖数: 34805
36
Java 8的思路是正确的,就是一个语法糖而已。真要 FP去用 Scala好了。

【在 d******e 的大作中提到】
: 推荐读读
: http://www.slideshare.net/ScottWlaschin/fp-patterns-ndc-london2
: java 8根本思路就是错的。本来就是给笨蛋烙印用的,管的死死的。
: 加上fp就4不象了。开始想C++发展了。

H****S
发帖数: 1359
37
没有immutable data structure,过多lambda在一起确实是灾难。想要更多compile
time safety,不怕折腾,就上Scala。否则没有必要让一个纯OO语言折腾这些东西。

【在 d******e 的大作中提到】
: 在读一个java8的proj.简直要抓狂了。
: 所有的code都是函数式的。builder被传来传去。加上没有case class.
: 简直是灾难啊。
: 看来java到头了。基本上java 7就够了。否则转scala.

l******t
发帖数: 55733
38
真正理解了monad大概就算可以实战了

【在 n******7 的大作中提到】
: 我一直不太清楚 lambda到底是啥
: 看介绍都是长篇大论,甚至一本书
: 但是java8里面用起来
: 好像就是写匿名函数简洁一点的效果?

1 (共1页)
进入Programming版参与讨论
相关主题
spark 为啥不用 java 写粉FP的人是因为把电脑想象成图灵机了
整天拿fp来说事的看看人家真正的数学家的东东lambda 什么时候进入 c++的?
这么说吧,fp不是否定变量,而是控制变量的范围scala写个loop老难了
我对为什么使用FP的理解 (补)我还是认为scala的程序员水平高
Java8的lambda很难用呀问个java8问题
go几天的一些感受swift不是fp语言
Java 8 闪亮发布了关于FP
阅读scala中看了一下monad,让我想到了Java的AOP
相关话题的讨论汇总
话题: java话题: loop话题: str1话题: map话题: fp