Richard Rodriguez wrote:Hi Alexander,
I know that there are some difficulties that comes along learning monads, but I also know that they are useful and powerful. But is it required when building FP applications?
Do you need them for complex applications, and skip them for non-complex ones?
Thanks,
Richard
Stepankha Yuliannia wrote:Hi Alex,
Would you then agree that FP is closer to this real-world scenarios and therefore more native for DS?
Many thanks & have a good one
Sebastian Makowiecki wrote:Hi there,
When it comes to functional programming paradigm does the language choice matter much in your opinion?
Briefly, in 'couple' sentences or just naming a few in a list, what are the main benefits of functional paradigm over the others?
Many thanks, lately I have been thinking about all the available paradigm choices, so far struggling to make sense of it and would appreciate your expert input.
Mohammed Sardar. wrote:Hi Alex,
How does functional design impact the microservices architecture of an application when the functional aspect of any service changes? Can microservices adopt complete functional programming?
Glad to hear from you.
Thanks,
Junilu Lacar wrote:
Alexander Granin wrote:
Yes, agree. I'd only say that the term "performance" is quite overloaded, and we might be talking about different things hereStepankha Yuliannia wrote:I'm just going to add that performance is a big thing/reason to use FP (supports parallel programming). OOP does not support parallel programming.
Just wanted to get some clarification on this "OOP does not support parallel programming" statement.
Admittedly, I haven't written any Java programs that use them but Java does have features that support parallel programming. Are you both disagreeing with that assertion or is there some nuance in what you said that I'm just missing? Isn't support for parallel programming "a function" (excuse the pun) of implementation rather than the programming paradigm (OOP vs FP) itself? A similar example would be tail recursion. Nothing in OOP or FP says that tail recursion optimization isn't supported, right? Currently, Java doesn't support TRO as far as I know but other JVM languages like Kotlin and Scala do.
Stepankha Yuliannia wrote:Hi Alex,
Embedded domain-specific languages are everywhere in functional programming, we can say FP and eDSLs/DSLs are natural partners. We use eDSL/DSL to reduce complexity of the system and to keep things decoupled from each other.
When we decide to be using eDSL/DSL so the client code will only work with the DSL (its dependency on native calls will be eliminated), we then have an option to use a native translator for the eDSLs/DSLs that converts high-level commands to native functions or we can test our scenario separately by inventing some testing interpreter. What is your personal preference and why?
Thanks
Sean Corfield wrote:Having built large web apps in multiple languages (and multiple paradigms) over two and half decades now, I think I'd place web apps in general squarely in the FP camp.
Handling a web request is a function from request to response, possibly producing side effects alongside that response, and as you noted concurrency is so much simpler in FP languages!
I think we can make a lot of inroads in UI work with an FRP style approach (Functional Reactive): React/Redux/etc has shown us what is possible, with some great FP wrappers around those (see Reagent/Reframe in ClojureScript, for example).
As background, I did OOP from early '92 (and was on the ANSI C++ Standards Committee for eight years before transitioning to Java, then Groovy, then Scala) although I'd studied FP at university in the '80s and via Scala I came back to FP and have been doing Clojure full-time since 2011 now.
Stepankha Yuliannia wrote:I'm just going to add that performance is a big thing/reason to use FP (supports parallel programming). OOP does not support parallel programming.
Stepankha Yuliannia wrote:Hi Alex,
What is your criteria for whether you should we have a message broker in the middle of your solution? Like RabbitMQ, ZeroMQ, Apache Kafka etc.? I'm especially interested from functional programming point of view.
P.S. I understand your book is focused on an application architecture, but would this be covered too?
Karanveer Plaha wrote:Hi Alexander,
In my work I've encountered scripts and automations which are a collection of imperative functions which are called exclusively for their side effects.
They are composed entirely of I/O steps (fetching data from database, posting to another service, writing logs to file) which are also sequential in terms of time.
What strategies could be applied to begin to make these kinds of imperative programs more functional?
jared kellerman wrote:Hi! I'm currently working on a career transition and going through training to be a full-stack developer. I've only recently become aware of the differences between functional and object oriented programming. My question for you is, how did you decide functional programming was the right path for you and what you wanted to do in your career? Based on your experience, what would you advise a newbie to be asking themselves when deciding which programming path to pursue?
Joe Buckle wrote:Hello all,
I am in an small team of C# developers, and we are tasked to rebuild a medium-sized ASP.NET application written in C# to F#. We have been given a year to be able to put the new application to production. How should we approach this? How do we go about training to be able to attain that functional mindset? How do we extract/retain all that business/domain knowledge and logic present in the current application?
My apologies for all the questions. Thanks!
T H Lim wrote:There are many Scala collections like List, Set, Priority Queue, etc. They are in immutable and mutable forms and they are "functional". However, they do not support the effect F[_] out of the box. Fortunately, Cats Effect provide some of the commonly used collection like queue, dequeue, etc. For the developers, what are the options they have to get an effect-ful collection like Map and List, without writing overly complicated collections that support the effect F[_]? How do other pure FP languages developers manage in general?
Campbell Ritchie wrote:You seem to be doing well for questions