ABSTRACT

Numerous aspects of software depend on compiler and systems aspects. In addition to the already mentioned memory mappings that are in a way arbitrary because they are not inherently part of the language design and could be changed, there are fundamental issues of programming environments and programming languages that have significant implications for the performance of software. The most important of these are recursion and its consequences for space complexity, the allocation of dynamic data structures and its consequences for time complexity, the consequences of and implications for optimization, and the consequences of providing certain language constructs as part of the programming language. All of these have in common that the resulting performance is unexpected, unpredictable, or inexplicable to the software developer.