829,487 research outputs found

    A compiler approach to scalable concurrent program design

    Get PDF
    The programmer's most powerful tool for controlling complexity in program design is abstraction. We seek to use abstraction in the design of concurrent programs, so as to separate design decisions concerned with decomposition, communication, synchronization, mapping, granularity, and load balancing. This paper describes programming and compiler techniques intended to facilitate this design strategy. The programming techniques are based on a core programming notation with two important properties: the ability to separate concurrent programming concerns, and extensibility with reusable programmer-defined abstractions. The compiler techniques are based on a simple transformation system together with a set of compilation transformations and portable run-time support. The transformation system allows programmer-defined abstractions to be defined as source-to-source transformations that convert abstractions into the core notation. The same transformation system is used to apply compilation transformations that incrementally transform the core notation toward an abstract concurrent machine. This machine can be implemented on a variety of concurrent architectures using simple run-time support. The transformation, compilation, and run-time system techniques have been implemented and are incorporated in a public-domain program development toolkit. This toolkit operates on a wide variety of networked workstations, multicomputers, and shared-memory multiprocessors. It includes a program transformer, concurrent compiler, syntax checker, debugger, performance analyzer, and execution animator. A variety of substantial applications have been developed using the toolkit, in areas such as climate modeling and fluid dynamics

    Setting the stage – embodied and spatial dimensions in emerging programming practices.

    Get PDF
    In the design of interactive systems, developers sometimes need to engage in various ways of physical performance in order to communicate ideas and to test out properties of the system to be realised. External resources such as sketches, as well as bodily action, often play important parts in such processes, and several methods and tools that explicitly address such aspects of interaction design have recently been developed. This combined with the growing range of pervasive, ubiquitous, and tangible technologies add up to a complex web of physicality within the practice of designing interactive systems. We illustrate this dimension of systems development through three cases which in different ways address the design of systems where embodied performance is important. The first case shows how building a physical sport simulator emphasises a shift in activity between programming and debugging. The second case shows a build-once run-once scenario, where the fine-tuning and control of the run-time activity gets turned into an act of in situ performance by the programmers. The third example illustrates the explorative and experiential nature of programming and debugging systems for specialised and autonomous interaction devices. This multitude in approaches in existing programming settings reveals an expanded perspective of what practices of interaction design consist of, emphasising the interlinking between design, programming, and performance with the system that is being developed

    Optimal Placement of Valves in a Water Distribution Network with CLP(FD)

    Full text link
    This paper presents a new application of logic programming to a real-life problem in hydraulic engineering. The work is developed as a collaboration of computer scientists and hydraulic engineers, and applies Constraint Logic Programming to solve a hard combinatorial problem. This application deals with one aspect of the design of a water distribution network, i.e., the valve isolation system design. We take the formulation of the problem by Giustolisi and Savic (2008) and show how, thanks to constraint propagation, we can get better solutions than the best solution known in the literature for the Apulian distribution network. We believe that the area of the so-called hydroinformatics can benefit from the techniques developed in Constraint Logic Programming and possibly from other areas of logic programming, such as Answer Set Programming.Comment: Best paper award at the 27th International Conference on Logic Programming - ICLP 2011; Theory and Practice of Logic Programming, (ICLP'11) Special Issue, volume 11, issue 4-5, 201

    Analysis and specification tools in relation to the APSE

    Get PDF
    Ada and the Ada Programming Support Environment (APSE) specifically address the phases of the system/software life cycle which follow after the user's problem was translated into system and software development specifications. The waterfall model of the life cycle identifies the analysis and requirements definition phases as preceeding program design and coding. Since Ada is a programming language and the APSE is a programming support environment, they are primarily targeted to support program (code) development, tecting, and maintenance. The use of Ada based or Ada related specification languages (SLs) and program design languages (PDLs) can extend the use of Ada back into the software design phases of the life cycle. Recall that the standardization of the APSE as a programming support environment is only now happening after many years of evolutionary experience with diverse sets of programming support tools. Restricting consideration to one, or even a few chosen specification and design tools, could be a real mistake for an organization or a major project such as the Space Station, which will need to deal with an increasingly complex level of system problems. To require that everything be Ada-like, be implemented in Ada, run directly under the APSE, and fit into a rigid waterfall model of the life cycle would turn a promising support environment into a straight jacket for progress
    • …
    corecore