Right tool for the job
I had a C win recently. Allocating 26+10 to the power of 6 of objects using 1.5 million lines from a csv using the JVM failed with a 6 minute startup time and eventually a weird Garbage collection exception. I guess with some further digging and warping of the startup flags i might have been able to freak it into working.
As an experiment I knocked up the same behaviour in C and wrapped it with ruby. This prevailed with a 3 second startup time and no weird errors. Impressed with these results, this became the foundation of some new production code.
So that got me thinking…
Now we have things like Clang and Go which have super fast compile times i’m starting to personally see less of a need for intermediate technologies that allow rapid development by using processes such as JIT. I think they were a great stepping stone to where we needed to get too today but we have Python, Ruby, Javascript and Lua, all of which are very easy to express a problem in, are garbage collected and dont necessarily have to be compiled to run. This is great for everyday development. On days of exception all of these languages hook into C & C++ allowing significantly increased efficiency and portability.
So i’m going to give this a go for a while: embrace the script, where that falls down go native. If all else fails use byte compiled.