In many posts of the UnRisk Insight Blog, we look at quant finance through the lenses of mathematics, physics and computer science. We usually enjoy about 200 page views a day with a moderate upwards tendency.
Last Friday page views exploded to breathtaking 40.000 and it is still much higher than before. What happened?
Problems, solutions, implementations and skills
Andreas Binder, UnRisk CEO, introduced the Goats, Wolves and Lions puzzle. And the team introduced different solutions from brute force to analytic and different implementations. Sascha Kratky, UnRisk's senior software engineer, closed the episode with a comparison of the Wolfram Language, C++11, Java 8 and Javascript: Fast Functional Goats, Wolves and Lions.
Because it touches many programming principles, we have introduced the puzzle and implementations in programmer forums with the above mentioned result. It was spiritedly discussed.
Brute force or analytic, what programming style, which language?
The approaches of the team was clearly guided by the background of the members. Stefan Janecek, Quantum Physicist and myself, Algebraist, acted as abstractonauts searching for an elegant solution and failed in the given time constraint.
Sascha printed a functional programming solution without any mathematical shortcuts and wrote e program that creates a little fairy tale about magic forests: Functional Goats, Wolves and Lions. Amazing.
If you want to read the whole episode you find it here.
Platform agnostic, multi-language and inherently parallel
The lessons learned from this little episode: there are great programming technologies, but you still need hybrid programming choosing the languages that fit best for the purposes. And performance still matters.
You want to develop an industry scale solution for complex problems, utilizing the new heterogeneous computing muscles? Make your software platform agnostic, multi-language and inherently parallel.
But there is more.
An antifragile system strategy
You need a careful design and a clever bottom up approach to avoid the trap of developing a tightly coupled complex system.
How? Read an antifragile system concept