Sunday, July 19, 2015

Still Searching for Early Draft Notes for the Second Chapter | Oracle's Lamba Expressions MOOC

Team. It has been a couple of weeks since the last posted comments. The summary notes from Oracle's Early Draft of Ozark, MVC 1.0 or JSR 371, are still missing. We will continue looking. If all else fails, we will simply regenerate them soon. With our current work schedule, we have only found time in the past week for participating in Oracle's Massive Open Online Course covering Lambda Expressions in JAVA Development Kit (JDK) 8.

Oracle broadcast the lessons with a YouTube viewer so they are likely available for public consumption at youtube.com. Being that functional programming is not in our skill-set. This course is quite interesting and informative. We are aware that functional programming became a viable part of JAVA before JDK 8. We are also knowledgeable of the fact that JAVA is supporting other programming paradigms than that of the imperative one in its efforts of become the first truly "universal" language. With declarative and functional features, it lets one choose the most effective paradigm for the programming task at hand.

The lambda expressions in JDK8 are a concise representation of previous functional programming features in JAVA with its support of functional interfaces. These contained large amounts of "boiler-plate" code which the Oracle engineers have subtracted from the syntax used with lambda expressions.

Upon completing the first lesson of this MOOC, we realized that it might supply a means of supporting the dynamic invocation of behavior found in the CABOOSE model, since one can pass lambda expressions as arguments. These expression are ultimately anonymous functions in the form of a functional interface. We use this term, function, in the computer science sense, because it might have void inputs or return values which are not found in the traditional functions in the field of mathematics.

But, passing behavior as an argument is quite an intriguing concept. We are only novices at the use of lambda expressions, but wonder if we can get around their "anonymous" nature by placing these functional interfaces in a HashMap, requesting them as needed with a key, and placing them in a method's argument list.

In terms of CABOOSE, we could associate each page concern with a lambda expression which handles rendering that concern.  As compact as these expression are, this would enhance the readability and maintainability of a CABOOSE project; however, it would require that a manager have development resources who are comfortable with the functional paradigm.

One feature of functional programming is that it is "stateless". We have not fully grasped how this is in that lambda expressions might modify state in the surrounding scope. Yet, it does not modify state in a certain context of the program's execution.

We apologize for the lack of activity on this weblog for the past few weeks. Things should pick up soon.

Happy Coding. The CABOOSE Team.

No comments:

Post a Comment