A comparative study of programming languages for next-generation astrodynamics systems
- 277 Downloads
Due to the computationally intensive nature of astrodynamics tasks, astrodynamicists have relied on compiled programming languages such as Fortran for the development of astrodynamics software. Interpreted languages such as Python, on the other hand, offer higher flexibility and development speed thereby increasing the productivity of the programmer. While interpreted languages are generally slower than compiled languages, recent developments such as just-in-time (JIT) compilers or transpilers have been able to close this speed gap significantly. Another important factor for the usefulness of a programming language is its wider ecosystem which consists of the available open-source packages and development tools such as integrated development environments or debuggers. This study compares three compiled languages and three interpreted languages, which were selected based on their popularity within the scientific programming community and technical merit. The three compiled candidate languages are Fortran, C++, and Java. Python, Matlab, and Julia were selected as the interpreted candidate languages. All six languages are assessed and compared to each other based on their features, performance, and ease-of-use through the implementation of idiomatic solutions to classical astrodynamics problems. We show that compiled languages still provide the best performance for astrodynamics applications, but JIT-compiled dynamic languages have reached a competitive level of speed and offer an attractive compromise between numerical performance and programmer productivity.
KeywordsScientific programming Computational astrodynamics Open-source software
We would like to thank Luc Maisonobe for providing improved versions for some of the Java benchmarks.
- 1.Bate, R.R., Mueller, D.D., White, J.E.: Fundamentals of Astrodynamics. Dover Publications, New York (1971)Google Scholar
- 3.Evans, B.J.: Java in a Nutshell, 6th edn. O’Reilly, Sebastopol (2015)Google Scholar
- 4.Hairer, E., Nørsett, S.P., Wanner, G.: Solving Ordinary Differential Equations I: Nonstiff Problems, 2nd Revision. Edition no. 8 in Springer Series in Computational Mathematics. Springer, Heidelberg (2009)Google Scholar
- 5.Marz, N., Warren, J.: Big Data: Principles and Best Practices of Scalable Real-Time Data Systems. Manning, Shelter Island (2015)Google Scholar
- 7.Prechtelt, L.: Two comparisons of programming languages. In: Oram, A., Wilson, G. (eds.) Making Software: What Really Works, and Why We Believe It, 1st edn, pp. 239–258. O’Reilly, Sebastopol (2011)Google Scholar
- 9.Vallado, D.A., McClain, W.D.: Fundamentals of Astrodynamics and Applications. Microcosm Press, Hawthorne (2013)Google Scholar
- 11.Wilson, G., Aruliah, D.A., Brown, C.T., Chue Hong, N.P., Davis, M., Guy, R.T., Haddock, S.H.D., Huff, K.D., Mitchell, I.M., Plumbley, M.D., Waugh, B., White, E.P., Wilson, P.: Best practices for scientific computing. PLoS Biol. 12(1), e1001, 745 (2014). doi: 10.1371/journal.pbio.1001745