Commercial Users of Functional Programming (CUFP) is a yearly workshop that is aimed at the community of software developers who use functional programming in real-world settings. This scribe report covers the talks t...
详细信息
Commercial Users of Functional Programming (CUFP) is a yearly workshop that is aimed at the community of software developers who use functional programming in real-world settings. This scribe report covers the talks that were delivered at the 2011 workshop, which was held in association with ICFP in Tokyo. The goal of the report is to give the reader a sense of what went on, rather than to reproduce the full details of the talks. Videos and slides from all the talks are available online at http://***. [ABSTRACT FROM AUTHOR]
Graphics Processing Units (GPUs) offer potential for very high performance;they are also rapidly evolving. Obsidian is an embedded language (in Haskell) for implementing high performance kernels to be run on GPUs. We ...
详细信息
Graphics Processing Units (GPUs) offer potential for very high performance;they are also rapidly evolving. Obsidian is an embedded language (in Haskell) for implementing high performance kernels to be run on GPUs. We would like to have our cake and eat it too;we want to raise the level of abstraction beyond CUDA code and still give the programmer control over the details relevant to kernel performance. To that end, Obsidian provides array representations that guarantee elimination of intermediate arrays while also using the type system to model the hierarchy of the GPU. Operations are compiled very differently depending on what level of the GPU they target, and as a result, the user is gently constrained to write code that matches the capabilities of the GPU. Thus, we implement not Nested Data Parallelism, but a more limited form that we call Hierarchical Data Parallelism. We walk through case-studies that demonstrate how to use Obsidian for rapid design exploration or auto-tuning, resulting in performance that compares well to the hand-tuned kernels used in Accelerate and NVIDIA Thrust.
The article focuses on the journey of space tourist and billionaire computer programmer Charles Simonyi to the International Space Station on April 9, 2007. Simonyi is Microsoft's former chief architect and will b...
详细信息
The article focuses on the journey of space tourist and billionaire computer programmer Charles Simonyi to the International Space Station on April 9, 2007. Simonyi is Microsoft's former chief architect and will become the fifth space tourist to visit the space. The journey will cost Simonyi $20 million and will give him an opportunity to view the Earth from above and beyond. The author noted that during Simonyi's career with Microsoft Corp. he has confronted some intractable problem in software or life and he has tried to solve it by stepping outside or above it. The various progress in computing are also addressed.
Input validation is essential and critical in Web applications. It is the enforcement of constraints that any input must satisfy before it is accepted to raise external effects. We have discovered some empirical prope...
详细信息
Input validation is essential and critical in Web applications. It is the enforcement of constraints that any input must satisfy before it is accepted to raise external effects. We have discovered some empirical properties for characterizing input validation in Web applications. In this paper, we propose an approach for automated recovery of input validation model from program source code. The model recovered is represented in a variant of control flow graph, called validation flow graph, which shows essential input validation features implemented in programs. Based on the model, we then formulate two coverage criteria for testing input validation. The two criteria can be used to guide the structural testing of input validation in Web applications. We have evaluated the proposed approach through case studies and experiments. (c) 2007 Published by Elsevier Inc.
The state of a concurrent object, intended as some abstraction over the values of the fields of the object, usually determines its coordination behavior. Therefore, state is always in the programmer's mind, even t...
详细信息
The state of a concurrent object, intended as some abstraction over the values of the fields of the object, usually determines its coordination behavior. Therefore, state is always in the programmer's mind, even though implicitly. We suggest a feature for J ava-like languages, which makes the state of a concurrent object explicit and supports the expression of the object's behavior depending on the state it is currently in. Namely, an object will be in one of the states declared in its class. The state determines the presence of fields and methods. State transition statements explicitly change the state of an object, and thus change the availability of fields and methods. When a thread calls a method which is declared in the object's class but absent from its current state, it waits, until the state of the object changes to a state which does contain that method. This directly expresses coordination. We claim that this feature makes it easier to understand and develop concurrent programs, and substantiate our claim through the discussion of some popular examples of concurrent programs written using this *** develop a type and effect system, which guarantees that, during execution of a method invoked on a concurrent object. No attempt will be made to access fields not available in the current state of and (2) No method invoked on a receiver (syntactically) different from may cause the invocation of a method on the latter guarantee helps to enforce the former and prevents a family of accidental violations of the intended coordination protocol.
The causes of a computer program's failure are often a complex mix of interactions between developer-written code and library code. To reduce debugging time and effort, the Signpost system uses a program's beh...
详细信息
The causes of a computer program's failure are often a complex mix of interactions between developer-written code and library code. To reduce debugging time and effort, the Signpost system uses a program's behavior to query a knowledge base and automatically retrieve articles that describe known bugs and approaches.
This paper presents an approach for the automated debugging of reactive and concurrent Java programs, combining model checking and runtime monitoring. Runtime monitoring is used to transform the Java execution traces ...
详细信息
This paper presents an approach for the automated debugging of reactive and concurrent Java programs, combining model checking and runtime monitoring. Runtime monitoring is used to transform the Java execution traces into the input for the model checker, the purpose of which is twofold. First, it checks these execution traces against properties written in linear temporal logic (LTL), which represent desirable or undesirable behaviors. Second, it produces several execution traces for a single Java program by generating test inputs and exploring different schedulings in multithreaded programs. As state explosion is the main drawback to model checking, we propose two abstraction approaches to reduce the memory requirements when storing Java states. We also present the formal framework to clarify which kinds of LTL safety and liveness formulas can be correctly analysed with each abstraction for both finite and infinite program executions. A major advantage of our approach comes from the model checker, which stores the trace of each failed execution, allowing the programmer to replay these executions to locate the bugs. Our current implementation, the tool TJT, uses Spin as the model checker and the Java Debug Interface NI) for runtime monitoring. TJT is presented as an Eclipse plug-in and it has been successfully applied to debug complex public Java programs. (C) 2013 The Authors. Published by Elsevier Inc. All rights reserved.
This article presents a re-engineering case study of the product requirements definition process at Digital Equipment Corporation. Based on cross-functional teams working in direct partnership with customers, the re-e...
详细信息
This article presents a re-engineering case study of the product requirements definition process at Digital Equipment Corporation. Based on cross-functional teams working in direct partnership with customers, the re-engineered process was designed to ensure customer satisfaction and business readiness before a line of code is written, an electronic circuit designed, or a service defined.
Aspect-oriented programming languages such as AspectJ offer new mechanisms for decomposing systems into modules and composing modules into systems. Common ways of using these mechanisms couple apects to complex, chang...
详细信息
Aspect-oriented programming languages such as AspectJ offer new mechanisms for decomposing systems into modules and composing modules into systems. Common ways of using these mechanisms couple apects to complex, changeable implementation details, which can compromise modularity. The crosscut programming interface (XPI) can significantly improve modularity in the design of programs employing AspectJ-style AOP. The use of XPIs doesn't limit the use of existing ACIP mechanisms or require new ones, and the approach appears to generalize to other languages.
In contrast to conventional multi-page Web applications, an Ajax application is often developed as a single-page application in which content and structure are changed at runtime according to user interactions, asynch...
详细信息
In contrast to conventional multi-page Web applications, an Ajax application is often developed as a single-page application in which content and structure are changed at runtime according to user interactions, asynchronous messages received from the server and the current state of the application. These features make Ajax applications quite hard to understand for programmers. The authors propose to support Ajax comprehension through reverse engineering. In this study, the authors propose a reverse-engineering tool, ReAjax, to build GUI-based state models from Ajax applications. ReAjax applies dynamic analysis and uses execution traces to generate a finite state machine of the target application GUI. They show that GUI-based state models obtained semi-automatically are similar to those obtained manually and they can be used for program understanding purposes. Finally, the authors summarise a case study and some usage scenarios in which ReAjax has been applied to five real Ajax applications with the purpose of evaluating its viability and effectiveness in recovering models.
暂无评论