On the Potential of the Julia Programming Language for Solving Scientific and Engineering Problems

Authors: Belov G.V., Aristova  N.M. Published: 05.06.2020
Published in issue: #2(131)/2020  
DOI: 10.18698/0236-3933-2020-2-27-43

Category: Informatics, Computer Engineering and Control | Chapter: Mathematical Modelling, Numerical Methods, and Program Complexes  
Keywords: mathematical simulation, software library, Julia programming language

The paper provides a brief description of the Julia language and discusses several libraries and software packages written in this language and designed to solve various scientific and engineering problems. The Julia language has been developed relatively recently, but our analysis of existing publications indicates its growing popularity. We limited the scope of the paper to review only those few libraries and software packages that may be useful to researchers and engineers who develop software simulations and conduct numerical experiments. Specifically, we did not consider dedicated libraries for economic, biological and medical applications. At present, there exists a large number of programming languages, each of them developed to overcome the limitations of the ones already available. Each language has its advantages and disadvantages and is suited best for a particular purpose. The objective of our paper is to familiarise the reader with the potential of the Julia programming language for solving scientific and engineering problems


[1] Ayer V.M., Miguez S., Toby B.H. Why scientists should learn to program in Python. Powder Diffr., 2014, vol. 29, no. s2, pp. S48--S64. DOI: https://doi.org/10.1017/S0885715614000931

[2] Lubin M., Dunning I. Computing in operations research using Julia. INFORMS J. Comput., 2015, vol. 27, no. 2, pp. 193--430. DOI: https://doi.org/10.1287/ijoc.2014.0623

[3] Bezanson J., Karpinsky S., Shah V.B., et al. Julia: a fast dynamic language for technical computing. arXiv.org: website. Available at: https://arxiv.org/abs/1209.5145 (accessed: 19.12.2019).

[4] Bezanson J., Edelman A., Karpinsky S., et al. Julia: a fresh approach to numerical computing. SIAM Rev., 2017, vol. 59, no. 1, pp. 65--98. DOI: https://doi.org/10.1137/141000671

[5] Lattner C., Adve V. LLVM: A compilation framework for lifelong program analysis & transformation. Proc. CGO Int. Symp., 2004, pp. 75--86. DOI: https://doi.org/10.1109/CGO.2004.1281665

[6] Mogensen P.K., Riseth A.N. Optim: a mathematical optimization package for Julia. J. Open Source Softw., 2018, vol. 3, no. 24. DOI: https://doi.org/10.21105/joss.00615

[7] Dunning I., Huchette J., Lubin M. JuMP: a modeling language for mathematical optimization. SIAM Rev., 2017, vol. 59, no. 2, pp. 295--320. DOI: https://doi.org/10.1137/15M1020575

[8] Udell M., Mohan K., Zeng D., et al. Convex optimization in Julia. Proc. 1st Workshop for High Performance Technical Computing in Dynamic Languages, 2014, pp. 18--28. DOI: https://doi.org/10.1109/HPTCDL.2014.5

[9] Grant M., Boyd S., Ye Y. Disciplined convex programming. In: Global optimization. Springer, 2006, pp. 155--210.

[10] Biel M., Johansson M. Efficient stochastic programming in Julia. arXiv.org: website. Available at: https://arxiv.org/abs/1909.10451 (accessed: 19.12.2019).

[11] Rackauckas C., Nie Q. DifferentialEquations.jl --- a performant and feature-rich ecosystem for solving differential equations in Julia. J. Open Res. Softw., 2017, vol. 5, no. 1, art. 15. DOI: https://doi.org/10.5334/jors.151

[12] Garstka M., Cannon M., Goulart P. COSMO: a conic operator splitting method for convex conic problems. arXiv.org: website. Available at: https://arxiv.org/abs/1901.10887 (accessed: 19.12.2019).

[13] Castelani E.V., Lopes R., Wesley V.I., et al. RAFF.jl: robust algebraic fitting function in Julia. J. Open Res. Softw., 2019, vol. 4, no. 39. DOI: https://doi.org/10.21105/joss.01385

[14] Otter M., Elmqvist H., Zimmer D., et al. Thermodynamic property and fluid modeling with modern programming language construct. Proc. 13th Int. Modelica Conf. Regensburg, Germany, 2019, pp. 589--598. DOI: https://doi.org/10.3384/ecp19157589

[15] Pawar S., San O. CFD Julia: a learning module structuring an introductory course on computational fluid dynamics. Fluids, 2019, vol. 4, no. 3, art. 159. DOI: https://doi.org/10.3390/fluids4030159

[16] Frondelius T., Aho J. JuliaFEM --- open source solver for both industrial and academia usage. Rakenteiden Mekaniikka, 2017, vol. 50, no. 3, pp. 229--233. DOI: https://doi.org/10.23998/rm.64224

[17] Revels J., Lubin M., Papamarkou T. Forward-mode automatic differentiation in Julia. arXiv.org: website. Available at: https://arxiv.org/abs/1607.07892 (accessed: 19.12.2019).

[18] Rapo M., Aho J., Frondelius T. Natural frequency calculations with JuliaFEM. Rakenteiden Mekaniikka, 2017, vol. 50, no. 3, pp. 300--303. DOI: https://doi.org/10.23998/rm.65040

[19] Fairbrother J., Nemeth C., Rischard. M., et al. GaussianProcesses.jl: a Nonparametric Bayes package for the Julia language. arXiv.org: website. Available at: https://arxiv.org/abs/1812.09064 (accessed: 19.12.2019).

[20] Besancon M., Anthoff D., Arslan A., et al. Distributions.jl: definition and modeling of probability distributions in the JuliaStats ecosystem. arXiv.org: website. Available at: https://arxiv.org/abs/1907.08611 (accessed: 19.12.2019).

[21] Koolen T., Deits R. Julia for robotics: simulation and real-time control in a high-level programming language. Proc. ICRA, 2019. DOI: https://doi.org/10.1109/ICRA.2019.8793875

[22] Ge H., Xu K., Ghahramani Z. Turing: A language for flexible probabilistic inference. Proc. 21st Int. Conf. on Artificial Intelligence and Statistics. Vol. 4. 2018, pp. 1682--1690.

[23] Kramer S., Plankensteiner D., Ostermann L., et al. QuantumOptics.jl: a Julia framework for simulating open quantum systems. Comput. Phys. Commun., 2018, vol. 227, pp. 109--116. DOI: https://doi.org/10.1016/j.cpc.2018.02.004

[24] Tan S.M. A computational toolbox for quantum and atomic optics. J. Opt. B: Quantum Semiclass. Opt., 1999, vol. 1, no. 4, art. 424. DOI: https://doi.org/10.1088/1464-04266/1/4/312

[25] Johansson J.R., Nation P.D., Nori F. QuTiP: an open-source Python framework for the dynamics of open quantum systems. Comput. Phys. Commun., 2012, vol. 183, no. 8, pp. 1760--1772. DOI: https://doi.org/10.1016/j.cpc.2012.02.021

[26] Gawron P., Kurzyk D., Pawela L. QuantumInformation.jl --- a Julia package for numerical computation in quantum information theory. PlOS ONE, 2018, vol. 13, no. 12, art. e0209358. DOI: https://doi.org/10.1371/journal.pone.0209358

[27] Fieker C., Hart W., Hofmann T., et al. Nemo/Hecke: computer algebra and number theory packages for the Julia programming language. Proc. ACM ISAAC, 2017, pp. 157--164. DOI: https://doi.org/10.1145/3087604.3087611

[28] Tomasi M., Giordano M. Towards new solutions for scientific computing: the case of Julia. arXiv.org: website. Available at: https://arxiv.org/abs/1812.01219 (accessed: 19.12.2019).

[29] Luo X.Z., Liu J.G., Zhang P., et al. Yao.jl: extensible, efficient framework for quantum algorithm design. arXiv.org: website. Available at: https://arxiv.org/abs/1912.10877 (accessed: 19.12.2019).

[30] Sinaie S., Nguyen V.P., Nguyen C.T., et al. Programming the material point method in Julia. Adv. Eng. Softw., 2017, vol. 105, pp. 17--29. DOI: https://doi.org/10.1016/j.advengsoft.2017.01.008

[31] Pastell M. Weave.jl: scientific reports using Julia. J. Open Source Softw., 2017, vol. 2, no. 11, art. 204. DOI: https://doi.org/10.21105/joss.00204

[32] Boyd S., Vandenberghe L. Introduction to applied linear algebra: vectors, matrices, and least squares. Cambridge University Press, 2018.

[33] Kochenderfer M.J., Wheeler T.A. Algorithms for optimization. MIT Press, 2019.

[34] Kwon C. Julia programming for operations research: a primer on computing. Independently Publ., 2019.

[35] Klok H., Nazarathy Y. Statistics with Julia: fundamentals for data science, machine learning and artificial intelligence. Available at: https://github.com/h-Klok/StatsWithJuliaBook (accessed: 19.12.2019).

[36] Antonyuk V.A. Yazyk Julia kak instrument issledovatelya [Julia language as a tool of explorer]. Moscow, Lomonosov MSU Publ., 2019.

[37] Sherrington M. Mastering Julia. Birminghan, Packt Publishing Ltd., 2015.