Software tools used in science typically take a kitchen-sink approach to design. From statistics to mathematics to engineering to agent modeling, even those tools that have a strong organizing theme tend towards supporting every contingency and methodology. This impulse toward generalization and breadth is laudable and necessary. However, there is a complementary case to be made for the discipline of abstraction, parsimony, and depth, and that is the case I make for Ascape. I argue in general for the importance of abstraction in agent-based modeling. I then discuss three key abstractions enforced in Ascape, and the opportunities they create for expressibility and simplicity. While these abstractions seem especially suited to the domain of social and economic systems, they are not limited to it. By drawing concrete examples from Ascape and comparing Ascape code to other environments, I show how these apparently constraining abstractions benefit the Ascape user and developer experince. "In summary, a primary goal of software design and coding is conquering complexity. The motivation behind many programming practices is to reduce a program's complexity. Reducing complexity is a key to being an effective programmer." -Steve McConnell (1993)
Parker, Miles T.
"Ascape: Abstracting complexity,"
Natural Resources and Environmental Issues:
Vol. 8, Article 5.
Available at: http://digitalcommons.usu.edu/nrei/vol8/iss1/5