A methodical comparison of Ada and Modula-2

AbstractA methodical and explicit approach is used to compare Ada and Modula-2. The approach requires the selection and deﬁnition ofobjective design principles and fundamental features of programming languages to construct an evaluation matrix. The fundamentalfeatures make up the X-axis of this matrix; the language design principles make up the Y-axis. Entries in this matrix are computedaccording to adherence/violation of every feature to each design principle. The methodology rates the languages on a feature-by- feature basis with respect to each of the design principles. Furthermore, the syntactic and semantic aspects are individuallyconsidered for each design principle to yield a composite rating. Each rating conveys the adherence level of the language feature tothe design principle. Because of its hierarchy and orthogonality, the methodology can be tailored to include only relevant criteria forassessing a single language or for comparing several languages. The application of this evaluation approach to Ada and Modula-2shows that the methodology is simple, coherent, and traceable. The outcome of comparisons based on this method are consistent,and useful in future language design projects.Keywords: mobile computation, closure, RISC virtual machine, run-time structures, Internet programming1. INTRODUCTIONPast work in the area of language comparison and evaluationfollowed an ad-hoc approach to assess programming languages.The results of such e orts are not only limited in scope, but donot provide any objective measure of the quality of a design.Consequently, one cannot draw strong conclusions about thestrength and weaknesses of a given design and incorporate thisknowledge in future designs.The lack of an explicit and systematic method that can betraceable has been a major criticism of earlier work in thearea of language comparison and evaluation. Evans[1] com-pares Ada, Pascal and C as systems programming languages;this evaluation does not consider design criteria for a general-purpose language. Feuer and Gehani [2] have presented sev-eral measures for evaluating C and Pascal; however, they donot suggest an explicit method for their comparison. Further-more, issues which deserve our attention today (i.e., data ab-straction, concurrency, parameterization of subprograms andtype deﬁnitions) were not considered. The later work of Feuerand Gehani [2] is a starting point in developing a comparisonmethod. Wichmann [Wic82] limits his analysis to a small num-ber of constructs of Pascal and Ada and thus does not present athorough evaluation of the languages. Wirth [3] approaches thisarea by stressing the simplicity of design and implementation,disregarding other design issues.This situation has prompted us to establish two main objec-tives: deﬁne a method for comparing and assessing program-ming language designs; and illustrate the method by applyingit to Ada and Modula-2. By examining and comparing the fea-tures of these two languages, one can assess the state of the artin programming language design, identify trouble spots, andpropose enhancements.The rest of this paper is organized as follows: Section 2 de-scribes our method of evaluation. Section 3 consists of the eval-uation of Ada [4] and Modula-2 [5] based on this method. Fi-nally, Section 4 contains a summary of the results and conclu-sions.2. EVALUATION METHODOur approach to language evaluation ﬁrst deﬁnes objectivedesign principles and identiﬁes fundamental features of pro-gramming languages. The methodology rates the languages ona feature-by-feature basis vis-a-vis each of the design princi-ples. The outcome of comparisons based on this method is co-herent, unbiased and genuinely useful in future design projects.Although not addressing issues related to human factors, thisapproach attempts to be all-encompassing in its treatment ofthe selected objective criteria and language features.2.1. DescriptionObjective design principles are those that produce exact mea-surements in an evaluation. Design principles that have beenidentiﬁed as being objective are formal deﬁnition, orthogonal-ity, machine independence, consistency with commonly-usednotations, abstraction and encapsulation, uniformity, and ex-tensibility. A brief description of these principles is given inthe next section.