Hello all,
First time posting here but looking to become a fellow, positive contributing member to this forum.
Sorry to bump this older thread but I did want to continue the discussion over using functional programming for blockchain/crypto projects and add that I think the CONTEXT is very important since as Nikisev mentioned, Bitcoin has scaled but doesn't C++ have BOTH functional and OO attributes?
Unless you're Satoshi Nakamoto, statistically speaking, why would any programmer NOT use functional programming if they had the option due to the potential future bugs stemming from tight coupling and spaghetti code?
@nikisev - You brought up a good point in that if it works and allows fast bug fixing, then what's the problem? But that means that the entire system would be DEPENDENT on YOU, right? While the code can scale, what about the physical operations if you also have to run a business, manage other engineers, etc
If you have to hand that codebase over to someone else, much less the open source community (which isn't that the point of ICOs to support the general community?) adds the possibility that someone else might have more challenges in maintaining that codebase than you since they won't know all the intricacies and nuances that YOU, the initial architect, had. Versus had they used a functional programming language from the beginning, there would be NO risk of that at all.
Here's a good video by Uncle Bob of Cleancoders, who uses humor to make his point, that really changed my perspective of using languages/preemptive organizational practices to prevent decreased productivity and lost of morale for the engineers due to "spaghetti code".
I recommend the whole video for actual business analytics but if you only have 2 min, 29:08 to 31:00 gives a simple description of the potential problems a company can face that non-technical people would never, ever know.
https://cleancoders.com/episode/clean-code-episode-1/showAs for TDD, there was actually good Youtube discussion between the designer of Rails, DHH, who thought TDD was crap, Martin Fowler, and the actual inventor of TDD, Kent Beck. It's a 6 part series so I'll just paste the link to the first episode:
https://www.youtube.com/watch?v=z9quxZsLcfo&t=2sDHH made very good points that TDD isn't for everybody and actually decreased HIS productivity. But to my novice thinking, what he failed to convince me of is that his style of working would work for an entire team since not everybody can be a genius like him and Nikisev. If you have to rely on junior programmers on some level, wouldn't it make sense to have a very EASY way to find bugs and ideally prevent bugs from even happening?
I think that's what Elixir (based on Erlang) is good for since it tells you the exact error a lot of the time and Clojure (which still offering OO programming to attract Java guys) has the best practice of relying on the REPL. I've never worked with F#/Haskell or Ocaml but seems to me like they'd all be better choices than a language such as Javascript
Anyways, looking forward to your thoughts as I'd like to start developing blockchain apps but C++ or Go don't inspire me as much as Elixir or Clojure. And definitely NOT JS and hope that WebAssembly will someday free web apps from so dependent on it.
Z