Applying Traits to the Smalltalk Collection Classes∗

Total Page:16

File Type:pdf, Size:1020Kb

Applying Traits to the Smalltalk Collection Classes∗ Applying Traits to the Smalltalk Collection Classes∗ Andrew P. Black Nathanael Scharli¨ Stephane´ Ducasse OGI School of Science & Software Composition Group Software Composition Group Engineering, Oregon Health and University of Bern University of Bern Science University, USA Switzerland Switzerland [email protected] [email protected] [email protected] ABSTRACT of objects. Classes also provide for reuse in two different ways: as factories, they can be used to instantiate many similar objects, Traits are a programming language technology that promote the while as superclasses, they group methods so that they can be in- reuse of methods between unrelated classes. This paper reports corporated into new subclasses. These two kinds of reuse often on a refactoring of the Smalltalk collections classes using traits. have conflicting requirements. As factories, classes must be com- The original collection classes contained much duplication of code; plete; when creating new subclasses, it is more convenient to be traits let us remove all of it. We also found places where the proto- able to incorporate incomplete fragments of behavior. cols of the collections lacked uniformity; traits allowed us to correct these non-uniformities without code duplication. Traits also make We have developed a new programming construct, which we call it possible to reuse fragments of collection code outside of the ex- a trait, to address this problem. Traits are intended as fine-grained isting hierarchy; for example, they make it easy to convert other units of code reuse. In essence, traits are first class collections of collection-like things into true collections. Our refactoring reduced methods that can be reused by classes anywhere in the inheritance the number of methods in the collection classes by approximately hierarchy. 10 per cent. More importantly, understandability maintainability The contributions of this paper are: and reusability of the code were significantly improved. • a study of the internal structure of the existing Smalltalk col- lections classes, with particular attention to the problems of Categories and Subject Descriptors code duplication, unnecessary inheritance, and method re- definition in inheritance chains; D.3.3 [Language Constructs and Features]: Classes and objects; D.2.3 [Coding Tools and Techniques]: Object-oriented program- • a report of our experience using traits to refactor the collec- ming tion classes so as to remove these problems; and • a description of the organization of the new classes that re- General Terms sulted from our refactoring. Design, Languages 2. WHAT IS THE PROBLEM? Keywords Single inheritance is a very popular programming technology, and Reuse, Mixins, Traits, Smalltalk, Collection hierarchy, Stream has been adopted widely since its introduction in Simula 67 [2]. In- classes, Refactoring, Inheritance, Multiple Inheritance heritance is also very powerful, and the basis for several major suc- cess stories, including Smalltalk and Java. But success and power should not blind us to the fact that sometimes single inheritance is 1. INTRODUCTION just not up to the task of supporting the wide range of abstractions We have long believed that classes have too many responsibilities that we expect to find in a modern object-oriented framework. in object-oriented programming [3]. In many languages, classes Let us illustrate this point with a small example. The class are the prime (or only) mechanism for the conceptual classification RectangleMorph in the Squeak dialect of Smalltalk represents a rectangular block of color that can be manipulated on the display. ∗ This research was partially supported by the National Science Foundation As such, it is a subclass of BorderedMorph, from which it inherits of the United States under awards CDA-9703218, CCR-0098323 and CCR- and reuses many methods; BorderedMorph in turn is a subclass of 0313401, and by Swiss National Foundation project 2000-067855.02. Morph. Squeak also defines a class Rectangle, which inherits from Object. However, a RectangleMorph is not a Rectangle; that is, RectangleMorph does not implement all of the protocol understood Rectangle Permission to make digital or hard copies of all or part of this work for by objects. personal or classroom use is granted without fee provided that copies are Rectangle adds 83 messages to the protocol of Object. Of these, not made or distributed for profit or commercial advantage and that copies only 13 messages are also understood by a RectangleMorph; the bear this notice and the full citation on the first page. To copy otherwise, to other 70 are missing from RectangleMorph’s protocol. We say republish, to post on servers or to redistribute to lists, requires prior specific “missing” because, to the client, a RectangleMorph clearly is a permission and/or a fee. OOPSLA’03, October 26–30, 2003, Anaheim, California, USA. Rectangle; moreover, the state of a RectangleMorph includes a field Copyright 2003 ACM 1-58113-712-5/03/0010 ...$5.00. named bounds that represents the Rectangle that it occupies. 1 sum overriding trait trait trait T U T a a x c a q a a x a b y d a r b a conflict a c ↑self i c a ↑self i composite trait definition Trait named: + #V uses: T b a y c a p trait trait d a v T+ U V a a x a a x b a y b a y c a conflict c a p d a r d a v class trait inheritance These diagrams illustrate the C T three composition operations involving traits. The ellipses var0 a a x depict the operations; the fat b a y arrows show their a inputs and outputs. The open a m c a ↑self i d a n arrow represents sub- classing. The notation a a m a composite subclass e k represents a method with definition name a and body m. C subclass: The sum operation takes two traits T and U as input; #D uses: T the result is a trait T+U that contains the union of all of var1 the non-conflicting methods. Where T and U conflict (e.g., at c), the resulting method is an explicit conflict subclass b a j marker. D d a w The overriding operation combines some explicit defi- i a ↑var1 nitions with an existing trait. In the figure, the explicit var0 var1 definitions of methods b and c override those obtained from the trait T, and the definition of d is a a x added. The resulting trait V contains no conflicts b a j because the definition of b has been overridden. c a ↑self i The inheritance operation is used to create a new d a w subclass D from an existing superclass C, an existing e a k trait T, and some new, explicitly given, definitions. Explicit definitions (e.g., of b) override those obtained a i ↑var1 from the trait; definitions in the trait (e.g., of a) override those obtained from the superclass. Figure 1: The major operations on traits: sum, overriding, and inheritance. 2 A programmer who wishes to fix this problem is faced with The overriding operation constructs a new composite Trait a number of unpleasant alternatives. One option is to copy named: #V uses: T . by extending an existing trait T with some the 70 missing methods from Rectangle and paste them into explicit local definitions. The local definitions override methods of RectangleMorph. This is a clear violation of the DRY (don’t repeat the same name in the trait T; because the local definitions are ex- yourself) principle [20]. plicit, it is always clear what is being overridden. Thus, in the Another option is to provide a conversion method figure, we see that the method for c with body p overrides the one RectangleMorph>>asRectangle1, and expect the client to re- with body ↑ self i. member to use this conversion method whenever there is a need Traits are incorporated into classes by means of an extended to send a message that a RectangleMorph does not understand. form of inheritance. In conventional inheritance, a new subclass For example, instead of saying myMorph area, the client must say B is constructed from a superclass C and from some local defini- myMorph asRectangle area. This moves a burden onto the morph’s tions of instance variables and methods. In Smaltalk we would client that we feel should be borne by the morph itself. write C subclass: #B . and then add the local definitions to B. A third option is to delegate the 70 missing methods. The sim- Our extended form of inheritance is similar; a new subclass D is plest way of doing this is to implement each of them as a one line constructed from a superclass and a trait T in addition to the lo- method that converts the receiver to a rectangle and resends the cal definitions. In Smalltalk we write C subclass: #D uses: T... message. So the area method would actually be implemented in We call D a composite class. Methods defined locally in as part RectangleMorph as follows. of the inheritance operation (such as b in figure 1) replace meth- ods obtained from the trait T. Methods defined locally (such as d) RectangleMorph>>area T a ↑ self asRectangle area and methods from (such as ) both override methods inherited from the superclass C, and can access the overridden methods us- This seems like the best choice, but it increases the size of the ob- ing super. In practice, the trait that is used to build a composite ject code and makes RectangleMorph harder to understand because class is often the sum of several more primitive traits. it adds a lot of conceptually uninteresting“noise”. Constructing all The aliasing operator @ creates a new trait by providing an addi- 70 delegation methods requires tool support; using them introduces tional name for an existing method.
Recommended publications
  • Liste Von Programmiersprachen
    www.sf-ag.com Liste von Programmiersprachen A (1) A (21) AMOS BASIC (2) A# (22) AMPL (3) A+ (23) Angel Script (4) ABAP (24) ANSYS Parametric Design Language (5) Action (25) APL (6) Action Script (26) App Inventor (7) Action Oberon (27) Applied Type System (8) ACUCOBOL (28) Apple Script (9) Ada (29) Arden-Syntax (10) ADbasic (30) ARLA (11) Adenine (31) ASIC (12) Agilent VEE (32) Atlas Transformatikon Language (13) AIMMS (33) Autocoder (14) Aldor (34) Auto Hotkey (15) Alef (35) Autolt (16) Aleph (36) AutoLISP (17) ALGOL (ALGOL 60, ALGOL W, ALGOL 68) (37) Automatically Programmed Tools (APT) (18) Alice (38) Avenue (19) AML (39) awk (awk, gawk, mawk, nawk) (20) Amiga BASIC B (1) B (9) Bean Shell (2) B-0 (10) Befunge (3) BANCStar (11) Beta (Programmiersprache) (4) BASIC, siehe auch Liste der BASIC-Dialekte (12) BLISS (Programmiersprache) (5) Basic Calculator (13) Blitz Basic (6) Batch (14) Boo (7) Bash (15) Brainfuck, Branfuck2D (8) Basic Combined Programming Language (BCPL) Stichworte: Hochsprachenliste Letzte Änderung: 27.07.2016 / TS C:\Users\Goose\Downloads\Softwareentwicklung\Hochsprachenliste.doc Seite 1 von 7 www.sf-ag.com C (1) C (20) Cluster (2) C++ (21) Co-array Fortran (3) C-- (22) COBOL (4) C# (23) Cobra (5) C/AL (24) Coffee Script (6) Caml, siehe Objective CAML (25) COMAL (7) Ceylon (26) Cω (8) C for graphics (27) COMIT (9) Chef (28) Common Lisp (10) CHILL (29) Component Pascal (11) Chuck (Programmiersprache) (30) Comskee (12) CL (31) CONZEPT 16 (13) Clarion (32) CPL (14) Clean (33) CURL (15) Clipper (34) Curry (16) CLIPS (35)
    [Show full text]
  • A Metacircular Architecture for Runtime Optimisation Persistence Clément Béra
    Sista: a Metacircular Architecture for Runtime Optimisation Persistence Clément Béra To cite this version: Clément Béra. Sista: a Metacircular Architecture for Runtime Optimisation Persistence. Program- ming Languages [cs.PL]. Université de Lille 1, 2017. English. tel-01634137 HAL Id: tel-01634137 https://hal.inria.fr/tel-01634137 Submitted on 13 Nov 2017 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. Universit´edes Sciences et Technologies de Lille { Lille 1 D´epartement de formation doctorale en informatique Ecole´ doctorale SPI Lille UFR IEEA Sista: a Metacircular Architecture for Runtime Optimisation Persistence THESE` pr´esent´eeet soutenue publiquement le 15 Septembre 2017 pour l'obtention du Doctorat de l'Universit´edes Sciences et Technologies de Lille (sp´ecialit´einformatique) par Cl´ement B´era Composition du jury Pr´esident: Theo D'Hondt Rapporteur : Ga¨elThomas, Laurence Tratt Examinateur : Elisa Gonzalez Boix Directeur de th`ese: St´ephaneDucasse Co-Encadreur de th`ese: Marcus Denker Laboratoire d'Informatique Fondamentale de Lille | UMR USTL/CNRS 8022 INRIA Lille - Nord Europe Numero´ d’ordre: XXXXX i Acknowledgments I would like to thank my thesis supervisors Stéphane Ducasse and Marcus Denker for allowing me to do a Ph.D at the RMoD group, as well as helping and supporting me during the three years of my Ph.D.
    [Show full text]
  • The Future: the Story of Squeak, a Practical Smalltalk Written in Itself
    Back to the future: the story of Squeak, a practical Smalltalk written in itself Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay [Also published in OOPSLA ’97: Proc. of the 12th ACM SIGPLAN Conference on Object-oriented Programming, 1997, pp. 318-326.] VPRI Technical Report TR-1997-001 Viewpoints Research Institute, 1209 Grand Central Avenue, Glendale, CA 91201 t: (818) 332-3001 f: (818) 244-9761 Back to the Future The Story of Squeak, A Practical Smalltalk Written in Itself by Dan Ingalls Ted Kaehler John Maloney Scott Wallace Alan Kay at Apple Computer while doing this work, now at Walt Disney Imagineering 1401 Flower Street P.O. Box 25020 Glendale, CA 91221 [email protected] Abstract Squeak is an open, highly-portable Smalltalk implementation whose virtual machine is written entirely in Smalltalk, making it easy to debug, analyze, and change. To achieve practical performance, a translator produces an equivalent C program whose performance is comparable to commercial Smalltalks. Other noteworthy aspects of Squeak include: a compact object format that typically requires only a single word of overhead per object; a simple yet efficient incremental garbage collector for 32-bit direct pointers; efficient bulk- mutation of objects; extensions of BitBlt to handle color of any depth and anti-aliased image rotation and scaling; and real-time sound and music synthesis written entirely in Smalltalk. Overview Squeak is a modern implementation of Smalltalk-80 that is available for free via the Internet, at http://www.research.apple.com/research/proj/learning_concepts/squeak/ and other sites. It includes platform-independent support for color, sound, and image processing.
    [Show full text]
  • Towards Gradual Typing for Generics
    Towards Gradual Typing for Generics Lintaro Ina and Atsushi Igarashi Graduate School of Informatics, Kyoto University {ina,igarashi}@kuis.kyoto-u.ac.jp Abstract. Gradual typing, proposed by Siek and Taha, is a framework to combine the benefits of static and dynamic typing. Under gradual typing, some parts of the program are type-checked at compile time, and the other parts are type-checked at run time. The main advantage of gradual typing is that a programmer can write a program rapidly without static type annotations in the beginning of development, then add type annotations as the development progresses and end up with a fully statically typed program; and all these development steps are carried out in a single language. This paper reports work in progress on the introduction of gradual typing into class-based object-oriented programming languages with generics. In previous work, we have developed a gradual typing system for Feather- weight Java and proved that statically typed parts do not go wrong. After reviewing the previous work, we discuss issues raised when generics are introduced, and sketch a formalization of our solutions. 1 Introduction Siek and Taha have coined the term “gradual typing” [1] for a linguistic sup- port of the evolution from dynamically typed code, which is suitable for rapid prototyping, to fully statically typed code, which enjoys type safety properties, in a single programming language. The main technical challenge is to ensure some safety property even for partially typed programs, in which some part is statically typed and the rest is dynamically typed. The framework of gradual typing consists of two languages: the surface lan- guage in which programmers write programs and the intermediate language into which the surface language translates.
    [Show full text]
  • Safe, Fast and Easy: Towards Scalable Scripting Languages
    Safe, Fast and Easy: Towards Scalable Scripting Languages by Pottayil Harisanker Menon A dissertation submitted to The Johns Hopkins University in conformity with the requirements for the degree of Doctor of Philosophy. Baltimore, Maryland Feb, 2017 ⃝c Pottayil Harisanker Menon 2017 All rights reserved Abstract Scripting languages are immensely popular in many domains. They are char- acterized by a number of features that make it easy to develop small applications quickly - flexible data structures, simple syntax and intuitive semantics. However they are less attractive at scale: scripting languages are harder to debug, difficult to refactor and suffers performance penalties. Many research projects have tackled the issue of safety and performance for existing scripting languages with mixed results: the considerable flexibility offered by their semantics also makes them significantly harder to analyze and optimize. Previous research from our lab has led to the design of a typed scripting language built specifically to be flexible without losing static analyzability. Inthis dissertation, we present a framework to exploit this analyzability, with the aim of producing a more efficient implementation Our approach centers around the concept of adaptive tags: specialized tags attached to values that represent how it is used in the current program. Our frame- work abstractly tracks the flow of deep structural types in the program, and thuscan ii ABSTRACT efficiently tag them at runtime. Adaptive tags allow us to tackle key issuesatthe heart of performance problems of scripting languages: the framework is capable of performing efficient dispatch in the presence of flexible structures. iii Acknowledgments At the very outset, I would like to express my gratitude and appreciation to my advisor Prof.
    [Show full text]
  • Strongtalk Plan Prezentacji
    Elżbieta Bajkowska Strongtalk Plan prezentacji Czym jest Strongtalk Historia Strongtalk System typów w Strongtalk Podsumowanie Źródła Czym jest Strongtalk Składnia i semantyka Smalltalk’a-80 plus: Większa wydajność – najszybsza implementacja Smalltalk System typów – opcjonalny i przyrostowy; silny, statyczny system typów działający niezależnie od metody kompilacji (nie typowany kod Smalltalka wykonuje się równie szybko) Typowana biblioteka klas według Smalltalk Blue Book Historia Strongtalk Dwa równoległe i niezależne wątki rozwoju przyszłego systemu Strongtalk Zachodnie wybrzeże – prace grupy związanej z językiem Self nad innowacyjną maszyną wirtualną Wschodnie wybrzeże – prace nad systemem typów dla języka Smalltalk Historia Strongtalk Zachód – maszyna wirtualna Cel – poprawienie wydajności czysto obiektowego języka Self Satysfakcjonujące odśmiecanie Problem efektywnej kompilacji dla dynamicznie typowanego języka, używającego konstrukcji bloku gdzie wszystkie dane są obiektami (analogia do Smalltalk’a) - Urs Hoelzle Historia Strongtalk Wschód – system typów Dave Griswold i Gilad Bracha opracowują Strongtalk - (nazwa systemu wywodzi się od systemu typów) – konferencja OOPSLA ’93 Baza – biblioteki ParcPlace Smalltalk, nie odzwierciedlające w pełni hierarchii typów Strongtalka Zainteresowanie technologią grupy pracującej nad kompilatorem Self dla poprawienia wydajności Historia Strongtalk Połączenie technologii Animorphic Systems - Dave Griswold zaczyna współpracę z Urs’em Hoelzle (reszta grupy: Lars Bak, Gilad Bracha,
    [Show full text]
  • Type Feedback for Bytecode Interpreters Position Paper ICOOOLPS 2007
    Type Feedback for Bytecode Interpreters Position Paper ICOOOLPS 2007 Michael Haupt1, Robert Hirschfeld1, and Marcus Denker2 1 Software Architecture Group Hasso-Plattner-Institut University of Potsdam, Germany 2 Software Composition Group Institute of Computer Science and Applied Mathematics University of Berne, Switzerland michael.haupt,hirschfeld @hpi.uni-potsdam.de, [email protected] { } Abstract. This position paper proposes the exploitation of type feed- back mechanisms, or more precisely, polymorphic inline caches, for purely interpreting implementations of object-oriented programming languages. Using Squeak’s virtual machine as an example, polymorphic inline caches are discussed as an alternative to global caching. An implementation proposal for polymorphic inline caches in the Squeak virtual machine is presented, and possible future applications for online optimization are outlined. 1 Introduction Bytecode interpreters are small in size and comparatively easy to implement, but generally execute programs much less efficiently than just-in-time (JIT) compilers. Techniques like threaded interpretation [9, 11, 2] focus on speeding up bytecode interpretation itself, and caching [4, 5, 1] improves the performance of message sends—the most common operation in object-oriented software [7]. It is interesting to observe that, while threading mechanisms are used natu- rally to a varying degree in bytecode interpreter implementations, such systems usually employ only global caching to speed up dynamic method dispatch. A global cache is clearly beneficial with respect to overall performance. Still, it does not provide optimal support for polymorphic message send sites, and it does not allow for exploiting type information (we provide details on these issues in the following section). In our opinion, the employment of polymorphic inline caches (PICs) [5] instead can provide means for achieving significant speedups in bytecode interpreters while exhibiting only a moderate increase in memory footprint and implementation complexity.
    [Show full text]
  • CONFERENCE COMPANION ESUG 2008 - 16Th International Smalltalk Conference
    ESUG-2008 CONFERENCE COMPANION ESUG 2008 - 16th International Smalltalk Conference CONTENTS Platinum Sponsors.......................................................................................................... 3 Gold Sponsors................................................................................................................ 4 Conference Location....................................................................................................... 5 Program Overview........................................................................................................... 8 Saturday, August 23...................................................................................................... 10 Sunday, August 24......................................................................................................... 10 Monday, August 25....................................................................................................... 11 Tuesday, August 26....................................................................................................... 16 Wednesday, August 27.................................................................................................. 20 Thursday, August 28...................................................................................................... 23 Friday, August 29........................................................................................................... 27 Program Overview........................................................................................................
    [Show full text]
  • Preserving Instance State During Refactorings in Live Environments Pablo Tesone, Guillermo Polito, Luc Fabresse, Noury Bouraqadi, Stéphane Ducasse
    Preserving Instance State during Refactorings in Live Environments Pablo Tesone, Guillermo Polito, Luc Fabresse, Noury Bouraqadi, Stéphane Ducasse To cite this version: Pablo Tesone, Guillermo Polito, Luc Fabresse, Noury Bouraqadi, Stéphane Ducasse. Preserving In- stance State during Refactorings in Live Environments. Future Generation Computer Systems, Else- vier, In press, 10.1016/j.future.2020.04.010. hal-02541754 HAL Id: hal-02541754 https://hal.archives-ouvertes.fr/hal-02541754 Submitted on 14 Apr 2020 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. Preserving Instance State during Refactorings in Live Environments Pablo Tesonea,b,∗, Guillermo Politoc, Luc Fabresseb, Noury Bouraqadib, Stéphane Ducassea aInria Lille-Nord Europe, 40 Avenue Halley, Villeneuve d’Ascq, France bUnité de Recherche Informatique et Automatique, IMT Lille Douai, 764 Boulevard Lahure, Douai, France cUniv. Lille, CNRS, Centrale Lille, Inria, UMR 9189 - CRIStAL - Centre de Recherche en Informatique Signal et Automatique de Lille, F-59000 Lille, France Abstract An important activity of software evolution consists in applying refactorings to enhance the quality of the code without changing its behaviour. Having a proper refactoring tool is a must-to in any professional development environment.
    [Show full text]
  • Cormac Flanagan Fritz Henglein Nate Nystrom Gavin Bierman Jan Vitek Gilad Bracha Philip Wadler Jeff Foster Tobias Wrigstad Peter Thiemann Sam Tobin-Hochstadt
    PC: Amal Ahmed SC: Matthias Felleisen Robby Findler (chair) Cormac Flanagan Fritz Henglein Nate Nystrom Gavin Bierman Jan Vitek Gilad Bracha Philip Wadler Jeff Foster Tobias Wrigstad Peter Thiemann Sam Tobin-Hochstadt Organizers: Tobias Wrigstad and Jan Vitek Schedule Schedule . 3 8:30 am – 10:30 am: Invited Talk: Scripting in a Concurrent World . 5 Language with a Pluggable Type System and Optional Runtime Monitoring of Type Errors . 7 Position Paper: Dynamically Inferred Types for Dynamic Languages . 19 10:30 am – 11:00 am: Coffee break 11:00 am – 12:30 pm: Gradual Information Flow Typing . 21 Type Inference with Run-time Logs . 33 The Ciao Approach to the Dynamic vs. Static Language Dilemma . 47 12:30 am – 2:00 pm: Lunch Invited Talk: Scripting in a Concurrent World John Field IBM Research As scripting languages are used to build increasingly complex systems, they must even- tually confront concurrency. Concurrency typically arises from two distinct needs: han- dling “naturally” concurrent external (human- or software-generated) events, and en- hancing application performance. Concurrent applications are difficult to program in general; these difficulties are multiplied in a distributed setting, where partial failures are common and where resources cannot be centrally managed. The distributed sys- tems community has made enormous progress over the past few decades designing specialized systems that scale to handle millions of users and petabytes of data. How- ever, combining individual systems into composite applications that are scalable—not to mention reliable, secure, and easy to develop maintain—remains an enormous chal- lenge. This is where programming languages should be able to help: good languages are designed to facilitate composing large applications from smaller components and for reasoning about the behavior of applications modularly.
    [Show full text]
  • Bridging the Gap Between Machine and Language Using First-Class Building Blocks
    Bridging the Gap between Machine and Language using First-Class Building Blocks Inauguraldissertation der Philosophisch-naturwissenschaftlichen Fakultat¨ der Universitat¨ Bern vorgelegt von Toon Verwaest von Belgien Leiter der Arbeit: Prof. Dr. O. Nierstrasz Institut fur¨ Informatik und angewandte Mathematik Von der Philosophisch-naturwissenschaftlichen Fakultat¨ angenommen. Copyright © 2012 Toon Verwaest. Software Composition Group University of Bern Institute of Computer Science and Applied Mathematics Neubruckstrasse¨ 10 CH-3012 Bern http://scg.unibe.ch/ ISBN: 978-1-105-51835-5 This work is licensed under the Creative Commons Attribution–ShareAlike 3.0 License. The license is available at http://creativecommons.org/licenses/by-sa/3.0/. This dissertation is available at http://scg.unibe.ch. Acknowledgments My adventure in Bern started more than four years ago, in October 2007. This page is too short to capture the gratitude I have towards all those who have contributed in any way to this dissertation. First I’d like to extend my gratitude to Oscar Nierstrasz for supporting me throughout my time at the Software Composition Group. He gave me the freedom to develop my own research project, and provided invaluable sup- port in formulating my thoughts. It is thanks to his well-organized research group that developing this thesis almost seemed effortless. I thank Marcus Denker for his continued support and interest in my work. I very much enjoyed our discussions about research; especially while ex- ploring the Swiss mountains. I’d like to thank him for reviewing this thesis, writing the Koreferat, and accepting to be on the PhD committee. I thank Torsten Braun for accepting to chair the PhD defense.
    [Show full text]
  • CONFERENCE COMPANION ESUG 2008 - 16Th International Smalltalk Conference
    ESUG-2008 CONFERENCE COMPANION ESUG 2008 - 16th International Smalltalk Conference CONTENTS Platinum Sponsors.......................................................................................................... 3 Gold Sponsors................................................................................................................ 4 Conference Location....................................................................................................... 5 Conference Location..................................................................................................... 10 Saturday, August 23...................................................................................................... 10 Sunday, August 24......................................................................................................... 10 Monday, August 25....................................................................................................... 11 Tuesday, August 26....................................................................................................... 16 Wednesday, August 27.................................................................................................. 20 Thursday, August 28...................................................................................................... 23 Friday, August 29........................................................................................................... 27 CWI Page 2 ESUG 2008 -16th International Smalltalk Conference Platinum Sponsors cosmocows Page
    [Show full text]