Thesis Discipline

Degree Name

Publisher

Collections

Authors

Abstract

The success of programming language design is so great and diverse that the resulting incompatibilities have become an important practical problem. This is a study of possible solutions.
The first part is a consideration of reasoning to convergence. An operational model of programming language is used, and both implementation and application aspects are examined, in application encompassing approaches of linguistic precedent, mathematical theory, psychological principle, and empirical analysis. Some progress seems evident in looking at language implementation, but in language application the difficulty of understanding the human factor seriously impedes further reasoning.
The second part is a survey of practical methods for coping with programming language diversity, limiting the diversity or limiting the effects of the problem. Two general approaches are explored, compromise in new design and cooperation in accepting existing design, each comprising a variety of techniques. While no one method was seen completely successful, all had specific advantages and some, particularly cooperative methods, seemed open to further development
The third part is a proposal for a collaborative strategy here called "interprogramming". In this approach it is suggested that programming language design include facilities here called "context openings" for general connection and communication beyond the language. Supporting environments such as operating systems would need to provide facilities realising such connection and communication. At the programming language level, this requires precise control over input/output and related concerns. At the operating system level, this requires multitasking with memory protection and message passing, or similar capabilities. Exploration of the approach is made involving several programming languages and two operating systems, and some related new software is presented. Most programming languages seem accepting, and operating systems design capable. The strategy should be practical and portable, adaptable with existing design and helpful in new design. As far as programming language diversity is seen as an technical problem, the interprogramming strategy is seen as a general and promising approach to solution.