Julia Programming for Physics Applications


Türk Çakır İ., Türeci R. G., Dağıstanlı H.

Springer, London/Berlin , London, 2025

  • Yayın Türü: Kitap / Diğer
  • Basım Tarihi: 2025
  • Yayınevi: Springer, London/Berlin 
  • Basıldığı Şehir: London
  • Ankara Üniversitesi Adresli: Evet

Özet

Computer programming languages are used to express machine language codes
consisting of 0’s and 1’s with various symbols and grammatical structures
in microprocessor-driven systems. The grammatical structure created by the
programmer with these symbols is different from the machine language and therefore
must be converted into a form that the machine (microprocessor) understands. This
conversion process is called compilation.
Computer programming languages are divided into three main groups according
to their coding levels: low level, medium level and high level. In low-level soft-
ware languages, machine language is expressed in symbols and is called Assembly
language. The codes written in this language are long and turn into a shorter code
whole after compilation. Assembly language is an efficient language. However, since
it is not similar to human language structure, it is difficult both to learn this language
and to code in this language. For this reason, intermediate software languages have
been developed. Intermediate-level software languages are closer to human language
structure and contain the features of low-level language. Therefore, it is close to
both human language and machine language. Although the codes converted into
machine language by compiling mid-level languages are not as effective as low-level
languages, their performance is still good. Examples of intermediate-level languages
are C or C++. High-level software languages are close to human language. Therefore,
the learning and coding process is very short. These software languages have many
software libraries. Thanks to these libraries, the software developer can benefit from
these libraries without using long codes. Moreover, effective codes can be created
by using the features in different libraries in different combinations according to the
purpose. However, in high-level software languages, after the software is compiled,
the number of machine language codes that arise due to the libraries used is high
and therefore the performance of high-level software languages is low. However,
since the processing power of microprocessors is high today, the processing power
of the microprocessor tolerates the low performance of the software. Examples of
high-level software languages are C#, Python, Julia and Java.
Software languages are also divided into three in terms of their operation; compli-
able, timely compiled, and interpreted languages. Examples of compiled languages
vii
viii Preface
are C, C++ and Pascal, and examples of timely compiled languages are C# and
Java. In interpreted software languages, the code written by the developer is read
line by line and executed by interpretation. Therefore, this language group needs an
interpreter. One of the best examples of interpreted languages is Julia.
Julia software language is a high-level language in terms of coding type and inter-
preted language structure as a working principle. Since it has a high-level language
structure, it is used effectively in artificial intelligence studies. However, another
extremely important feature of the Julia language is that this language is an open-
source language. Many software developers from all over the world make libraries
available to users free of charge on platforms such as GitHub. Julia’s characteristics
can be summarised in general terms as speed, rich ecosystem, easy to use, paral-
lelism, concurrency and cross platform compatibility. One of the most important
features of Julia is its just-in-time (JIT) compilation. This allows Julia to dynam-
ically compile code and optimise it for runtime performance. In addition to being
a high-level language structure, being open source has made Julia a very popular
language.
Although Julia is a language for general use and numerical computing, it is also
well suited for data science and machine learning applications. Some of the main
features of Julia are: dynamic type system, multiple references or multiple methods,
integrated package manager, distributed and parallel computing, process manage-
ment through the shell, support for user-defined types, simultaneous input and output
processing, logging and performance analysis tools. Julia’s dynamic type system
allows the type of a value to change, and multiple dispatch or multiple methods can
be used to call different methods at runtime. These features of Julia provide a great
advantage for its use in data science and machine learning. In addition, Julia’s features
such as integrated package manager, distributed and parallel computing capabilities,
logging and performance analysis tools make Julia preferable for data scientists and
machine learning engineers.
To make academic calculations, there are software such as Mathematica,
MATLAB, Maple, which are highly professional and work effectively, and which
cost a high price to obtain with individual means. Mathematica, being a knowledge-
based software, provides the opportunity to perform calculations without requiring
much numerical analysis knowledge and is the most advanced software in its field.
Similar calculations can be done in Julia language, which is open source, and using
Julia libraries, which are also open source. However, the user must be familiar with
the Julia language and moreover, the user must have a good command of numerical
analysis.
In addition to being open source, Julia is a high-level language, which makes
it possible to prepare highly efficient programmes. The best example of this is the
considerable use of Julia language in artificial intelligence and machine learning
studies.
In the introduction section of the book, the installation of Julia environment. In the
next three chapters, general features of the Julia language are mentioned. In the fourth
chapter, graphics specially prepared for numerical analysis are mentioned. Thus, it
is tried to introduce plot modules and plot functions that can be used in physics and
Preface ix
engineering calculations without writing extra code. In the sixth chapter, data frames
are mentioned. Finally, in the next nine chapters, the features described in the first
six chapters of the book are applied to physics (high energy physics, nuclear physics,
solid state physics, mechanics, electromagnetism, astrophysics, quantum physics,
waves) and statistics.