| Niklaus Wirth. Programming in Modula-2. Texts and Monographs in Computer Science. Springer-Verlag, 1983. |
....requires prior specific permission and or a fee. ICFP 02, October 4 6, 2002, Pittsburgh, Pennsylvania, USA. Copyright 2002 ACM 1 58113 487 8 02 0010 . 5. 00 1 Introduction Dynamically enforced pre and post condition contracts have been widely used in procedural and object oriented languages [11, 14, 17, 20, 21, 22, 25, 31]. As Rosenblum [27] has shown, for example, these contracts have great practical value in improving the robustness of systems in procedural languages. Eiffel [22] even developed an entire philosophy of system design based on contracts ( Design by Contract ) Although Java [12] does not support ....
Luckham, D. Programming with specifications. Texts and Monographs in Computer Science, 1990.
....fails, the developer who wrote the method or procedure itself is blamed. Properly assigned blame enables developers to quickly ascertain which component is faulty and then either fix the problem or replace the faulty component. Run time enforcement of behavioral contracts has been widely studied [1, 36, 40, 41, 44] and has a standard interpretation. Each method or procedure is annotated with a precondition and a post condition. These conditions are effect free program fragments that are evaluated when a method or procedure is called and when it returns. A pre condition is evaluated when a method or ....
Luckham, D. Programming with specifications. Texts and Monographs in Computer Science, 1990.
....mail address: rwh cs.cmu.edu. # Electronic mail address: mdl cs.cmu.edu. 0 programming idioms; the language may be easily restricted to second class modules found in ML like languages. 1 Introduction Modularity is an essential technique for developing and maintaining large software systems [46, 24, 36]. Most modern programming languages provide some form of module system that supports the construction of large systems from a collection of separately defined program units [7, 8, 26, 32] A fundamental problem is the management of the tension between the need to treat the components of a large ....
Niklaus Wirth. Programming in Modula-2. Texts and Monographs in Computer Science. Springer-Verlag,
....at extending the concept of basic assertions to the creation of automatic runtime consistency checks. One of the earliest efforts in this area was the work on Anna (Annotated Ada) which uses annotations to Ada source code to perform runtime consistency checking of the executable code [88] 89] [90]. A derivative of Anna, GNU Nana [91] exists for C , but has the disadvantage that it is tied heavily into the GNU software tools, being based on preprocessor macros and using language extensions in the g compiler and hooking into the gdb debugger. In terms of legibility, Nana annotated programs ....
"Programming with Specifications: An Introduction to ANNA, A Language for Specifying Ada Programs", David Luckham, Texts and Monographs in Computer Science, Springer-Verlag, January 1991.
....types can emulate many properties of inheritance, but subtyping is a more abstract notion, because it applies to all types, and because it does not involve a built in notion of methods . Modules and interfaces were introduced in Mesa [Mitchell Maybury Sweet 79] and then perfected in Modula2 [Wirth 83] Standard ML embodies today s most advanced module system. Modules are the major structuring concept, after functions, in modem languages. They are very similar to abstract types, but add the notion of imported identifiers (which are declared in other interfaces) thereby evading the strict ....
....traditionally been untyped, but most of the recent ones are typed [Turner 85] Higher order function types account for this style of programming. Imperative programming. Virtually all imperative languages (the main exceptions being Assemblers and Basic) have some form of typing. See Modula 2 [Wirth 83] for a modem, highly structured type system. Types are not normally involved in controlling side effects, but see [Lucassen Gifford 88] which proposes an interesting way to use quantifiers for this purpose. Object orientedprogramming. The original object oriented language, Simula67 [Dahl Nygaard ....
[Article contains additional citation context not shown here]
N.Wirth: Programming in Modula-2, Texts and Monographs in Computer Science, Springer-Verlag 1983.
....be thrown away, only its declared signature matters. Hence, abstraction is no longer achieved through type generativity (the generation of a unique new type at its declaration) but through type abstraction at module definition time. In fact, this point of view is quite not new: thus, in Modula2 [Wir83] there is only one way to define a new type ; then one specifies in an interface file whether the definition has to be exported. Let us sum up our proposal. We assume given a base language distinguishing types and values. We build a manifest types calculus on this language. This syntax is very ....
N. Wirth. Programming in Modula-2. Texts and Monographs in Computer Science. SpringerVerlag, 1983. 14
....because the compiler may perform valid sequential optimizations that invalidate a concurrent program. 12.1 Coroutines While it is true that coroutines occur infrequently in programming, that does not imply a lack of usefulness. Nevertheless, only a few programming languages support coroutines [DMN70, MMS79, Wir88, MMPN93]. A language without coroutines results in awkward solutions for an important class of problems, e.g. finite state machines, resulting in code that is difficult to generate, understand and maintain (see Chapter 3) The first language to provide a comprehensive coroutine facility was Simula ....
Niklaus Wirth. Programming in Modula-2. Texts and Monographs in Computer Science. Springer-Verlag, fourth edition, 1988.
....programming languages. The approach promises a substantially more powerful module system than those built with previous approaches, while at the same time eliminating the problems associated with the previous approaches. Traditional module systems, such as the one provided by Modula 2 [56], are first order, allowing only trivial manipulations of modules. Some newer programming languages provide higher order module systems. Higher order module systems, unlike first order ones, permit the non trivial manipulation of modules within the language. In particular, they at least permit ....
....of facilities they have. First order module systems have only the trivial module facilities discussed so far: module creation, module naming, and module component extraction (M.x) Most traditional module systems are of this type. Examples include Ada [52] CLU [36] C [29] C [53] and Modula 2 [56]. Higher order module systems, by contrast, have non trivial module manipulation facilities. I shall be concerned in this dissertation primarily with three such facilities: functors, submodules, and modules as first class values. Functors are functions mapping modules to modules. For example, we ....
Niklaus Wirth. Programming in Modula-2. Texts and Monographs in Computer Science. Springer-Verlag, 1983.
....types can emulate many properties of inheritance, but subtyping is a more abstract notion, because it applies to all types, and because it does not involve a built in notion of methods. Modules and interfaces were introduced in Mesa [Mitchell Maybury Sweet 79] and then perfected in Modula2 [Wirth 83] Standard ML embodies today s most advanced module system. Modules are the major structuring concept, after functions, in modern languages. They are very similar to abstract types, but add the notion of imported identifiers (which are declared in other interfaces) thereby evading the strict ....
....been untyped, but most of the recent ones are typed [Turner 85] Higher order function types account for this style of programming. Page 53 Imperative programming. Virtually all imperative languages (the main exceptions being Assemblers and Basic) have some form of typing. See Modula 2 [Wirth 83] for a modern, highly structured type system. Types are not normally involved in controlling side effects, but see [Lucassen Gifford 88] which proposes an interesting way to use quantifiers for this purpose. Object oriented programming. The original object oriented language, Simula67 [Dahl ....
[Article contains additional citation context not shown here]
N.Wirth: Programming in Modula-2, Texts and Monographs in Computer Science, Springer-Verlag 1983.
....to overcome the diversity that had arisen from the existence of more than a dozen rather similar functional languages. Since then various freely available implementations of Haskell have come into existence. For programming in the large, Haskell supports non generic modules similar to Modula2 [ Wirth, 1985 ] or Ada. While not directly supported by the module language, genericity can be expressed by type classes (that are similar to the categories in A#) Gen ) A class declaration introduces the name of a class and the interfaces of the methods of this class. Instance declarations associate ....
Niklaus Wirth. Programming in Modula-2. Texts and Monographs in Computer Science, Springer, Heidelberg, third, corrected edition, 1985.
....PL 1 C language WHILE TRUE DO DO WHILE( 1 B) FOR( I do not find these acceptable because they are not aesthetically pleasing, and because they may require a knowledge of logical values. The loop exit itself should not be treated as a separate statement as in Ada, C language, MODULA2 [Wir85], and PL 1. In these languages, the exit statement must be placed in some conditional control structure to sensibly exit a loop, as in the Ada program: LOOP . IF . THEN EXIT; END IF; END LOOP; The problem here is that students are particularly confused by an IF statement that does ....
Niklaus Wirth. Programming in Modula-2. Texts and Monographs in Computer Science. Springer-Verlag, third, corrected edition, 1985.
....construct added to support type abstraction in C and to allow separating subtyping from inheritance is called a signature. Signatures, in this language extension, are related to types in Russell [16] signatures in ML [25, 26] type classes in Haskell [17] definition modules in Modula 2 [37], interface modules in Modula 3 [12] abstract types in Emerald [9] type modules in Trellis Owl [29] categories in Axiom [22] and its predecessor Scratchpad II [35, 36] and types in POOL I [4] In this section, we specify syntax and semantics of signatures, signature pointers, and signature ....
....proposed language constructs for specifying and working with signature types. These constructs allow us to decouple subtyping from inheritance. The result, C with signatures, has a type system related to those of several other modern programming languages. Similarly as in ML [25, 26] Modula 2 [37], and Modula 3 [12] signatures in C allow a clean separation of specification and implementation. However, ML and Modula 2 only have modules and no classes, while Modula 3 has both classes and modules but provides interfaces for modules only and not for classes. Russell [16] and Haskell [17] ....
Niklaus Wirth. Programming in Modula-2. Texts and Monographs in Computer Science. SpringerVerlag, Berlin-Heidelberg, Germany, 1985.
....is also provided in ML like syntax. Categories A category specifies what operations a computational domain must support and which properties the operations must satisfy. It is a restriction on the class of all domains. The notion of a category corresponds to a definition module in Modula 2 ([Wirth 1985]) For defining a category we use the following syntax: defcategory name (super) signatures) attributes) This expression defines a category name to be a further restriction of the category super . Unlike in Scratchpad II only one super category can be supplied. If no other category is to ....
Wirth, N., 1985: Programming in Modula-2. Texts and Monographs in Computer Science.
....for example, weakly supports this programming style by distinguishing between global scope and static file scope. Auxiliary functions that should not be accessible to clients of an abstract data type can be hidden by declaring them to be static. In languages such as CLU [LSAS77] and Modula 2 [Wir85] this program structure has been formalized as the module language construct. A definition module is used to declare the module interface, i.e. it corresponds to global scope in C. An implementation module contains 2 the code for the functions declared in the definition module as well as ....
....it implements and class methods must have the same argument and return types as the corresponding interface methods. Like C , Java has overloading and a packaging construct but does not have singleton objects, closures, class objects, or multimethods. 4. 7 Modula 3 Like its predecessor Modula 2 [Wir85] Modula 3 [CDG 92] distinguishes between interface and implementation modules. These modules are higher order and, therefore, cannot be used as singleton objects. Modula 3 allows multiple implementations for one module interface. In addition to modules, Modula 3 offers object types. Unlike ....
Niklaus Wirth. Programming in Modula-2. Texts and Monographs in Computer Science. Springer-Verlag, Berlin-Heidelberg, Germany, 1985.
....typed programming languages. The approach promises a substantially more powerful module system than those built with previous approaches while at the same time eliminating the problems associated with the previous approaches. Traditional module systems, such as the one provided by Modula 2 [14], are first order, allowing only trivial manipulations of modules. Some newer programming languages provide higher order module systems. Higher order module systems, unlike first order ones, permit the non trivial manipulation of modules within the language. In particular, they at least permit ....
....one type component, T. 1 First order module systems have only the trivial module facilities discussed so far: module creation, module naming, and module component extraction (M.x) Most traditional module systems are of this type. Examples include Ada [12] CLU [8] C [6] C [13] and Modula 2 [14]. Higher order module systems, by contrast, have non trivial module manipulation facilities. I shall be concerned in this dissertation primarily with three such facilities: functors, submodules, and modules as first class values. Functors are functions mapping modules to modules. For example, we ....
Niklaus Wirth. Programming in Modula-2. Texts and Monographs in Computer Science. Springer-Verlag, 1983.
....[B ) C] g C = f hint why [C j D] g D shows that [A ) D] Programming languages I often make references to common programming languages. I refer more often to Modula 3 [71] than to other languages. However, principles and techniques generally extend to other languages like Ada [1] Modula 2 [81], Pascal [42] C [45] or C [23] as well. Nomenclature I do not make any distinction between the terms statement, command, and guarded command. Each refers to a component of a program. I use these terms interchangeably. A client of an interface is another module or interface that makes use of ....
N. Wirth. Programming in Modula-2. Texts and Monographs in Computer Science. Springer-Verlag, 1983.
....between modules are not detected at compile time, but only at link time, when all modules have been written and compiled. This goes against true separate compilation. 10 CHAPTER 2. DESIGN PRINCIPLES More simple module systems do not have these drawbacks. Take for instance the one of Modula 2 [63]. This is a very simple module system (one can view it as a mere cleanup of the C practice of include files ) Yet there are huge systems (thousands of modules) written in Modula 2, and such systems demonstrate that even this very simple module system suffices to break these systems into ....
....as soon as possible. Therefore, it seems that Modula 2 like modules are more in accordance with the economy of means principle of ZINC. 2.1. 2 Modula like modules for ML As a simpler alternative to Standard ML modules, I propose a system of modules very close to the one found in Modula 2 [63]. It uses an interface file associated with each module and declaring what it exports, and the dot notation (e.g. module.data) to refer to a value (or a type) defined in another module. It is extended by a simple mechanism for type abstraction, as in Modula 3 [47] Among functional languages, a ....
N. Wirth. Programming in Modula-2. Texts and Monographs in Computer Science, SpringerVerlag, 1983.
....signature declaration defines an abstract type by specifying the member functions that any implementation of the abstract type needs to have. The signature language construct is related to types in Russell [10] ML s signatures [17, 18] Haskell s type classes [11] definition modules in Modula 2 [24], interface modules in Modula 3 [7] abstract types in Emerald [4] type modules in Trellis Owl [19] categories in Axiom [15] and its predecessor Scratchpad II [22, 23] and types in POOL I [1] To associate an implementation with a signature type, we introduce the notion of a signature ....
Niklaus Wirth. Programming in Modula-2. Texts and Monographs in Computer Science. SpringerVerlag, Berlin-Heidelberg, Germany, 1985.
....arguments has the lesser size. If the arguments have equal size, it returns the left hand argument. The recursion scheme for F is easily implemented in an imperative programming language by means of tabulation. The result of doing this is displayed in figure 1, which contains a program in Modula 2 [24] for computing the total function F . This program maintains a separate data structure for the computation of Mrt . The procedure Empty initialises this data structure, and Append inserts a new symbol. We shall not go into the details of the algorithm for computing Mrt . An elegant solution may ....
N. Wirth. Programming in Modula-2. Texts and Monographs in Computer Science. Springer--Verlag, 1983.
No context found.
Niklaus Wirth. Programming in Modula-2. Texts and Monographs in Computer Science. Springer-Verlag, 1983.
No context found.
N. Wirth. Programming in Modula-2. Texts and Monographs in Computer Science. Springer Verlag, 1985. Third Edition.
No context found.
N.Wirth: Programming in Modula-2, Texts and Monographs in Computer Science, Springer-Verlag 1983.
No context found.
Niklaus Wirth, Programming in Modula-2, Texts and Monographs in Computer Science, Springer-Verlag, Berlin--Heidelberg, Germany, 1985.
No context found.
N.Wirth: Programming in Modula-2, Texts and Monographs in Computer Science, SpringerVerlag 1983.
No context found.
Niklaus Wirth. Programming in Modula-2. Texts and Monographs in Computer Science. Springer, Heidelberg, third, corrected edition, 1985.
First 50 documents
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC