This week's book giveaways are in the Cloud and AI/ML forums.
We're giving away four copies each of Cloud Native Patterns and Natural Language Processing and have the authors on-line!
See this thread and this one for details.
Win a copy of Cloud Native PatternsE this week in the Cloud forum
or Natural Language Processing in the AI/ML forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Devaka Cooray
  • Liutauras Vilda
  • Jeanne Boyarsky
  • Bear Bibeault
Sheriffs:
  • Paul Clapham
  • Knute Snortum
  • Rob Spoor
Saloon Keepers:
  • Tim Moores
  • Ron McLeod
  • Piet Souris
  • Stephan van Hulst
  • Carey Brown
Bartenders:
  • Tim Holloway
  • Frits Walraven
  • Ganesh Patekar

List of Functional Programming Concepts and languages that support them.

 
Ranch Hand
Posts: 333
Scala Spring Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.






 
Marshal
Posts: 6943
471
Mac OS X VI Editor BSD Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Indeed, a lot requests for thoughts, you touched too many areas to answer somewhat clear and to the point.

I'd say don't get stuck on particular language. As a programmer you most likely will need to know more than one. Bjarne Stroustrup says, you need to know about 5 languages (<-- link) reasonably well.

However, not just the languages, but concepts are the ones you need to understand, irrespective of the language in use.

I'm reading just now book about functional programming, and in a book is mentioned, that there is no such thing as funcional language, however, there is functional programming and its concepts, and some languages are more friendly to these than others.

Scala's functional programming features support is better than Java's is, but you perfectly could write imperative code using Scala or Haskell (which has even stronger functional programming support).

Clojure you touched, is one of JVM languages, I wouldn't say it has no demand, have friends who work with it. You need to like Lisp (as it is similar to it), which has various descendants, including Racket (I love that language).

I would say you don't need to differentiate a lot OOP and functional programming, I think they complement each other, rather than otherwise. Having said that - Java also can be used implementing functional programming concepts (especially with Java 8).

I find my answers get a bit messy in thoughts, I think you'll have to narrow down the area of questions, so the community could step-in more precicely.
 
Marshal
Posts: 64998
246
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Java┬« supports functional programming. So does RFun, reversibly. RVM_Forth supports λs, also reversibly. You are not going to find a complete list of languages supporting functional concepts anywhere, and even if you did find a complete list, somebody would develop a new language and your lost would be out of date.
Maybe you would do well to go through our books pages and look for Functional Programming in Scala by Paul Chiusano and Runar Bjarnason, this thread about functional books (date=2014), Cay Horstmann's book, or P-Y Saumont's book.
 
Bartender
Posts: 1031
18
Mac OS X IntelliJ IDE Oracle Spring VI Editor Tomcat Server Redhat Java Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Wiki Functional Programming Languages
 
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!