Page 298 -
P. 298

13 Combining Mathematical and Simulation Approaches to Understand...  297


            13.3 Different Ways of Representing the Same Formal Model


            A somewhat controversial issue in the social simulation literature refers to the
            allegedly unique features of some modelling platforms. It is important to realise
            that any formal model implemented in a computer model can be re-implemented in
            many different programming languages, leading to exactly the same input–output
            relation. Different implementations are just different ways of representing one same
            formal model, much in the same way that one can say ‘Spain’ or ‘España’ to express
            the same concept in different languages: same thing, different representation, that’s
            all.
              Thus, when analysing the dynamics of a computer model, it is useful to abstract
            from the details of the modelling platform that has been used to implement the
            computer model and focus strictly on the formal model it represents, which could be
                                               5
            re-implemented in any sophisticated enough modelling platform. To be clear, let us
            emphasise that any computer model implemented in Objective-C (e.g. using Swarm)
            can be re-implemented in Java (e.g. using RePast or Mason), NetLogo, SDML,
            Mathematica© or Matlab©. Similarly, any computer model can be expressed as a
            well-defined mathematical function (Epstein 2006; Leombruni and Richiardi 2005;
            Richiardi et al. 2006).
              Naturally, the implementation of a particular formal model may be more straight-
            forward in some programming languages than in others. Programming languages
            differ in where they position themselves in the well-known trade-offs between
            ease of programming, functionality and performance; thus, different programming
            languages lead to more or less natural and more or less efficient implementations
            of any given formal model. Nonetheless, the important point is this: whilst we
            may have different implementations of the same formal model, and whilst each
            of these implementations may have different characteristics (in terms of, e.g. code
            readability), ultimately they are all just different representations of the same formal
            model, and they will therefore return the same output when given the same input.
              In the same way that using one or another formalism to represent a particular
            formal model will lead to more or less natural implementations, different formalisms
            also make more or less apparent certain properties of the formal model they
            implement. For example, we will see in this chapter that representing a computer



            5 A sufficient condition for a programming language to be ‘sophisticated enough’ is to allow for the
            implementation of the following three control structures:
            • Sequence (i.e. executing one subprogram and then another subprogram),
            • Selection (i.e. executing one of two subprograms according to the value of a Boolean variable,
              e.g. IF[boolean DD true]-THEN[subprogram1]-ELSE[subprogram2])
            • Iteration (i.e. executing a subprogram until a Boolean variable becomes false, e.g.
              WHILE[boolean DD true]-DO[subprogram])
              Any programming language that can combine subprograms in these three ways can implement
            any computable function; this statement is known as the ‘structured program theorem’ (Böhm and
            Jacopini 1966; Harel 1980; Wikipedia 2007).
   293   294   295   296   297   298   299   300   301   302   303