Hi Ranchers,
I am interested in learning functional programming languages.
However I am not able to get the complete list of Functional Programming Concepts and languages that support them.
Haskell /Lisp are pure functional languages.
Smalltalk is Pure OOP.
However, out of the newer languages,
Scala, Clojure, Kotlin, Groovy, Python, (Javascript/Ecmascript/Typescript/Coffescript/ClojureScript/Dart) , Go, Erlang, Elixir, Solidity (Ethereum)
Some of the features may be /may not be supported by one or more of the above languages.
I am trying to classify which functional/OOP features of pure languages are supported by all of the above languages.
OOP Pillars:
Abstraction, Encapsulation, Inheritance,
Polymorphism, Objects, Cohension and Coupling.
Functional programming :
Side Effects, High Order Functions, Lambda Expressions, IO, Immutability, Function Currying, Mixins, Closures, ApplicativeFunctors, Monads, Monoids.
Apart from above concepts, what are the other concepts which will complete the list, which concepts did I miss from the list? Request a complete list of Functional Programming Concepts.
Also I have heard about Reactive Programming. What is it good for and when to and when not to use languages ?
Reactive Programming Languages :
RxJava, RxScala, RxJs, ReactiveIO
When should we use which languages(OOP/ FP/Reactive) ?
As far as I am aware:
Scala/Python/R/Matlab: BigData (Scala Prefered for performance/Python prefered for Maths libs and simplicity)
Kotlin/Java: Android (Kotlin prefered)
Clojure : AI/ML/Microservices
Go/Elixir/Erlang : Concurrency and Parallel Processing.
Solidity/Serpent : Blockchain
Javascript /typescript /ecmascript /coffescript/ClojureScript/Dart /Webassembly: Client Side.
Groovy/Ruby: ?
C/C++/Rust/Arduino: Low Level/ Hardware/ Embedded/IOT
Objective C/Swift :IOS
If I have to choose one best language (What should I choose?)
May be (Scala/Kotlin/Clojure/Erlang/Rust/Go)
I think Clojure is the best choice which fits the bill. (Good for BigData, Microservices, AI/ML. Concurrency and Parallel Programming/Mobile/Blockchain/Web(ClojureScript)
But job market is not indicating any signs for Clojure growth. Don't know why?
It's good for Scala/Golang.
I know these are too many questions, but request your help and opinion.
Help is always appreciated.
Regards
Regards,
-Pankaj.