The languages in developing a new algorithm

You have an idea for a new algorithm! Great, what to do next?

You prototype it in Python because of the expressiveness and the dynamic typing is a really cool thing to have while messing around. Performance wise it isn’t anything to show off and you think that you really need something faster.

You choose Go to rewrite the algorithm to take advantage of gorotutines, channels, etc… and you change your app so it can run in your multi-core computer.

Your algorithm is getting to shape, is fast but not the fastest and in your pursuit to make it faster than light, you end up rewriting it in plain old good C just to see how much you can squeeze of those clock cycles.

It is now fast, great and is attracting attention from the industry. You end up writing the algorithm in Java, that gold standard of the industry, and make big money selling it.

But it was developed in academia so you have to publish it in journals and conferences. After all this is your master piece! You rewrite your algorithm in Clojure, just to look smart, you publish several papers on it, and get a tenure on a famous university… doing the occasional consulting sting and getting rich (you hope).

After some time in academia you get a grad student that wants to work with your algorithm. He is excited about the work, but he doesn’t know how to program. You then decide to rewrite your algorithm once again in Python (you lost your original code years ago) to make it easy on your student to learn.

Curiously your code is now shorter, elegant, and very fast. You tell yourself that Guido must have done something magic to CPython in the past few years and contemplate the brilliance of your code.

I could have just called this post ‘some programming languages that you should know or be aware of’