Page 76 - Raspberry Pi as a Foundation for Boosting Computer and Technology Literacy
P. 76
6 Programming on the Raspberry Pi
(Kollár, Pietriková, and Chodarev 2012). In practice, the concept of lev-
els of abstraction encompasses a diverse array of elements. These in-
clude components such as GUI, object-oriented programming (OOP),
application programming interfaces (APIs), external modules, librar-
ies, and various fundamental programming aspects such as functions,
variables, and data types.
Thus, although high-level programming languages are designed to ab-
stract away the machine code and provide a more user-friendly way
of expressing algorithms, they tend to sacrifice intricate control over
the hardware and runtime performance. On the other hand, low-level
programming languages are closely related to the machine’s architecture
and, therefore, are usually more efficient and optimized at the cost of
complexity and human-readability (Winograd 1979).
Moreover, variations in levels of abstraction usually suggest dif-
ferences in the type of language processor being used, often either a
compiler or an interpreter or a combination of both. A compiler trans-
lates the entire source code of a program into executable machine code
while simultaneously detecting and reporting any errors that might
arise during this process (e.g. in C and C++). On the other hand, an
interpreter translates the source code line by line, directly executing
the specified operations (e.g. in Python, Ruby, Wolfram language, Perl,
and Bash). A hybrid of both approaches would involve initially compil-
ing the source code into an intermediate form, which is subsequently
interpreted and executed (e.g. in Java and C#) (Aho et al. 2007). While
not an absolute rule, low-level languages are generally compiled,
whereas high-level languages tend to be interpreted.
6.2 Available programming languages 6.2
Even though the pool of programming languages available on Rasp-
berry Pi devices is almost limitless, the selection is generally deter-
mined by the OS that a user decides to install. In this case, the two
major competing OS types are Windows (e.g. Windows 10 IoT) and
Linux (e.g. Raspberry Pi OS, Ubuntu, Manjaro, etc.). Various OS fami-
lies exhibit varying degrees of compatibility and support for particular
programming languages.
As a result, they have different native, supported, and pre-installed
environments and components (such as compilers, interpreters,
frameworks, development environments, etc.). For instance, C# devel-
opment is native to Windows systems, although it is also supported
76