Ole Lehrmann Madsen

dblp:m/OLMadsen · DBLP profile ↗
← Back
20ranked-venue papers
13as first author
3since 2021 · last 2022
0000-0001-7221-142XORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 18 · 12 first-author · 3 since 2021Theory of computation · 1 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 1
YearPublicationVenuePosition
2022 Using Supplementary Properties to Reduce the Need for Documentation
Ole Lehrmann Madsen, Birger Møller-Pedersen
ISoLA (2)1
2022 What Object-Oriented Programming Was Supposed to Be: Two Grumpy Old Guys' Take on Object-Oriented Programming
abstract
Object-oriented programming has been around for more than 50 years and is now the most dominant style of programming. In recent years there has been an increasing criticism of object-oriented programming. Some people argue that the mainstream object-oriented languages do not capture the intentions of object-orientation as intended by its founding fathers. There are indeed issues with object-orientation as practiced by mainstream. In this essay, we identify a number of issues that we think are problematic. We argue that the primary reason for these issues is that reuse is considered the main advantage of object-orientation at the expense of modeling. We argue that modeling should be the main focus, that programming is modeling, and we describe a number of principles to follow when practicing object-oriented modeling.
Ole Lehrmann Madsen, Birger Møller-Pedersen
Onward!1
2021 Using Coroutines for Multi-core Preemptive Scheduling
abstract
The advent of multi-core processors has increased the demand for programming concurrent systems. In this paper, we explore the use of SIMULA style coroutines and other primitives as a basis for defining a broad class of high-level concurrency abstractions including the definition of associated schedulers. The main contribution in this paper is an implementation of preemptive coroutines for a multi-core processor in an experimental version of Beta. The overall goal is to use a high-level language to program applications on a bare bone platform without an operating system.
Ole Lehrmann Madsen
PLOS@SOSP1
2018 This Is Not a Model - On Development of a Common Terminology for Modeling and Programming
Ole Lehrmann Madsen, Birger Møller-Pedersen
ISoLA (1)1
2010 A Unified Approach to Modeling and Programming
Ole Lehrmann Madsen, Birger Møller-Pedersen
MoDELS (1)1
2006 From ECOOP'87 to ECOOP 2006 and Beyond
Ole Lehrmann Madsen
ECOOP1
2001 Virtual Classes and Their Implementation
abstract
One of the characteristics of BETA [ 4 ] is the unification of abstraction mechanisms such as class, procedure, process type, generic class, interface, etc. into one abstraction mechanism: the pattern . In addition to keeping the language small, the unification has given a systematic treatment of all abstraction mechanisms and leads to a number of new possibilities. One of the interesting results of the unification is the notion of virtual class [[ 7 ],[ 8 ], which is the BETA mechanism for expressing genericity. A class may define an attribute in the form of a virtual class just as a class may define an attribute in the form of a virtual procedure. A subclass may then refine the definition of the virtual class attribute into a more specialized class. This is very much in the same way as a virtual procedure can be refined - resulting in a more specialized procedure. Virtual classes can be seen as an object-oriented version of generics. Other attempts to provide genericity for OO languages has been based on various forms of parametric polymorphism and function application rather than inheritance. Virtual classes have been used for more than 15 years in the BETA community and they have demonstrated their usefulness as a powerful abstraction mechanism. There has recently been an increasing interest in virtual classes and a number of proposals for adding virtual classes to other languages, extending virtual classes, and unifying virtual classes and parameterized classes have been made [[ 1 ],[ 2 ],[ 3 ],[ 13 ],[ 14 ],[ 15 ],[ 16 ],[ 17 ]. Another distinguishing feature of BETA is the notion of nested class [ 6 ]. The nested class construct originates already with Simula and is supported in a more general form in BETA. Nested classes have thus been available to the OO community for almost 4 decades, and the mechanism has found many uses in particular to structure large systems. Despite the usefulness, mainstream OO languages have not included general nesting mechanisms although C++ has a restricted form of nested classes, only working as a scoping mechanism. Recently nested classes has been added to the Java language. From a semantic analysis point of view the combination of inheritance, and general nesting adds some complexity to the semantic analysis, since the search space for names becomes two-dimensional. With virtual classes, the analysis becomes even more complicated — for details see ref. [ 10 ]. The unification of class and procedure has also lead to an inheritance mechanism for procedures [ 5 ] where method-combination is based on the inner -construct known from Simula. In BETA, patterns are first-class values , which implies that procedures as well as classes are first-class values. BETA also supports the notion of class-less objects, which has been adapted in the form of anonymous classes in Java. Finally, it might be mentioned that BETA supports coroutines as well as concurrent active objects . For further details about BETA, see [ 6 , 9 , 11 ]. The Mjølner System is a program development environment for BETA and may be obtained from ref. [ 12 ].
Ole Lehrmann Madsen
CC1
2000 Towards a Unified Programming Language
Ole Lehrmann Madsen
ECOOP1
1999 Semantic Analysis of Virtual Classes and Tested Classes
abstract
Virtual classes and nested classes are distinguishing features of BETA. Nested classes originated from Simula, but until recently they have not been part of main stream object- oriented languages. C++ has a restricted form of nested classes and they were included in Java 1.1. Virtual classes is the BETA mechanism for expressing generic classes and virtual classes is an alternative to parameterized classes. There has recently been an increasing interest in virtual classes and a number of proposals for adding virtual classes to other languages, extending virtual classes, and unifying virtual classes and parameterized classes have been made. Although virtual classes and nested classes have been used in BETA for more than a decade, their implementation has not been published. The purpose of this paper is to contribute to the understanding of virtual classes and nested classes by presenting the central elements of the semantic analysis used in the Mjølner BETA compiler.
Ole Lehrmann Madsen
OOPSLA1
1998 The M.A.D. Experience: Multiperspective Application Development in evolutionary prototyping
Michael Christensen 0002, Andy Crabtree, Christian Heide Damm, Klaus Marius Hansen, Ole Lehrmann Madsen, Pernille Marqvardsen, Preben Holst Mogensen, Elmer Sandvad, Lennert Sloth, Michael Thomsen
ECOOP5
1995 Open Issues in Object-Oriented Programming - A Scandinavian Perspective
Ole Lehrmann Madsen
Softw. Pract. Exp.1
1989 Virtual Classes: A Powerful Mechanism in Object-Oriented Programming
abstract
The notions of class, subclass and virtual procedure are fairly well understood and recognized as some of the key concepts in object-oriented programming. The possibility of modifying a virtual procedure in a subclass is a powerful technique for specializing the general properties of the superclass.
Ole Lehrmann Madsen, Birger Møller-Pedersen
OOPSLA1
1988 Teaching Object-Oriented Programming Is More than Teaching Object-Oriented Programming Languages
Jørgen Lindskov Knudsen, Ole Lehrmann Madsen
ECOOP2
1988 What Object-Oriented Programming May Be - and What It Does Not Have To Be
Ole Lehrmann Madsen, Birger Møller-Pedersen
ECOOP1
1987 Classification of Actions, or Inheritance also for Methods
Bent Bruun Kristensen, Ole Lehrmann Madsen, Birger Møller-Pedersen, Kristen Nygaard
ECOOP2
1983 Abstraction Mechanisms in the Beta Programming Language
abstract
The BETA programming language is developed as part of the BETA project. The purpose of this project is to develop concepts, constructs and tools in the field of programming and programming languages. BETA has been developed from 1975 on and the various stages of the language are documented in [BETA a].
Bent Bruun Kristensen, Ole Lehrmann Madsen, Birger Møller-Pedersen, Kristen Nygaard
POPL2
1983 Extended Attribute Grammars
abstract
Two new formalisms are introduced: extended attribute grammars, which are capable of defining completely the syntax of programming languages, and extended attributed translation grammars, which are additionally capable of defining their semantics by translation. These grammars are concise and readable, and their suitability for language definition is demonstrated by a realistic example. The suitability of a large class of these grammars for compiler construction is also established, by borrowing the techniques already developed for attributable grammars and affix grammars.
David A. Watt, Ole Lehrmann Madsen
Comput. J.2
1981 Methods for Computing LALR(k) Lookahead
Bent Bruun Kristensen, Ole Lehrmann Madsen
ACM Trans. Program. Lang. Syst.2
1980 Interpretation and Code Generation Based on Intermediate Languages
abstract
Abstract The possibility of supporting high level languages through intermediate languages to be used for direct interpretation and as intermediate forms in compilers is investigated. An accomplished project in the construction of an interpreter and a code generator using one common intermediate form is evaluated. The subject is analysed in general, and a proposal for an improved design scheme is given.
Peter Kornerup, Bent Bruun Kristensen, Ole Lehrmann Madsen
Softw. Pract. Exp.3
1976 LR-Parsing of Extended Context Free Grammars
Ole Lehrmann Madsen, Bent Bruun Kristensen
Acta Informatica1