Traits Composing Classes from Behavioral Building Blocks

Total Page:16

File Type:pdf, Size:1020Kb

Traits Composing Classes from Behavioral Building Blocks Traits Composing Classes from Behavioral Building Blocks Inauguraldissertation der Philosophisch-naturwissenschaftlichen Fakultat¨ der Universitat¨ Bern vorgelegt von Nathanael Scharli¨ von Zell (LU) Leiter der Arbeit: Prof. Dr. Stephane´ Ducasse Prof. Dr. Oscar Nierstrasz Institut fur¨ Informatik und angewandte Mathematik Traits Composing Classes from Behavioral Building Blocks Inauguraldissertation der Philosophisch-naturwissenschaftlichen Fakultat¨ der Universitat¨ Bern vorgelegt von Nathanael Scharli¨ von Zell (LU) Leiter der Arbeit: Prof. Dr. Stephane´ Ducasse Prof. Dr. Oscar Nierstrasz Institut fur¨ Informatik und angewandte Mathematik Von der Philosophisch-naturwissenschaftlichen Fakultat¨ angenommen. Bern, 03.02.2005 Der Dekan: Prof. P. Messerli Abstract Inheritance is well-known and accepted as a fundamental mechanism for reuse in object-oriented languages. Unfortunately, the main variants — single inheritance, multiple inheritance, and mixin inheritance — all suffer from conceptual and practical problems related to software reuse and robustness with respect to changes. In a first part of this thesis, we identify and illustrate these problems. To overcome these problems, we then present traits, a simple compositional model that extends single inheritance. A trait is essentially a (parameterized) set of methods; it serves as a behavioral building block for classes and is the primitive unit of code reuse. We develop a formal model of traits that establishes how traits can be composed to form other traits or classes, and we describe how we implemented traits in Squeak Smalltalk by bootstrapping a new language kernel. We present our experimental validation in which we apply traits to refactor parts of the Smalltalk kernel and library, and we develop a programming methodology around the usage of traits and the trait browser, the tool that we implemented to take full advantage of the availability of traits in the Squeak programming environment. i Acknowledgments First and foremost, I would like to express my gratitude to my advisors Oscar Nierstrasz and Stephane´ Ducasse. Oscar gave me the opportunity to work in his research group and provided me with tremendous professional support and excellent advice throughout my studies. Steph’s´ passion and energy are truly contagious. Our countless discussions were invaluable in developing the concepts in this thesis. I also would like to thank Steph´ for introducing me to all of the great technology and people and for educating me in the “French way of life”. Oscar and Steph,´ it was a great pleasure to work with you during all these years. I would also like to thank the other members of my Ph.D. committee, Andrew Black and Alan Kay. Andrew invited me to work with his research group at OGI in Portland. Despite the geographic distance, he provided me with continuous support during my Ph.D. I thank him for the valuable discussions, enjoyable pair programming sessions, and for helping make my papers fit to read. Alan also gave me the opportunity to work with him and his group in California. I especially appreciate that he was willing to share his fantastic knowledge and experience with me as well as many interesting stories from the past. Andrew and Alan, thank you for accepting to be part of my Ph.D. committee; I feel very lucky and honored. Very special thanks go to my family. I thank my parents, Rosmarie and Toni, and my siblings, Andrea, Matthias, and Petra, for their unending love and support and for the wonderful environment I grew up in. I have had a truly magical time with you and I cannot express how happy it makes me to be part of our family. Most importantly, I thank Rebecca — my love, my best friend and now also my wife — for being here and sharing her life, her love, and her future with me. There is nothing that could make me happier. Thanks also to Rebecca’s family for welcoming me into their lives. I would also like to thank my friends for all the adventures and the good times we have experienced together and for the support and advice you have given me. You know who you are, so I will not list you here. Just let me say that good friends are invaluable and that I feel extremely fortunate to know and be friends with every single one of you. You are the best. Many thanks also to all the colleagues who have helped me and collaborated with me during my work on traits. I especially thank Gilad Bracha for inspiring me with his dissertation and for kindly sharing with me his knowledge about mixins and other aspects of programming language design. Thanks also to Andreas Raab, who got me thinking about traits in the first place, Adrian Lienhard, who did a lot of work for the stable implementation of traits in Squeak, Philip Quitslund, who developed traits for mini-Java and shared his office with me during my visits to Portland, Stevan Little, who implemented traits in Perl, Matthias Zenger and Martin Odersky, who discussed their implementation of traits in Scala with us, and Jean-Guy Schneider, who reviewed some of our papers on traits. Next I would like to thank all the former and current members of the Software Composition Group. It was a pleasure to work with you: Franz Achermann, Gabriela Arevalo, Alexandre Bergel, Frank Buchli, Thomas Buhler,¨ Calogero Butera, Juan Carlos Cruz, Marcus Denker, Markus Galli,¨ Tudor Girba, Orla Greevy, Marc- Philippe Horvath, Andreas Hosbach, Markus Kobel, Stefan Kneubuhl,¨ Adrian Kuhn, Michael Locher, Liang Peng, Laura Ponisio, Lukas Renggli, Tamar Richner, Matthias Rieger, Andreas Schlapbach, Therese Schmid, Mauricio Seeberger, Daniele Talerico, Sander Tichelaar, David Vogel, and Roel Wuyts. I would also like to thank all the people that supported and hosted me during my travels and stays abroad. In particular, I thank the Squeak Group at Disney (now at Viewpoints Research and HP Labs) for making my ii iii internships and visits possible. The time I got to spend with you in California was truly unforgettable. Thanks also to the team at OGI in Portland for making my visits so smooth and pleasant. Finally, I would like to send my best to all the great people I have met and talked to at conferences, meetings, workshops, online and elsewhere. Nathanael Scharli¨ February 2005 iii Contents Abstract i 1 Introduction 1 1.1 Understanding the Problem . 1 1.2 Our Proposal: Traits . 2 1.3 Contributions . 3 1.4 Thesis Outline . 3 2 Problems with Inheritance 5 2.1 Composition and Decomposition Problems . 5 2.1.1 Decomposition Problems . 5 2.1.2 Composition problems . 7 2.2 Occurrences of these Problems in Real Languages . 9 2.2.1 Strongtalk and Jam . 9 2.2.2 C++ . 11 2.2.3 CLOS . 15 3 Traits 16 3.1 Traits – Composable Units of Behavior . 16 3.1.1 Classes and Methods . 17 3.1.2 Traits . 19 3.1.3 Composing Classes from Traits . 20 3.1.4 Composite Traits . 22 3.1.5 Conflict Resolution . 23 3.1.6 Well-definedness . 27 3.1.7 Refactoring, reachability and equivalence . 28 3.2 Evaluation . 31 3.2.1 Decomposition Problems . 31 3.2.2 Composition Problems . 31 3.3 Discussion . 32 3.3.1 Design Decisions . 33 3.3.2 C++ Revisited . 35 4 Implementation 39 4.1 Overview of the Smalltalk-80 Kernel Architecture . 39 4.1.1 Organization of Classes and Metaclasses . 39 4.1.2 The Kernel Classes . 40 4.2 Traits Design Rationale . 42 4.3 The New Language Kernel . 42 v vi CONTENTS 4.3.1 The New Kernel Classes . 42 4.3.2 Decomposition into Traits . 46 4.4 Flattening Traits at Composition Time . 46 4.5 Conclusions . 47 5 Tools and Methodology 48 5.1 Traits and Tools: Analysis . 48 5.2 The Trait Browser . 49 5.2.1 Overview . 49 5.2.2 Virtual Categories . 50 5.2.3 Using the Browser With Traits . 52 5.2.4 Implementation . 54 5.3 Programming Methodology . 59 5.3.1 The Roles of Classes and Traits . 60 5.3.2 Uniform Protocols . 60 5.3.3 Uncovering Hidden Structure . 64 5.3.4 Traits and Agile Methodologies . 65 5.4 Interaction between Language, Tools and Methodology . 66 6 Case Study: Refactoring the Smalltalk Collection Classes 67 6.1 The Smalltalk Collection Classes . 67 6.1.1 The Varieties of Collection . 69 6.1.2 Streams . 71 6.2 Analysis of the Collection Classes . 71 6.2.1 Unnecessary Inheritance . 72 6.2.2 Code Duplication and Inappropriate Hierarchies . 73 6.2.3 Conceptual Shortcomings . 74 6.3 Refactoring Results . 75 6.3.1 The New Collection Hierarchy . 75 6.3.2 The New Stream Hierarchy . 79 6.3.3 Measurements of the Refactored Classes . 79 6.3.4 Assessment of the Refactored Classes . 84 6.3.5 Design Decisions . 85 6.4 Discussion . 85 6.4.1 Lessons Learned . 85 6.4.2 Comparison to Other Approaches . 86 6.5 Conclusions . 88 7 Case Study: Trait-based Composition of Class Properties 90 7.1 Motivation and Overview . 90 7.2 Representing Class Properties As Traits . ..
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]