Yes, I agree.

+1s on both these lines:

*Badly designed APIs can get more complicated when combined with lambdas*
*Lambdas and functional style can greatly improve the readability if used
properly*.



On Mon, Jan 2, 2017 at 9:34 PM, Arun Mahadevan <ar...@apache.org> wrote:

> Its more about getting used to and judiciously deciding when to use
> functional v/s procedural approach. Badly designed APIs can get more
> complicated when combined with lambdas, but overall what I observe is
> lambdas and functional style can greatly improve the readability (with many
> other benefits) if used properly.
>
> A simple word count pipeline like below can get too verbose when expressed
> without lambdas.
>
> Stream<String> stream = …
> stream
> .flatMap(s -> Arrays.asList(s.split(" ")))
> .mapToPair(w -> Pair.of(w, 1))
> .countByKey()
> .filter(x -> x.getSecond() >= 5)
> .print();
>
> *Without lambda*
>
> stream
> .flatMap(new FlatMapFunction<String, String>() {
>   @Override
>   public Iterable<String> apply(String s) {
>     return Arrays.asList(s.split(" "));
>   }
> })
> .mapToPair(new PairFunction<String, String, Integer>() {
>   @Override
>   public Pair<String, Integer> apply(String w) {
>     return Pair.of(w, 1);
>   }
> })
> .countByKey()
> .filter(new Predicate<Pair<String, Long>>() {
>   @Override
>   public boolean test(Pair<String, Long> x) {
>     return x.getSecond() >= 5;
>   }
> })
> .print();
>
>
> Thanks,
> Arun
>
> On 1/3/17, 10:21 AM, "S G" <sg.online.em...@gmail.com> wrote:
>
> >One bad usage I have found is missing types for lambda arguments.
> >When the types for arguments are not provided in the code itself, github
> or
> >vi-editor browsing of such code becomes impossible.
> >
> >You must have an IDE like Eclipse to infer the types for such cases and
> >that becomes a big limitation to browse such code. I have not looked into
> >the storm code-base to find such occurrences but the above is just a
> >general observation from the lambda code usages.
> >
> >
> >Secondly, lambdas tend to generate bad stack-traces on exceptions.
> >
> >
> >And lastly, functional programming is not natural to many Java developers.
> >https://zeroturnaround.com/rebellabs/how-to-avoid-
> ruining-your-world-with-lambdas-in-java-8/
> >hints at some of these problems. Java code is usually very easy to
> >understand. But once you throw in more than a single level of lambdas,
> >things tend to become more and more confusing for several developers.
> (This
> >last point reflects the thoughts from some of my fellow developers, not
> >representative of all the devs)
> >
> >
> >Thanks
> >SG
> >
> >
> >On Mon, Jan 2, 2017 at 8:26 PM, Jungtaek Lim <kabh...@gmail.com> wrote:
> >
> >> Hi S G,
> >>
> >> I'd be happy if you could elaborate your opinion. Did you found bad
> usages
> >> from master branch of Storm code?
> >>
> >> Regarding comfortable of lambda, IMHO, I don't think many users are
> >> unfamiliar with lambda, since they should have been used it with various
> >> languages. We might not be comfortable with Java 8 lambda (since
> transition
> >> to Java 8 is going slowly), but it's just a matter of familiarizing.
> >>
> >> Are there kind of best practices for Java 8 lambda? We can refer these
> to
> >> construct some guides / restrictions for Storm project.
> >>
> >> Thanks,
> >> Jungtaek Lim (HeartSaVioR)
> >>
> >> 2017년 1월 3일 (화) 오후 12:26, S G <sg.online.em...@gmail.com>님이 작성:
> >>
> >> > I have found several bad usages of Java 8 lambdas and many developers
> are
> >> > not comfortable using them.
> >> >
> >> > So we should use them only if it really makes the code beautiful and
> >> easier
> >> > to understand.
> >> >
> >> > My 2c,
> >> > Thanks
> >> > SG
> >> >
> >> >
> >> > On Mon, Dec 26, 2016 at 5:59 AM, Arun Mahadevan <ar...@apache.org>
> >> wrote:
> >> >
> >> > > The streams API implementation has limited usage of 1.8 features and
> >> can
> >> > > be easily ported to 1.7 if required. The examples are written in
> 1.8,
> >> the
> >> > > thought being users would stick to the Java 8 style usage (lambdas)
> >> from
> >> > > the beginning. If there is consensus we could also consider moving
> the
> >> > 1.x
> >> > > branch to JDK 8.
> >> > >
> >> > > Anyways would like interested folks to start reviewing the changes
> so
> >> > that
> >> > > we can take it forward.
> >> > >
> >> > > Thanks,
> >> > > Arun
> >> > >
> >> > >
> >> > > On 12/23/16, 10:09 AM, "Jungtaek Lim" <kabh...@gmail.com> wrote:
> >> > >
> >> > > >FYI, I've realized that internal of Stream API (pull request)
> relies
> >> on
> >> > > JDK
> >> > > >8 (what I've found is 'static method in interface' and maybe more)
> so
> >> > for
> >> > > >now Stream API is expected to be included for at least Storm 2.0.0
> >> > unless
> >> > > >the PR is modified to fit to JDK 7.
> >> > > >
> >> > > >- Jungtaek Lim (HeartSaVioR)
> >> > > >
> >> > > >2016년 12월 21일 (수) 오전 9:40, Jungtaek Lim <kabh...@gmail.com>님이 작성:
> >> > > >
> >> > > >> Thanks Manu and Taylor for giving your opinions.
> >> > > >>
> >> > > >> - Storm SQL improvement
> >> > > >>
> >> > > >> There're some huge PRs available but there're all about
> improvement
> >> > > which
> >> > > >> shouldn't be blocker for releasing 1.1.0. (I'd like to also
> include
> >> > > them to
> >> > > >> 1.1.0 but not sure it can be happen really soon.)
> >> > > >> I'll send a request for reviewing about pending Storm SQL PRs.
> >> > > >>
> >> > > >> Only one issue (STORM-2200) is linked to release 1.1.0 epic
> which is
> >> > > >> blocker for me.
> >> > > >>
> >> > > >> - Java port
> >> > > >>
> >> > > >> I also had some developers saying 'If core of Storm were written
> by
> >> > > Java,
> >> > > >> I could experiment and even contribute on something'. I was one
> of
> >> > them,
> >> > > >> and to be honest, I'm still a beginner of Clojure. Moving to
> Java 8
> >> > also
> >> > > >> gives great functionalities for us, so Java port is what I think
> the
> >> > > most
> >> > > >> important thing among the huge works now in progress. Ideally,
> and
> >> > > >> hopefully, I'd like to see us focus on this and make this happen
> at
> >> > the
> >> > > >> very early next year.
> >> > > >> (Yes we should do some manual tests and maybe some refactoring
> too.)
> >> > > >>
> >> > > >> - Metrics V2
> >> > > >>
> >> > > >> I'm not sure when we plan to release Storm 1.2.0, but given that
> >> > > there're
> >> > > >> only two things left (logviewer / ui) for completing port work
> >> (except
> >> > > >> tests) I guess Storm 2.0.0 might be happen earlier.
> >> > > >> Taylor, when do you expect metrics V2 will be available for
> >> reviewing?
> >> > > >>
> >> > > >> - Stream API
> >> > > >>
> >> > > >> With labeling as experiment or annotating with evolving, we could
> >> > > include
> >> > > >> the first version to next minor excluding 1.1.0. (We could even
> >> > include
> >> > > >> this to 1.1.0 if we start reviewing this very soon.)
> >> > > >>
> >> > > >> I'd like to hear others' opinions as well.
> >> > > >>
> >> > > >> Thanks,
> >> > > >> Jungtaek Lim (HeartSaVioR)
> >> > > >>
> >> > > >> 2016년 12월 21일 (수) 오전 7:33, P. Taylor Goetz <ptgo...@gmail.com>님이
> >> 작성:
> >> > > >>
> >> > > >> Hi Jungtaek,
> >> > > >>
> >> > > >> > - Beam runner
> >> > > >>
> >> > > >> There’s not been much activity around this, and I haven’t had
> much
> >> > time
> >> > > to
> >> > > >> work on it recently, but there’s a decent foundation to build
> upon.
> >> So
> >> > > it
> >> > > >> would be fairly easy for others to start contributing to that
> >> effort.
> >> > > >> There’s also interest from the Beam community in that runner, so
> one
> >> > > >> possibility is to move that effort to the Apache Beam project.
> >> > > >>
> >> > > >> This is very preliminary work, so I don’t have a good handle on
> what
> >> > the
> >> > > >> target release would be.
> >> > > >>
> >> > > >> > - Metrics renewal
> >> > > >>
> >> > > >>
> >> > > >> This is what I’ve been referring to as “metrics_v2”. This is
> >> > progressing
> >> > > >> fairly well with support for multiple reporters (e.g. Graphite,
> >> > Ganglia,
> >> > > >> console, etc.), worker metrics, disruptor metrics, etc.
> >> > > >>
> >> > > >> I would like to target this work for 1.2.0.
> >> > > >>
> >> > > >> > - Java port
> >> > > >>
> >> > > >> This effort seems to have picked up (for example Bobby’s
> conversion
> >> of
> >> > > >> Nimbus, etc.) and is progressing steadily. It’s taken a lot
> longer
> >> > than
> >> > > >> initially thought, but a lot of that can be attributed to the ebb
> >> and
> >> > > flow
> >> > > >> of people’s availability to do the work.
> >> > > >>
> >> > > >> > - Storm SQL improvement (Streaming SQL in future)
> >> > > >>
> >> > > >> You’ve been spearheading most of the work here, so I’d delegate
> to
> >> you
> >> > > for
> >> > > >> your opinion on where it stands. If you need additional reviews,
> >> just
> >> > > ask
> >> > > >> on list or via GitHub (e.g. “[REVIEW REQUEST]” in the subject
> line
> >> > might
> >> > > >> help get attention).
> >> > > >>
> >> > > >> My thinking has been that this could be included in the 1.1.0
> >> release.
> >> > > Is
> >> > > >> there a set of JIRA issues you would like to include in order to
> >> make
> >> > > that
> >> > > >> happen?
> >> > > >>
> >> > > >> > - Stream API
> >> > > >>
> >> > > >> This seems to have stalled a bit, though there seems to be a lot
> of
> >> > > >> interest around it. I think we all would agree that when
> >> introducing a
> >> > > new
> >> > > >> API for building topologies, it’s important that we get right
> from
> >> the
> >> > > >> start and have strong buy-in from the development community. I
> would
> >> > > >> encourage anyone interested in the Streams API to review the
> >> proposal
> >> > > and
> >> > > >> initial code.
> >> > > >>
> >> > > >> I think it is close, but I’m not sure what release to target.
> >> Possibly
> >> > > the
> >> > > >> 2.0 release?
> >> > > >>
> >> > > >> Re: 1.1.0 Release
> >> > > >>
> >> > > >> STORM-2176 is a fairly big concern of mine since the feature it
> >> > involves
> >> > > >> was introduced in 1.0.0 and did not work then nor in any
> subsequent
> >> or
> >> > > >> future releases (may not be a problem in 2.0). Unfortunately, as
> >> > you’ve
> >> > > >> seen, finding the root cause is elusive. That issue could
> definitely
> >> > use
> >> > > >> more eyes.
> >> > > >>
> >> > > >> -Taylor
> >> > > >>
> >> > > >>
> >> > > >> > On Dec 20, 2016, at 2:19 AM, Jungtaek Lim <kabh...@gmail.com>
> >> > wrote:
> >> > > >> >
> >> > > >> > Hi devs,
> >> > > >> >
> >> > > >> > I'm seeing lots of huge works in parallel, and we individual
> are
> >> > busy
> >> > > >> > regarding each work so common works (review, release,
> >> documentation,
> >> > > >> etc.)
> >> > > >> > have been not made in progress for several months.
> >> > > >> >
> >> > > >> > - Beam runner
> >> > > >> > - Metrics renewal
> >> > > >> > - Java port
> >> > > >> > - Storm SQL improvement (Streaming SQL in future)
> >> > > >> > - Stream API
> >> > > >> >
> >> > > >> > IMHO, it would be better to set target versions for them, and
> set
> >> a
> >> > > >> roadmap
> >> > > >> > (per version), and prioritize based on roadmap.
> >> > > >> >
> >> > > >> > Stream API (very first version), and Storm SQL improvement are
> >> > waiting
> >> > > >> for
> >> > > >> > review, and personally I would like to publish them soon.
> >> > > >> >
> >> > > >> > If we're OK to have 2.0.0 without adding much features, I'm in
> >> favor
> >> > > of
> >> > > >> > concentrating Java port work (postponing other things except
> >> > releasing
> >> > > >> 1.x
> >> > > >> > version line) and moving to Apache Storm 2.0.0 really soon.
> >> > > >> > (I'm even OK we decide to postpone some clojure files to be
> >> > addressed
> >> > > >> after
> >> > > >> > 2.0.0.)
> >> > > >> > Actually we're suffering other annoying issue: JDK 7 (1.x) vs 8
> >> > (2.x)
> >> > > >> which
> >> > > >> > is other reason to move to 2.x quickly.
> >> > > >> >
> >> > > >> > I'd be really happy if we have metrics renewal and beam runner,
> >> but
> >> > > I'm
> >> > > >> not
> >> > > >> > sure when they're available to be published. Do we have any
> >> updates
> >> > > here?
> >> > > >> >
> >> > > >> > What do you think? It might be ideal, and/or broader discussion
> >> but
> >> > we
> >> > > >> > haven't discussed our plan / vision for a long time so better
> to
> >> > give
> >> > > it
> >> > > >> a
> >> > > >> > try.
> >> > > >> >
> >> > > >> > Thanks,
> >> > > >> > Jungtaek Lim (HeartSaVioR)
> >> > > >>
> >> > > >>
> >> > >
> >> > >
> >> > >
> >> >
> >>
>
>
>

Reply via email to