Graceful Language Extensions and Interfaces

Total Page:16

File Type:pdf, Size:1020Kb

Graceful Language Extensions and Interfaces Graceful Language Extensions and Interfaces by Michael Homer A thesis submitted to the Victoria University of Wellington in fulfilment of the requirements for the degree of Doctor of Philosophy Victoria University of Wellington 2014 Abstract Grace is a programming language under development aimed at ed- ucation. Grace is object-oriented, imperative, and block-structured, and intended for use in first- and second-year object-oriented programming courses. We present a number of language features we have designed for Grace and implemented in our self-hosted compiler. We describe the design of a pattern-matching system with object-oriented structure and minimal extension to the language. We give a design for an object-based module system, which we use to build dialects, a means of extending and restricting the language available to the programmer, and of implementing domain-specific languages. We show a visual programming interface that melds visual editing (à la Scratch) with textual editing, and that uses our dialect system, and we give the results of a user experiment we performed to evaluate the usability of our interface. ii ii Acknowledgments The author wishes to acknowledge: • James Noble and David Pearce, his supervisors; • Andrew P. Black and Kim B. Bruce, the other designers of Grace; • Timothy Jones, a coauthor on a paper forming part of this thesis and contributor to Minigrace; • Amy Ruskin, Richard Yannow, and Jameson McCowan, coauthors on other papers; • Daniel Gibbs, Jan Larres, Scott Weston, Bart Jacobs, Charlie Paucard, and Alex Sandilands, other contributors to Minigrace; • Gilad Bracha, Matthias Felleisen, and the other (anonymous) review- ers of papers forming part of this thesis; • the participants in his user study; • and Roma Klapaukh, Juanri Barnard, Alexandra Donnison, Amy Chard, and Timothy Jones for providing feedback on drafts of this thesis. iii Contents 1 Introduction1 2 Related Work5 2.1 Programming language education ............... 5 2.2 Pattern matching ......................... 14 2.2.1 Scala ............................ 17 2.2.2 Newspeak......................... 18 2.2.3 Other object-oriented languages ............ 20 2.2.4 Functional languages................... 22 2.3 Modules .............................. 26 2.3.1 Classes and objects as modules............. 27 2.3.2 Packages.......................... 30 2.3.3 Foreign objects....................... 33 2.4 Dialects and domain-specific languages ............ 34 2.4.1 Racket ........................... 35 2.4.2 Scala ............................ 36 2.4.3 Ruby ............................ 38 2.4.4 Haskell........................... 39 2.4.5 Cedalion.......................... 40 2.4.6 Converge.......................... 41 2.4.7 Wyvern........................... 42 2.4.8 Protean operators..................... 42 2.4.9 External domain-specific languages .......... 43 2.4.10 Pluggable checkers..................... 45 iv CONTENTS v 2.5 Visual interfaces for novices................... 46 2.5.1 Scratch........................... 46 2.5.2 Blockly........................... 48 2.5.3 Codemancer........................ 49 2.5.4 Lego Mindstorms..................... 49 2.5.5 Calico............................ 50 2.5.6 Alice ............................ 51 2.5.7 Greenfoot ......................... 51 2.5.8 TouchDevelop....................... 52 2.5.9 Graphical overlays on programs ............ 53 3 The Grace Language 55 3.1 Goals of Grace........................... 55 3.2 Variables and literals ....................... 56 3.3 Objects in Grace are closer than they appear.......... 58 3.4 Methods .............................. 59 3.4.1 Operators ......................... 59 3.4.2 Field accesses ....................... 61 3.4.3 Multi-part method names................ 61 3.4.4 Visibility.......................... 62 3.5 Blocks................................ 63 3.6 Classes ............................... 65 3.7 Inheritance............................. 65 3.7.1 Chained inheritance ................... 66 3.8 Types................................ 67 3.8.1 Generic types ....................... 69 3.9 Pattern matching ......................... 69 3.10 Modules .............................. 70 3.11 Dialects............................... 70 4 Patterns as Objects 71 4.1 Introduction............................ 71 v vi CONTENTS 4.2 Conceptual model......................... 73 4.3 Graceful patterns ......................... 74 4.3.1 match()case()...case.................... 74 4.3.2 Matching blocks...................... 75 4.3.3 Literal patterns ...................... 76 4.3.4 Type patterns ....................... 76 4.3.5 Variable patterns ..................... 76 4.3.6 Wildcard pattern ..................... 77 4.3.7 Combinators........................ 77 4.3.8 Destructuring....................... 78 4.3.9 Predicates ......................... 79 4.3.10 Using arbitrary expressions to obtain patterns . 80 4.4 Patterns as objects......................... 81 4.4.1 Patterns as an object framework............. 81 4.4.2 Irrefutable patterns.................... 82 4.4.3 Combinators........................ 85 4.4.4 Types............................ 87 4.4.5 Autozygotic patterns................... 88 4.4.6 Destructuring patterns.................. 89 4.4.7 Destructuring types.................... 92 4.4.8 Lambda patterns and match...case ........... 94 4.5 Types and patterns ........................ 95 4.5.1 Pattern and MatchResult................. 96 4.5.2 Destructuring....................... 97 4.5.3 Combinators........................ 98 4.5.4 Exhaustive matching................... 99 4.6 Generalising patterns.......................100 4.7 Discussion and comparison with related work . 102 4.7.1 Scala ............................103 4.7.2 Newspeak.........................106 4.7.3 Racket ...........................110 vi CONTENTS vii 4.7.4 Gradual and optional typing . 111 4.7.5 Matching as monads...................112 4.7.6 Future work........................112 4.7.7 Alternative approaches..................113 4.7.8 Application ........................119 4.8 Conclusion.............................119 5 Modules as Gradually-Typed Objects 121 5.1 Introduction............................121 5.1.1 What is a module? ....................122 5.2 Modules as objects ........................123 5.2.1 Importing modules....................124 5.2.2 Gradual typing of modules . 125 5.2.3 Recursive module imports . 128 5.3 Design rationale..........................129 5.4 Package management.......................130 5.4.1 Identifying packages...................130 5.4.2 Finding packages.....................132 5.4.3 Installing packages....................132 5.4.4 Publishing packages ...................132 5.5 Extensions and future work ...................133 5.5.1 Foreign objects.......................134 5.5.2 External data........................136 5.5.3 Resource imports.....................136 5.6 Comparison with related work . 139 5.6.1 Python...........................140 5.6.2 Newspeak.........................142 5.6.3 Go..............................143 5.7 Conclusion.............................144 6 Dialects 147 6.1 What is a dialect? .........................149 vii viii CONTENTS 6.1.1 Structure..........................149 6.1.2 Pluggable checkers....................151 6.1.3 Run-time protocol.....................152 6.2 Case studies of dialects......................153 6.2.1 Logo-like turtle graphics . 153 6.2.2 Design by contract ....................156 6.2.3 Dialect for writing dialects . 158 6.2.4 Requiring type annotations . 161 6.2.5 Literal blocks .......................164 6.2.6 Ownership types .....................165 6.2.7 Type checking.......................171 6.2.8 Relations..........................173 6.2.9 Finite state machines...................174 6.2.10 GrAPL ...........................175 6.2.11 GPGPU parallelism....................176 6.3 Discussion .............................179 6.3.1 Inheritance.........................179 6.3.2 Delegation.........................181 6.3.3 Macros...........................182 6.3.4 Local dialects .......................184 6.3.5 Default methods .....................185 6.4 Implementation..........................186 6.4.1 Lexical scoping ......................186 6.4.2 Executing checkers statically . 187 6.4.3 Side effects.........................189 6.4.4 Security concerns.....................190 6.5 Comparison with related work . 190 6.5.1 Racket ...........................190 6.5.2 Scala ............................193 6.5.3 Ruby ............................193 6.5.4 Wyvern...........................194 viii CONTENTS ix 6.5.5 Cedalion..........................194 6.5.6 Haskell...........................195 6.5.7 Xtext ............................196 6.6 Conclusion.............................198 7 Tiled Grace 201 7.1 Tiled Grace ............................202 7.1.1 Implementation......................205 7.2 Motivation.............................208 7.3 Functionality............................210 7.3.1 Handling errors......................211 7.3.2 Overlays..........................213 7.3.3 Dialects...........................214 7.3.4 Type checking.......................217 7.3.5 Hints............................219 7.4 Experiment.............................220 7.4.1 Research questions....................221 7.4.2 Participation........................222 7.4.3 Instruments ........................222 7.4.4 Protocol ..........................222 7.4.5 Data collection.......................225 7.5 Results ...............................234
Recommended publications
  • Learning to Program in Perl
    Learning to Program in Perl by Graham J Ellis Languages of the Web Learning to Program in Perl version 1.7 Written by Graham Ellis [email protected] Design by Lisa Ellis Well House Consultants, Ltd. 404, The Spa, Melksham, Wiltshire SN12 6QL England +44 (0) 1225 708 225 (phone) +44 (0) 1225 707 126 (fax) Find us on the World Wide Web at: http://www.wellho.net Or contact us at: [email protected] Copyright © 2003 by Well House Consultants, Ltd. Printed in Great Britain. Printing History May 1999 1.0 First Edition February 2000 1.1 Minor additions June 2000 1.2 Compliation of modules October 2000 1.3 Name change, revisions April 2002 1.4 Added modules September 2002 1.5 Added modules January 2003 1.6 Updated modules February 2003 1.7 Updated modules This manual was printed on 21 May 2003. Notice of Rights All rights reserved. No part of this manual, including interior design, may be reproduced or translated into any language in any form, or transmitted in any form or by any means electronic, mechanical, photocopying, recording or otherwise, without prior written permission of Well House Consultants except in the case of brief quotations embodied in critical articles and reviews. For more information on getting permission for reprints and excerpts, contact Graham Ellis at Well House Consultants. This manual is subject to the condition that it shall not, by way of trade or otherwise, be lent, sold, hired out or otherwise circulated without the publisher's prior consent, incomplete nor in any form of binding or cover other than in which it is published and without a similar condition including this condition being imposed on the subsequent receiver.
    [Show full text]
  • Hacker Public Radio
    hpr0001 :: Introduction to HPR hpr0002 :: Customization the Lost Reason hpr0003 :: Lost Haycon Audio Aired on 2007-12-31 and hosted by StankDawg Aired on 2008-01-01 and hosted by deepgeek Aired on 2008-01-02 and hosted by Morgellon StankDawg and Enigma talk about what HPR is and how someone can contribute deepgeek talks about Customization being the lost reason in switching from Morgellon and others traipse around in the woods geocaching at midnight windows to linux Customization docdroppers article hpr0004 :: Firefox Profiles hpr0005 :: Database 101 Part 1 hpr0006 :: Part 15 Broadcasting Aired on 2008-01-03 and hosted by Peter Aired on 2008-01-06 and hosted by StankDawg as part of the Database 101 series. Aired on 2008-01-08 and hosted by dosman Peter explains how to move firefox profiles from machine to machine 1st part of the Database 101 series with Stankdawg dosman and zach from the packetsniffers talk about Part 15 Broadcasting Part 15 broadcasting resources SSTRAN AMT3000 part 15 transmitter hpr0007 :: Orwell Rolled over in his grave hpr0009 :: This old Hack 4 hpr0008 :: Asus EePC Aired on 2008-01-09 and hosted by deepgeek Aired on 2008-01-10 and hosted by fawkesfyre as part of the This Old Hack series. Aired on 2008-01-10 and hosted by Mubix deepgeek reviews a film Part 4 of the series this old hack Mubix and Redanthrax discuss the EEpc hpr0010 :: The Linux Boot Process Part 1 hpr0011 :: dd_rhelp hpr0012 :: Xen Aired on 2008-01-13 and hosted by Dann as part of the The Linux Boot Process series.
    [Show full text]
  • Integrating Stream Parallelism and Task Parallelism in a Dataflow Programming Model
    RICE UNIVERSITY Integrating Stream Parallelism and Task Parallelism in a Dataflow Programming Model by Drago¸sDumitru Sb^ırlea A Thesis Submitted in Partial Fulfillment of the Requirements for the Degree Master of Science Approved, Thesis Committee: Vivek Sarkar Professor of Computer Science E.D. Butcher Chair in Engineering Keith D. Cooper L. John and Ann H. Doerr Professor of Computational Engineering Lin Zhong Associate Professor of Electrical and Computer Engineering Jun Shirako Research Scientist Computer Science Department Houston, Texas September 3rd, 2011 ABSTRACT Integrating Stream Parallelism and Task Parallelism in a Dataflow Programming Model by Drago¸sDumitru Sb^ırlea As multicore computing becomes the norm, exploiting parallelism in applications becomes a requirement for all software. Many applications exhibit different kinds of parallelism, but most parallel programming languages are biased towards a specific paradigm, of which two common ones are task and streaming parallelism. This results in a dilemma for programmers who would prefer to use the same language to exploit different paradigms for different applications. Our thesis is an integration of stream- parallel and task-parallel paradigms can be achieved in a single language with high programmability and high resource efficiency, when a general dataflow programming model is used as the foundation. The dataflow model used in this thesis is Intel's Concurrent Collections (CnC). While CnC is general enough to express both task-parallel and stream-parallel paradigms, all current implementations of CnC use task-based runtime systems that do not de- liver the resource efficiency expected from stream-parallel programs. For streaming programs, this use of a task-based runtime system is wasteful of computing cycles and makes memory management more difficult than it needs to be.
    [Show full text]
  • Declaration of James Johnson and Exhibits
    Case 1:07-cv-00312-GBD-MHD Document 262 Filed 06/23/15 Page 1 of 51 UNITED STATES DISTRICT COURT SOUTHERN DISTRICT OF NEW YORK ––––––––––––––––––––––––––––––––––––––––––– x : Civil Action No.: 07-CV-00312-GBD : IN RE CELESTICA INC. SEC. LITIG. : (ECF CASE) : : Hon. George B. Daniels : ––––––––––––––––––––––––––––––––––––––––––– x DECLARATION OF JAMES W. JOHNSON IN SUPPORT OF CLASS REPRESENTATIVES’ MOTION FOR FINAL APPROVAL OF PROPOSED CLASS ACTION SETTLEMENT AND PLAN OF ALLOCATION AND CLASS COUNSEL’S MOTION FOR AWARD OF ATTORNEYS’ FEES AND PAYMENT OF LITIGATION EXPENSES Case 1:07-cv-00312-GBD-MHD Document 262 Filed 06/23/15 Page 2 of 51 TABLE OF CONTENTS I. PRELIMINARY STATEMENT: THE SIGNIFICANT RECOVERY ACHIEVED .........................................................................................................................2 II. FACTUAL SUMMARY OF THE CLAIMS ......................................................................4 III. RELEVANT PROCEDURAL HISTORY ..........................................................................6 A. Initial Complaints and Appointment of Lead Plaintiffs ...........................................6 B. The Complaint and Motions to Dismiss ..................................................................7 C. Appeal to the Second Circuit Court of Appeals .......................................................8 D. Extensive Fact Discovery ......................................................................................10 E. Discovery Propounded on Lead Plaintiffs .............................................................14
    [Show full text]
  • 2016 8Th International Conference on Cyber Conflict: Cyber Power
    2016 8th International Conference on Cyber Conflict: Cyber Power N.Pissanidis, H.Rõigas, M.Veenendaal (Eds.) 31 MAY - 03 JUNE 2016, TALLINN, ESTONIA 2016 8TH International ConFerence on CYBER ConFlict: CYBER POWER Copyright © 2016 by NATO CCD COE Publications. All rights reserved. IEEE Catalog Number: CFP1626N-PRT ISBN (print): 978-9949-9544-8-3 ISBN (pdf): 978-9949-9544-9-0 CopyriGHT AND Reprint Permissions No part of this publication may be reprinted, reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording or otherwise, without the prior written permission of the NATO Cooperative Cyber Defence Centre of Excellence ([email protected]). This restriction does not apply to making digital or hard copies of this publication for internal use within NATO, and for personal or educational use when for non-profit or non-commercial purposes, providing that copies bear this notice and a full citation on the first page as follows: [Article author(s)], [full article title] 2016 8th International Conference on Cyber Conflict: Cyber Power N.Pissanidis, H.Rõigas, M.Veenendaal (Eds.) 2016 © NATO CCD COE Publications PrinteD copies OF THIS PUBlication are availaBLE From: NATO CCD COE Publications Filtri tee 12, 10132 Tallinn, Estonia Phone: +372 717 6800 Fax: +372 717 6308 E-mail: [email protected] Web: www.ccdcoe.org Head of publishing: Jaanika Rannu Layout: Jaakko Matsalu LEGAL NOTICE: This publication contains opinions of the respective authors only. They do not necessarily reflect the policy or the opinion of NATO CCD COE, NATO, or any agency or any government.
    [Show full text]
  • A Java Virtual Machine Extended to Run Parrot Bytecode
    A JAVA VIRTUAL MACHINE EXTENDED TO RUN PARROT BYTECODE A thesis submitted to the University of Manchester for the degree of Master of Science in the Faculty of Engineering and Physical Sciences 2006 By Martin Dahl School of Computer Science Contents Abstract 8 Declaration 9 Copyright 10 Acknowledgements 11 1 Introduction 12 1.1 Objectives and Motivation . 13 1.2 Related Work . 13 1.2.1 Parrot . 14 1.2.2 Pugs . 14 1.2.3 PearColator . 14 1.3 Organisation of the Thesis . 15 2 The Parrot Project 16 2.1 Perl 6 . 17 2.1.1 Design . 17 2.1.2 Perl 6 Internals . 18 2.1.3 Pugs . 19 2.1.4 Parrot Perl 6 Compiler . 19 2.2 Virtual Machine . 20 2.2.1 Design . 20 2.2.2 Architecture . 21 2.2.3 Registers . 22 2.2.4 Instruction Set . 23 2.2.5 Parrot Assembly Language and Intermediate Representation 24 2 2.3 Parrot Magic Cookies . 24 2.3.1 Core PMCs . 24 2.3.2 Other PMCs . 27 2.4 Compiler suite . 27 2.4.1 Perl 6 . 27 2.4.2 Other languages . 27 2.5 Summary . 28 3 Parrot Bytecode Format 30 3.1 Header . 31 3.2 Bytecode Format 1 . 33 3.2.1 Directory Segment . 34 3.2.2 Constant Table Segment . 35 3.2.3 Bytecode Segment . 38 3.2.4 Debug Segment . 38 3.2.5 Fixup Segment . 39 3.3 Summary . 40 4 Parakeet 41 4.1 Overview . 42 4.2 Jikes RVM . 43 4.3 PearColator .
    [Show full text]
  • Dataflow Programming Model for Reconfigurable Computing Laurent Gantel, Amel Khiar, Benoît Miramond, Mohamed El Amine Benkhelifa, Fabrice Lemonnier, Lounis Kessal
    Dataflow Programming Model For Reconfigurable Computing Laurent Gantel, Amel Khiar, Benoît Miramond, Mohamed El Amine Benkhelifa, Fabrice Lemonnier, Lounis Kessal To cite this version: Laurent Gantel, Amel Khiar, Benoît Miramond, Mohamed El Amine Benkhelifa, Fabrice Lemonnier, et al.. Dataflow Programming Model For Reconfigurable Computing. 6th International Workshop on Reconfigurable Communication-centric Systems-on-Chip (ReCoSoC), Jun 2011, Montpellier, France. pp.1-8, 10.1109/ReCoSoC.2011.5981505. hal-00623674 HAL Id: hal-00623674 https://hal.archives-ouvertes.fr/hal-00623674 Submitted on 14 Sep 2011 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. Dataflow Programming Model For Reconfigurable Computing L. Gantel∗† and A. Khiar∗ and B. Miramond∗ and A. Benkhelifa∗ and F. Lemonnier† and L. Kessal∗ ∗ ETIS Laboratory – UMR CNRS 8051 † Embedded System Lab Universityof Cergy-Pontoise/ ENSEA Thales Research and Technology 6,avenueduPonceau 1,avenueAugustinFresnel 95014 Cergy-Pontoise, FRANCE 91767 Palaiseau, FRANCE Email {firstname.name}@ensea.fr Email {firstname.name}@thalesgroup.com Abstract—This paper addresses the problem of image process- system, such as sockets. ing algorithms implementation onto dynamically and reconfig- It reduces significantly the work of application programmers urable architectures. Today, these Systems-on-Chip (SoC), offer by relieving them of tedious and error-prone programming.
    [Show full text]
  • Threat Modeling and Circumvention of Internet Censorship by David Fifield
    Threat modeling and circumvention of Internet censorship By David Fifield A dissertation submitted in partial satisfaction of the requirements for the degree of Doctor of Philosophy in Computer Science in the Graduate Division of the University of California, Berkeley Committee in charge: Professor J.D. Tygar, Chair Professor Deirdre Mulligan Professor Vern Paxson Fall 2017 1 Abstract Threat modeling and circumvention of Internet censorship by David Fifield Doctor of Philosophy in Computer Science University of California, Berkeley Professor J.D. Tygar, Chair Research on Internet censorship is hampered by poor models of censor behavior. Censor models guide the development of circumvention systems, so it is important to get them right. A censor model should be understood not just as a set of capabilities|such as the ability to monitor network traffic—but as a set of priorities constrained by resource limitations. My research addresses the twin themes of modeling and circumvention. With a grounding in empirical research, I build up an abstract model of the circumvention problem and examine how to adapt it to concrete censorship challenges. I describe the results of experiments on censors that probe their strengths and weaknesses; specifically, on the subject of active probing to discover proxy servers, and on delays in their reaction to changes in circumvention. I present two circumvention designs: domain fronting, which derives its resistance to blocking from the censor's reluctance to block other useful services; and Snowflake, based on quickly changing peer-to-peer proxy servers. I hope to change the perception that the circumvention problem is a cat-and-mouse game that affords only incremental and temporary advancements.
    [Show full text]
  • Machine Learning with Multiscale Dataflow Computing for High Energy Physics
    Machine Learning with Multiscale Dataflow Computing for High Energy Physics 10.7.2019 Outline • Dataflow Concept and Maxeler • Dataflow for ML and Use Cases • Dataflow Programming Introduction • Hands-on Example 2 Dataflow Concept and Maxeler 10.7.2019 Programmable Spectrum Control-flow processors Dataflow processor GK110 Single-Core CPU Multi-Core Several-Cores Many-Cores Dataflow Increasing Parallelism (#cores) Increasing Core Complexity ( Hardware Clock Frequency ) GPU (NVIDIA, AMD) Intel, AMD Tilera, XMOS etc... Maxeler Hybrid e.g. AMD Fusion, IBM Cell 4 Maxeler Dataflow Engines (DFEs) • Largest Reconfigurable DataflowLMEM Engine (DFE) (Large Memory) Chip 4-96GB MaxRing • O(1k) multipliers High bandwidth memory link Interconnect • O(100k) logic cells Reconfigurable compute fabric • O(10MB) of on-chip SRAM MaxRing Dataflow cores & * links FMEM (fast • O(10GB) of on-card DRAM memory) • DFE-to-DFE interconnect Link to main data network * approaching 128GB on a ¾, single slot PCIe card 5 5 Maxeler Dataflow Engines (DFEs) CPU DFE (Dataflow Engine) 6 Control Flow versus Data Flow • Control Flow: • It is all about how instructions “move” • Data may move along with instructions (secondary issue) • Order of computation is the key • Data Flow: • It is about how data moves through a set of “instructions” in 2D space • Data moves will trigger control • Data availability, transformations and operation latencies are the key 7 Area Utilisation of Modern Chips AMD Bulldozer CPU Nvidia Tesla V100 GPU 8 DFE Area Utilisation 9 Dataflow Computing • A custom chip for a specific application • No instructions ➝ no instruction decode logic • No branches ➝ no branch prediction • Explicit parallelism ➝ no out-of-order scheduling • Data streamed onto-chip ➝ no multi-level caches Memory (Lots (Lots of) Rest of the My Dataflow world Engine 10 Dataflow Computing • Single worker builds a single • Each component is added to bicycle from a group of parts the bicycle in a production line.
    [Show full text]
  • LAMP and the REST Architecture Step by Step Analysis of Best Practice
    LAMP and the REST Architecture Step by step analysis of best practice Santiago Gala High Sierra Technology S.L.U. Minimalistic design using a Resource Oriented Architecture What is a Software Platform (Ray Ozzie ) ...a relevant and ubiquitous common service abstraction Creates value by leveraging participants (e- cosystem) Hardware developers (for OS level platforms) Software developers Content developers Purchasers Administrators Users Platform Evolution Early stage: not “good enough” solution differentiation, innovation, value flows Later: modular architecture, commoditiza- tion, cloning no premium, just speed to market and cost driven The platform effect - ossification, followed by cloning - is how Chris- tensen-style modularity comes to exist in the software industry. What begins as a value-laden proprietary platform becomes a replaceable component over time, and the most successful of these components finally define the units of exchange that power commodity networks. ( David Stutz ) Platform Evolution (II) Example: PostScript Adobe Apple LaserWriter Aldus Pagemaker Desktop Publishing Linotype imagesetters NeWS (Display PostScript) OS X standards (XSL-FO -> PDF, Scribus, OOo) Software Architecture ...an abstraction of the runtime elements of a software system during some phase of its oper- ation. A system may be composed of many lev- els of abstraction and many phases of opera- tion, each with its own software architecture. Roy Fielding (REST) What is Architecture? Way to partition a system in components
    [Show full text]
  • Graceful Language Extensions and Interfaces
    Graceful Language Extensions and Interfaces by Michael Homer A thesis submitted to the Victoria University of Wellington in fulfilment of the requirements for the degree of Doctor of Philosophy Victoria University of Wellington 2014 Abstract Grace is a programming language under development aimed at ed- ucation. Grace is object-oriented, imperative, and block-structured, and intended for use in first- and second-year object-oriented programming courses. We present a number of language features we have designed for Grace and implemented in our self-hosted compiler. We describe the design of a pattern-matching system with object-oriented structure and minimal extension to the language. We give a design for an object-based module system, which we use to build dialects, a means of extending and restricting the language available to the programmer, and of implementing domain-specific languages. We show a visual programming interface that melds visual editing (à la Scratch) with textual editing, and that uses our dialect system, and we give the results of a user experiment we performed to evaluate the usability of our interface. ii ii Acknowledgments The author wishes to acknowledge: • James Noble and David Pearce, his supervisors; • Andrew P. Black and Kim B. Bruce, the other designers of Grace; • Timothy Jones, a coauthor on a paper forming part of this thesis and contributor to Minigrace; • Amy Ruskin, Richard Yannow, and Jameson McCowan, coauthors on other papers; • Daniel Gibbs, Jan Larres, Scott Weston, Bart Jacobs, Charlie Paucard, and Alex Sandilands, other contributors to Minigrace; • Gilad Bracha, Matthias Felleisen, and the other (anonymous) review- ers of papers forming part of this thesis; • the participants in his user study; • David Streader, John Grundy, and Laurence Tratt, examiners of the thesis; • and Alexandra Donnison, Amy Chard, Juanri Barnard, Roma Kla- paukh, and Timothy Jones, for providing feedback on drafts of this thesis.
    [Show full text]
  • Proceedings of the 8Th European Lisp Symposium Goldsmiths, University of London, April 20-21, 2015 Julian Padget (Ed.) Sponsors
    Proceedings of the 8th European Lisp Symposium Goldsmiths, University of London, April 20-21, 2015 Julian Padget (ed.) Sponsors We gratefully acknowledge the support given to the 8th European Lisp Symposium by the following sponsors: WWWLISPWORKSCOM i Organization Programme Committee Julian Padget – University of Bath, UK (chair) Giuseppe Attardi — University of Pisa, Italy Sacha Chua — Toronto, Canada Stephen Eglen — University of Cambridge, UK Marc Feeley — University of Montreal, Canada Matthew Flatt — University of Utah, USA Rainer Joswig — Hamburg, Germany Nick Levine — RavenPack, Spain Henry Lieberman — MIT, USA Christian Queinnec — University Pierre et Marie Curie, Paris 6, France Robert Strandh — University of Bordeaux, France Edmund Weitz — University of Applied Sciences, Hamburg, Germany Local Organization Christophe Rhodes – Goldsmiths, University of London, UK (chair) Richard Lewis – Goldsmiths, University of London, UK Shivi Hotwani – Goldsmiths, University of London, UK Didier Verna – EPITA Research and Development Laboratory, France ii Contents Acknowledgments i Messages from the chairs v Invited contributions Quicklisp: On Beyond Beta 2 Zach Beane µKanren: Running the Little Things Backwards 3 Bodil Stokke Escaping the Heap 4 Ahmon Dancy Unwanted Memory Retention 5 Martin Cracauer Peer-reviewed papers Efficient Applicative Programming Environments for Computer Vision Applications 7 Benjamin Seppke and Leonie Dreschler-Fischer Keyboard? How quaint. Visual Dataflow Implemented in Lisp 15 Donald Fisk P2R: Implementation of
    [Show full text]