Abstract
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.
Similar content being viewed by others
Notes
References
Bate, R.R., Mueller, D.D., White, J.E.: Fundamentals of Astrodynamics. Dover Publications, New York (1971)
Bezanson, J., Edelman, A., Karpinski, S., Shah, V.B.: Julia: A fresh approach to numerical computing. SIAM Rev. 59, 65–98 (2017). doi:10.1137/141000671
Evans, B.J.: Java in a Nutshell, 6th edn. O’Reilly, Sebastopol (2015)
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)
Marz, N., Warren, J.: Big Data: Principles and Best Practices of Scalable Real-Time Data Systems. Manning, Shelter Island (2015)
Metcalf, M., Reid, J., Cohen, M.: Modern Fortran Explained. Numerical Mathematics and Scientific Computation. Oxford University Press, Oxford (2011)
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)
Stroustrup, B.: The C++ Programming Language, Fourth, edition edn. Addison-Wesley, Upper Saddle River (2013)
Vallado, D.A., McClain, W.D.: Fundamentals of Astrodynamics and Applications. Microcosm Press, Hawthorne (2013)
van der Walt, S., Colbert, S., Varoquaux, G.: The NumPy array: A structure for efficient numerical computation. Com. Sci. Eng. 13(2), 22–30 (2011). doi:10.1109/MCSE.2011.37
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
Acknowledgements
We would like to thank Luc Maisonobe for providing improved versions for some of the Java benchmarks.
Author information
Authors and Affiliations
Corresponding author
Additional information
This paper is based on a presentation at the 6th International Conference on Astrodynamics Tools and Techniques, March 14–17, 2016, Darmstadt, Germany.
Rights and permissions
About this article
Cite this article
Eichhorn, H., Cano, J.L., McLean, F. et al. A comparative study of programming languages for next-generation astrodynamics systems. CEAS Space J 10, 115–123 (2018). https://doi.org/10.1007/s12567-017-0170-8
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s12567-017-0170-8