Book contents
- Frontmatter
- Contents
- List of Figures
- List of Tables
- Preface
- Acknowledgments
- Disclaimer
- PART I THE TAO OF SCIENTIFIC OOP
- PART II SOOP TO NUTS AND BOLTS
- PART III GUMBO SOOP
- 10 Formal Constraints
- 11 Mixed-Language Programming
- 12 Multiphysics Architectures
- Appendix A Mathematical Background
- Appendix B Unified Modeling Language Elements
- Bibliography
- Index
11 - Mixed-Language Programming
from PART III - GUMBO SOOP
Published online by Cambridge University Press: 01 June 2011
- Frontmatter
- Contents
- List of Figures
- List of Tables
- Preface
- Acknowledgments
- Disclaimer
- PART I THE TAO OF SCIENTIFIC OOP
- PART II SOOP TO NUTS AND BOLTS
- PART III GUMBO SOOP
- 10 Formal Constraints
- 11 Mixed-Language Programming
- 12 Multiphysics Architectures
- Appendix A Mathematical Background
- Appendix B Unified Modeling Language Elements
- Bibliography
- Index
Summary
“But if thought corrupts language, language can also corrupt thought.”
George OrwellAutomated Interoperability Tools
In human cultures, membership in a community often implies sharing a common language. This holds as much for computer programming languages as for natural human tongues. Certain languages dominate certain research communities. As a result, the modern drive towards multidisciplinary studies inevitably leads to mixed-language development. As noted in the preface, survey evidence suggests that approximately 85% of high-performance computing users write in some flavor of C/C++/C#, whereas 60% write in Fortran. These data imply that at least 45% write in both Fortran and C/C++/C#, so the union of these two language families likely contains the most important pairings in mixed-language scientific programming.
In many settings, the language version matters as much as the language identity. For example, interfacing other languages with object-oriented Fortran 2003 poses a much broader set of challenges than does interfacing with procedural Fortran 77 or even object-based Fortran 95. It also matters whether one language invokes code in a second language, the second invokes code in the first, or both. As suggested by Rasmussen et al. (2006), one can account for invocation directionality by considering ordered pairs of languages, where the order determines which language is the caller and which is the callee.
Consider a set {A,B,C, …} of N dialects, where each member is a language or language version distinct from each other member.
- Type
- Chapter
- Information
- Scientific Software DesignThe Object-Oriented Way, pp. 251 - 284Publisher: Cambridge University PressPrint publication year: 2011