Was just working on project in Clojure. JVM man.And all this brackets ...cmon.
Erlang is awesome , no doubt , networking performance is just mind blowing.
TDD very useful, i do everything in TDD now. But to a point. If you have to spend 2 weeks writing e2e tests. Well.TDD wont help you.
It allows to pass code to other developers.
Anyhow, i think C++ choice was due to number cranching required for encryption. Cant bit C++ in raw calculation performance in general case on random os with random hardware.
Very cool! So the Clojure project was a blockchain project or something unrelated? Yes, the brackets/parens are a lot but have you watched any of the designer of the language, Rich Hickey, videos on youtube? His view of the world and how the mind thinks are really inspiring. Here are two that I really enjoyed:
Hammock Driven Development (warning, he covers meditation in it)
https://www.youtube.com/watch?v=f84n5oFoZBcHere is an interview between him and Brian Beckman. I wish all discussions around programming could be done in this manner:
https://www.youtube.com/watch?v=wASCH_gPnDwAs for TDD, good to hear you practice it (also with blockchain projects?) but agree with you that there's a certain point that it becomes too much. I think that was DHH's point in those videos and of course the infamous Ruby Conf where he fired the initial shots at TDD:
https://www.youtube.com/watch?v=wASCH_gPnDw(warning: Tons of F-bombs in DHH vid)
I think the best programming language for an open source project especially at the scale of BitCoin is how strong the community is in that programming language. You don't want to scare people off by making some wierd language choices.
There are situations when a functional language might be better, but the opportunity costs associated with them for bitcoin was simply magnitudes higher.
You make a great point but as I was reading your post, I remembered an article that Paul Graham from Y Combinator said regarding using a Lisp language when everybody was making Java WAS A COMPETITIVE ADVANTAGE. I'll paste the link below and some of the text:
http://www.paulgraham.com/avg.html"Software is a very competitive business, prone to natural monopolies. A company that gets software written faster and better will, all other things being equal, put its competitors out of business. And when you're starting a startup, you feel this very keenly. Startups tend to be an all or nothing proposition. You either get rich, or you get nothing. In a startup, if you bet on the wrong technology, your competitors will crush you.
Robert and I both knew Lisp well, and we couldn't see any reason not to trust our instincts and go with Lisp. We knew that everyone else was writing their software in C++ or Perl. But we also knew that that didn't mean anything. If you chose technology that way, you'd be running Windows. When you choose technology, you have to ignore what other people are doing, and consider only what will work the best.
This is especially true in a startup. In a big company, you can do what all the other big companies are doing. But a startup can't do what all the other startups do. I don't think a lot of people realize this, even in startups.
The average big company grows at about ten percent a year. So if you're running a big company and you do everything the way the average big company does it, you can expect to do as well as the average big company-- that is, to grow about ten percent a year.
The same thing will happen if you're running a startup, of course. If you do everything the way the average startup does it, you should expect average performance. The problem here is, average performance means that you'll go out of business. The survival rate for startups is way less than fifty percent. So if you're running a startup, you had better be doing something odd. If not, you're in trouble.
Back in 1995, we knew something that I don't think our competitors understood, and few understand even now: when you're writing software that only has to run on your own servers, you can use any language you want. When you're writing desktop software, there's a strong bias toward writing applications in the same language as the operating system. Ten years ago, writing applications meant writing applications in C. But with Web-based software, especially when you have the source code of both the language and the operating system, you can use whatever language you want.
This new freedom is a double-edged sword, however. Now that you can use any language, you have to think about which one to use. Companies that try to pretend nothing has changed risk finding that their competitors do not.
If you can use any language, which do you use? We chose Lisp. For one thing, it was obvious that rapid development would be important in this market. We were all starting from scratch, so a company that could get new features done before its competitors would have a big advantage. We knew Lisp was a really good language for writing software quickly, and server-based applications magnify the effect of rapid development, because you can release software the minute it's done.
If other companies didn't want to use Lisp, so much the better. It might give us a technological edge, and we needed all the help we could get. When we started Viaweb, we had no experience in business. We didn't know anything about marketing, or hiring people, or raising money, or getting customers. Neither of us had ever even had what you would call a real job. The only thing we were good at was writing software. We hoped that would save us. Any advantage we could get in the software department, we would take."