Page 75 - Raspberry Pi as a Foundation for Boosting Computer and Technology Literacy
P. 75

6  Programming

                         on the Raspberry Pi            6







            Despite deliberately exposing more of their insides than other com-
            puters, the eponymous products of the Raspberry Pi Foundation are
            still essentially general-purpose computing devices. Consequently, the
            programming process is not drastically different from that on other
            platforms (Korom and Illés 2022). Nevertheless, what sets the Rasp-
            berry Pi apart is its capability to transcend the boundaries of soft-
            ware-level applications. By incorporating GPIO pins, users are enabled
            to take their projects into the domain of physical computing, making
            software interact with the real world through external hardware (Hal-
            facree 2020, 120–121). This opens up a vast array of possibilities for
            creative projects that merge both software and hardware. Fortunately,
            users have the flexibility to choose from a variety of programming lan-
            guages and related tools.

            6.1  Selecting a programming language   6.1
            The choice of a programming language pivots on the project’s end-
            goals, specific requirements (e.g. dependence on external libraries,
            utilization of GPIO pins, etc.), as well as various other factors associ-
            ated with the given project. In this regard, Spinellis (2006) emphasizes
            several key factors to consider: ‘programmer productivity, maintaina-
            bility, efficiency, portability, tool support, and software and hardware
            interfaces.’ Furthermore, one would also want to consider the code
            length, development time, memory consumption, and runtime effi-
            ciency (Prechelt 2000).
              The attributes of programming languages and the projects devel-
            oped using them substantially depend on the language’s level of ab-
            straction. Levels of abstraction refer to the hierarchical organization
            of software and programming concepts, which are constructed layer
            by layer on top of the system’s hardware. Each new layer adds more
            abstraction, thus disguising the details and complexity of the previous
            layers, allowing developers to simplify the process of problem-solving


                        75
   70   71   72   73   74   75   76   77   78   79   80