In a really interesting project I’m currently working, I’ve had a really good success in taking Python into use in research organization and in our project as a language to describe a calculation model in situation where Microsoft Excel used to be the normal tool for researchers to model calculations. Excel is a great tool – no questions asked – but like so many great tools people misuse these powerful tools to do something awful.
Python has been a great replacement and the end product we are creating is from another planet compared to previous excel worksheets that modeled the same thing. Calculation logic is much easier to figure out, understand and extend when it is laid out as python code which reads out like natural language written in English. And more importantly, this model – written in Python, works greatly also as a service engine in java backend through Jython. Jython is Python 2.5 implemented in java – and even though it runs slower than CPython or pure java code, the convenience of having great scripting language as a tool in your java infrastructure is great.
Earlier we tried numerous different things to achieve the same things. First we tried to model calculations in Java and teach researchers to write Java in IDE. Unfortunately Java presented too much overhead to people to understand, when they just wanted to write simple equations and logic – so no great success with that experiment. Next we tried to use different Excel-parsing libraries so that people would be able to use their natural tool – Excel – and we could run Excel calculations and scripts in the backend. Even though we found a really promising library to use ( http://www.smartxls.com/indexj.htm ), we eventually decided to try out Python before committing into using it – as using Excel library would not have solved the initial problem of people misusing Excel just because they did not know of anything better.
And luckily for us, Python proved to be a perfect tool for us.
I am still yet to use our calculation model with Resolver One, but will do that sooner or later as it will be a quite powerful demonstration to everyone about different benefits of using proper tools. Resolver One is python enabled spreadsheet program, in which you can use your own python code in your spreadsheets. This means that you can create your models in Python and use spreadsheet as a GUI and rapid testing / calculation environment for your models.