Skip to main content
Log in

A comparative study of programming languages for next-generation astrodynamics systems

  • Original Paper
  • Published:
CEAS Space Journal Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2

Similar content being viewed by others

Notes

  1. https://gcc.gnu.org/fortran/.

  2. http://www.g95.org/.

  3. https://gcc.gnu.org/.

  4. https://clang.llvm.org/.

  5. http://openjdk.java.net/.

  6. https://www.mathworks.com/pricing-licensing.html?prodcode=ML.

  7. https://www.gnu.org/software/octave/.

  8. https://www.scipy.org.

  9. http://cython.org/.

  10. http://numba.pydata.org/.

  11. http://llvm.org/.

  12. https://github.com/helgee/icatt-2016.

  13. http://eigen.tuxfamily.org/index.php?title=Main_Page.

  14. https://cffi.readthedocs.io/en/latest/.

References

  1. Bate, R.R., Mueller, D.D., White, J.E.: Fundamentals of Astrodynamics. Dover Publications, New York (1971)

    Google Scholar 

  2. 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

    Article  MathSciNet  MATH  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)

  5. Marz, N., Warren, J.: Big Data: Principles and Best Practices of Scalable Real-Time Data Systems. Manning, Shelter Island (2015)

    Google Scholar 

  6. Metcalf, M., Reid, J., Cohen, M.: Modern Fortran Explained. Numerical Mathematics and Scientific Computation. Oxford University Press, Oxford (2011)

    MATH  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 

  8. Stroustrup, B.: The C++ Programming Language, Fourth, edition edn. Addison-Wesley, Upper Saddle River (2013)

    MATH  Google Scholar 

  9. Vallado, D.A., McClain, W.D.: Fundamentals of Astrodynamics and Applications. Microcosm Press, Hawthorne (2013)

    Google Scholar 

  10. 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

    Article  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

Download references

Acknowledgements

We would like to thank Luc Maisonobe for providing improved versions for some of the Java benchmarks.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Helge Eichhorn.

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

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

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

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s12567-017-0170-8

Keywords

Navigation