1,790 research outputs found
The Expression Problem, Gracefully
The “Expression Problem” was brought to prominence by Wadler in 1998. It is widely regarded as illustrating that the two mainstream approaches to data abstraction — procedural abstraction and type abstraction— are complementary, with the strengths of one being the weaknesses of the other. Despite an extensive literature, the origin of the problem remains ill-understood. I show that the core problem is in fact the use of global constants, and demonstrate that an important aspect of the problem goes away when Java is replaced by a language like Grace, which eliminates them
Better Refactoring Tools for a Better Refactoring Strategy
Refactoring tools can improve the speed and accuracy with which we create and maintain software – but only if they are used. In practice, tools are not used as much as they could be; this seems to be because they do not align with the refactoring strategy preferred by the majority of programmers: floss refactoring. We propose five principles that characterize successful floss refactoring tools – principles that can help programmers to choose the most appropriate refactoring tools and also help toolsmiths to design more usable tools
Aspects of Information Flow
Along with our colleagues at the Oregon Graduate Institute and Georgia Institute of Technology, we have recently been experimenting with real-rate systems, that is, systems that are required to move data from one place to another at defined rates, such as 30 items per second. Audio conferencing or streaming video systems are typical: they are required to deliver video or audio frames from a source (a server or file system) in one place to a sink (a display or a sound generator) in another; the frames must arrive periodically, with constrained latency and jitter. We have successfully built such systems (for example, see reference [Walpole 1997]), but they are not simple to design or construct. Our current research seeks to capture our knowledge of this domain into an information flow framework, called InfoPipes. The goal of Infopipes is to make the task of building a system that moves data from one part of the Internet to another as simple as connecting pre-defined components such as buffers, pipes, filters and meters. The latency, jitter and data-rate properties of the resulting pipeline should follow by calculation from the properties of the components
Refactoring Tools: Fitness for Purpose
Refactoring tools can improve the speed and accuracy with which we create and maintain software -- but only if they are used. In practice, tools are not used as much as they could be: this seems to be because sometimes they do not align with the refactoring tactic preferred by the majority of programmers, a tactic we call floss refactoring. We propose five principles that characterize successful floss refactoring tools -- principles that can help programmers to choose the most appropriate refactoring tools and also help toolsmiths to design tools that fit the programmer\u27s purpose
The Grace Programming Language Draft Specification Version 0.3.1261
This is a specification of the Grace Programming Language. This specification is notably incomplete, and everything is subject to change
The Importance of Being Eelco
Programming language designers and implementers are taught that:
semantics are more worthwhile than syntax, that programs exist to embody proofs, rather than to get work done, and to value Dijkstra more than Van Wijngaarden.
Eelco Visser believed that, while there is value in the items on the left, there is at least as much value in the items on the right. This short paper explores how Eelco Visser embodied these values, and how he encouraged our work on the Grace programming language, supported that work withio Spoofax, and provided a venue for discussion within the WG2.16 Programming Language Design working group
Infopipes—an Abstraction for Information Flow
Building Object-Oriented Distributed Systems has been facilitated by Remote Message Sending (RMS) systems like Java RMI and implementations of CORBA. However, RMS systems are designed to support request/response interactions. Streaming applications, in contrast, are characterized by high-bandwidth, long-duration communication with stringent performance requirements. Examples of streaming applications include video-on-demand, teleconferencing, on-line education, and environmental observation. These applications transfer huge amounts of data and focus on distributed information flow rather than request/response.
To simplify the task of building distributed streaming applications, we propose a new abstraction for information flow—Infopipes. Using Infopipes, information flow becomes the heart of the system, not an auxiliary mechanism that is hidden away. Systems are built by connecting pre-defined component Infopipes such as sources, sinks, buffers, filters, broadcasting pipes, and multiplexing pipes. An Infopipe has a data interface that pulls information items from the upstream Infopipes, or pushes them into the downstream Infopipes, or both. An Infopipe also has a control interface that dynamically monitors and controls the properties of the Infopipe, and hence the properties of the information flowing through it. We intend to provide property-preserving composition of Infopipes, so that the properties of the whole pipeline can be calculated from the properties of the component Infopipes in it. Quality of Service (QoS)
requirements then can be analyzed and understood system-wide. In Section 2 we discuss related technologies. In Section 3 we describe the concepts of Infopipes. We report our work on an Infopipe prototype in Section 4. Section 5 summarizes the features of Infopipes and lists some open questions
Modules and Dialects as Objects in Grace
Grace is a gradually typed, object-oriented language for use in education; consonant with that use, we have tried to keep Grace as simple and straightforward as possible. Grace needs a module system for several reasons: to teach students about modular program design, to organise large programs, especially its self-hosted implementation, to provide access to resources defined in other languages, and to support different “dialects”—language subsets, or domain specific languages, for particular parts of the curriculum. Grace already has several organising constructs; this paper describes how Grace uses two of them, objects and lexical scope, to provide modules and dialects
How effective are family-based and institutional nutrition interventions in improving children's diet and health? A systematic review
Background: Effective strategies to improve dietary intake in young children are a priority to reduce the high prevalence of chronic non-communicable diseases in adulthood. This study aimed to assess the impact of family-based and school/preschool nutrition programs on the health of children aged 12 or younger, including the sustainability of these impacts and the relevance to socio-economic inequalities.
Methods: A systematic review of literature published from 1980 to December 2014 was undertaken. Randomised controlled trials involving families with children aged up to 12 years in high income countries were included. The primary outcomes were dietary intake and health status. Results were presented in a narrative synthesis due to the heterogeneity of the interventions and outcomes.
Results: The systematic search and assessment identified 39 eligible studies. 82% of these studies were set in school/preschools. Only one school study assessed the impact of involving parents systematically. The family-based programs which provided simple positive dietary advice to parents and regular follow-up reduced fat intake significantly. School and family-based studies, if designed and implemented well, increased F& V intake, particularly fruit. Effective school-based programs have incorporated role-models including peers, teachers and heroic figures, rewards and increased access to healthy foods. School nutrition programs in disadvantaged communities were as effective as programs in other communities.
Conclusions: Family and school nutrition programs can improve dietary intake, however evidence of the long-term sustainability of these impacts is limited. The modest overall impact of even these successful programs suggest complementary nutrition interventions are needed to build a supportive environment for healthy eating generally
- …