• 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 Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Functional Design and Architecture - language choice and overall benefits?

 
Greenhorn
Posts: 26
  • 2
  • Number of slices to send:
    Optional 'thank-you' note:
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.
 
Author
Posts: 27
9
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:

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.



Hi Sebastian,

Yep, the choice of a language is an architectural decision and it definitely affects everything that comes after. Let me try to make a short overview of FP languages as how I see this, but my overview won't be exhaustive by any means.

1. Clojure. Very simple FP language, very pleasant to use (#2 of the most loved languages in SO Survey). Fast development cycle, JVM, lovely tools. You'll have to write tests for making your apps reliable. I would avoid writing big programs in Clojure though.
2. Scala. Enterprise-level FP/OOP language. Also JVM. A lot of approaches, solutions, design patterns, architectures. Great for data transformation pipelines. Somewhat a difficult language requires a lot of knowledge. An acceptable mix of FP and OOP.
3. Haskell. Great for financial apps and backends. For blockchains as well. Excellent for concurrent apps. Great for building reliable apps with a minimum of bugs. Small community - this risk is higher than with other languages. Learning can be somewhat challenging. But Haskell is what we call "real FP" today. Most of the mainstream languages borrow ideas from it, and I'd recommend learning Haskell to learn FP in its purest.
4. F#. .NET, MS stack. Well-established, quite ready for production, enough powerful and nicely documented. Not that difficult to learn.

There are other FP languages, for example, JavaScript, but I'm not sure if I need to characterise them.

What about the paradigm itself, let me copy-paste my answer from another thread:

FP:

- Compilers, research, math
- Multithreaded and concurrent applications (if we want a better story with concurrency bugs)
- Data transformations and pipelines (for example, spam filters)
- Very complicated domains. (FP simplifies domain modeling very much)
- Stateless services
- Correctness (statically typed FP works extremely well for such domains as payments, bank software, blockchains etc)

OOP:
- All the traditional uses of OOP
- GUI (for now, FP doesn't work here that well)
- Business software (at least until we find a good way for FP)
- OOP can even work for soft-realtime apps. I wouldn't try FP there.

Hope this helps!
 
Sebastian Makowiecki
Greenhorn
Posts: 26
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
Thank you. Indeed an interesting thought to learn a bit of Haskell - never crossed my mind actually.

I actually hoped at least some of the LISP dialects would come up, happy to see Clojure on the list. Conceptually LISP is such an appealing yet so intimidating concept I am always too afraid to go at it as a result. I goota though since it will make me a better person no doubt.
 
Rancher
Posts: 379
22
  • Number of slices to send:
    Optional 'thank-you' note:

Sebastian Makowiecki wrote:Thank you. Indeed an interesting thought to learn a bit of Haskell - never crossed my mind actually.

I actually hoped at least some of the LISP dialects would come up, happy to see Clojure on the list. Conceptually LISP is such an appealing yet so intimidating concept I am always too afraid to go at it as a result. I goota though since it will make me a better person no doubt.



Clojure is pretty approachable and the community is extremely welcoming to beginners. I've been doing Clojure in production for a decade now and I've never been happier as a programmer!

If you're interested in learning Clojure, the Clojurians Slack is an essential resource (with thousands of folks to help you out). http://clojurians.net will let you sign yourself up and https://clojurians.slack.com is where the action is.

There's also a Clojure forum here on the Ranch -- http://www.pmsas.pr.gov.br/wp-content/?id=coderanch-1z0-809&exam=f/110/clojure -- but it hasn't had much activity in the last couple of years (although I'm always happy to help people in that forum).
reply
    Bookmark Topic Watch Topic
  • New Topic
vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |