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
   71   72   73   74   75   76   77   78   79   80   81