A fully abstract compiler prevents security features of the source language from being bypassed by an attacker operating at the target language level. Unfortunately, developing fully abstract compilers is very complex...
详细信息
A fully abstract compiler prevents security features of the source language from being bypassed by an attacker operating at the target language level. Unfortunately, developing fully abstract compilers is very complex, and it is even more so when the target language is an untyped assembly language. To provide a fully abstract compiler that targets untyped assembly, it has been suggested to extend the target language with a protected module architecture-an assembly-level isolation mechanism which can be found in next-generation processors. This article provides a fully abstract compilation scheme whose source language is an object-oriented, high-level language and whose target language is such an extended assembly language. The source language enjoys features such as dynamic memory allocation and exceptions. Secure compilation of first-order method references, cross-package inheritance, and inner classes is also presented. Moreover, this article contains the formal proof of full abstraction of the compilation scheme. Measurements of the overhead introduced by the compilation scheme indicate that it is negligible.
A runtime monitor enforcing a constraint on sequences of method calls on an object involves the implementation of an independent piece of code called a monitor. This monitor intercepts relevant events in the program a...
详细信息
A runtime monitor enforcing a constraint on sequences of method calls on an object involves the implementation of an independent piece of code called a monitor. This monitor intercepts relevant events in the program and must keep track of the state of the sequence by updating an appropriate state machine. The present paper stems from the observation that an object's member fields must already contain an encoding of that state machine and that a monitor essentially duplicates operations that the object performs internally. Rather than maintaining a state machine in parallel, the paper puts forward the concept of "piggyback" runtime monitoring, where the monitor relies as much as possible on the object's own state variables to perform its task. Experiments on real-world benchmarks show that this approach greatly simplifies the monitoring process and drastically reduces the incurred runtime overhead compared to classical solutions.
Aside from numerical algorithms and problem setup, large-scale physics simulations on distributed-memory supercomputers require more basic utilitarian functionality, such as physical units and constants;display to the...
详细信息
Aside from numerical algorithms and problem setup, large-scale physics simulations on distributed-memory supercomputers require more basic utilitarian functionality, such as physical units and constants;display to the screen or standard output device;message passing;I/O to disk;and runtime parameter management and usage statistics. Here we describe and make available Fortran 2003 classes furnishing extensible object-oriented implementations of this sort of rudimentary functionality, along with individual 'unit test' programs and larger example problems demonstrating their use. These classes compose the Basics division of our developing astrophysics simulation code GsNASIS (General Astrophysical Simulation System), but their fundamental nature makes them useful for physics simulations in many fields. Program summary Program title: GENASIS Catalogue identifier: AEXE_v1_0 Program summary URL: http://***/summaries/AEXE_v1_*** Program obtainable from: CPC Program Library, Queen's University, Belfast, N. Ireland Licensing provisions: Creative Commons Attribution - Non Commercial - ShareALike 4.0 International No. of lines in distributed program, including test data, etc.: 32863 No. of bytes in distributed program, including test data, etc.: 148873 Distribution format: *** programming language: Fortran 2003 (tested with gfortran 4.9.2, Intel Fortran 15, NAG Fortan 5.3.1, Cray Compiler 8.2.5). Computer: PC, cluster, supercomputer. Operating system: Linux, Unix. RAM: For example problems, depends on user-specified problem size and number of processes. The fluid dynamics problems with 128(3) cells on 8 processes use about 300 MB per process. The molecular dynamics problems with 6912 particles on 12 processes use about 20 MB per process. Classification: 4.14, 6.5, 20. External routines: MPI [1] and Silo [2] Nature of problem: By way of illustrating GENASIS Basics functionality, solve example fluid dynamics and molecular dynamics problems. Solution method: Fo
Multi-methods are functions whose calls at runtime are resolved depending on the dynamic types of more than one argument. They are useful for common programming problems. However, while many languages provide differen...
详细信息
Multi-methods are functions whose calls at runtime are resolved depending on the dynamic types of more than one argument. They are useful for common programming problems. However, while many languages provide different mechanisms to implement them in one way or another, there is still, to the best of our knowledge, no library or language feature that handles them in a general and flexible way. In this paper, we present the EVL (Extended Virtual function Library) framework which provides a set of classes in C++ aiming at solving this problem. The EVL framework provides a generalization of virtual function dispatch through the number of dimensions and the selection of the function to invoke using a so-called Function Comparison Operator. Our library provides both symmetric and asymmetric dispatch algorithms that can be refined by the programmer to include criteria other than class inheritance. For instance, the EVL framework provides multi-methods with predicate dispatch by defining a dedicated FCO based not only on the dynamic types of the arguments but also on their values. This flexibility greatly helps to resolve ambiguities without having to define new functions. Our multi-methods also unify dispatch tables and caching by introducing cache strategies for which the implementation is a balance between memory and speed. To define multi-methods in C++, we implement a non-intrusive reflection library providing fast dynamic casting and supporting dynamic class loading. Our multi-methods are policy-based class templates that support virtual but not repeated inheritance. They check the type compatibility of functions at compile-time, preserve type-safety and resolve function calls at runtime by invoking the cache or updating it by computing the selected function for the requested tuple of types. By default, our multi-methods handle dispatch errors at runtime by throwing exceptions but an error-code strategy can be set up by defining a dedicated policy class. Performance
SWAT(Soil and Water Assessment Tool)and APEX(Agricultural Policy/Environmental eXtender)are respectively large and small watershed simulation models derived from EPIC(Environmental Policy Integrated Climate),a field-s...
详细信息
SWAT(Soil and Water Assessment Tool)and APEX(Agricultural Policy/Environmental eXtender)are respectively large and small watershed simulation models derived from EPIC(Environmental Policy Integrated Climate),a field-scale agroecology simulation *** three models are coded in Fortran and have evolved over several *** are widely used to analyze anthropogenic influences on soil and water quality and *** of the original Fortran code has been retained even though Fortran has been through several cycles of *** now provides functionality originally restricted to languages like C,designed to communicate directly with the operating system and *** can now use an object-oriented style of programming in Fortran,including inheritance,run-time polymorphism and *** order to enhance their utility in research and policy-making,the models are undergoing a major revision to use some of the new Fortran *** these new programming paradigms the developers of SWAT,APEX,and EPIC are working to make communication between the two models *** paper describes the ongoing revision of these models that will make them easier to use,maintain,modify and *** is intended that they will converge as they continue to evolution,while maintaining their distinctive features,capabilities and identities.
Inverse modeling is a powerful tool for extracting information about the subsurface from geophysical data. Geophysical inverse problems are inherently multidisciplinary, requiring elements from the relevant physics, n...
详细信息
Inverse modeling is a powerful tool for extracting information about the subsurface from geophysical data. Geophysical inverse problems are inherently multidisciplinary, requiring elements from the relevant physics, numerical simulation, and optimization, as well as knowledge of the geologic setting, and a comprehension of the interplay between all of these elements. The development and advancement of inversion methodologies can be enabled by a framework that supports experimentation, is flexible and extensible, and allows the knowledge generated to be captured and shared. The goal of this paper is to propose a framework that supports many different types of geophysical forward simulations and deterministic inverse problems. Additionally, we provide an open source implementation of this framework in Python called SIMPEG (Simulation and Parameter Estimation in Geophysics, http://***). Included in SIMPEG are staggered grid, mimetic finite volume discretizations on a number of structured and semi-structured meshes, convex optimization programs, inversion routines, model parameterizations, useful utility codes, and interfaces to standard numerical solver packages. The framework and implementation are modular, allowing the user to explore, experiment with, and iterate over a variety of approaches to the inverse problem. SIMPEG provides an extensible, documented, and well-tested framework for inverting many types of geophysical data and thereby helping to answer questions in geoscience applications. Throughout the paper we use a generic direct current resistivity problem to illustrate the framework and functionality of SIMPEG. (C) 2015 The Authors. Published by Elsevier Ltd.
In this paper we present a newly developed online learning platform which introduces gamification elements into software engineering education. Starting from assumptions based on cognitive load theory we present the d...
详细信息
ISBN:
(纸本)9781467386340
In this paper we present a newly developed online learning platform which introduces gamification elements into software engineering education. Starting from assumptions based on cognitive load theory we present the design of an online gamification-based training system to be used in software engineering contexts. Students can voluntarily solve challenges for which they may earn credits. These small problems serve as assessments;the approach follows the assessment for learning paradigm in that assessments provide formative feedback to enhance the learning experience. The combination of formative assessment and gamification is new to software engineering education. We describe system design as well as the different types of challenges in detail. We also provide several examples for actual challenges used in an object-oriented programming introduction using Java.
Control software and platforms for single or cooperative robots are highly complicated because they coordinate and administer the interaction of a variety of distributed and heterogeneous hardware and software compone...
详细信息
ISBN:
(纸本)9781509007943
Control software and platforms for single or cooperative robots are highly complicated because they coordinate and administer the interaction of a variety of distributed and heterogeneous hardware and software components in a dynamic world. While most of such systems built on some uniform middleware or control system for all distributed nodes which come with restrictions in flexibility on several levels, we aim at a more flexible and open architecture of autonomous components in the style of IoT. In this paper, we introduce a platform independent robotics framework based on an IoT technology and protocols. We compare our architecture with other recent approaches and according to fundamental criteria, we discuss advantages and drawbacks.
As software evolves, data types have to be extended, possibly with new data variants or new operations. object-oriented design is well-known to support data extensions well. In fact, most popular books showcase data e...
详细信息
As software evolves, data types have to be extended, possibly with new data variants or new operations. object-oriented design is well-known to support data extensions well. In fact, most popular books showcase data extensions to illustrate how objects adequately support software evolution. Conversely, operation extensions are typically better supported by a functional design. A large body of programming language research has been devoted to the challenge of properly supporting both kinds of extensions. While this challenge is well-known from a language design standpoint, it has not been studied empirically. We perform such a study on a large sample of Smalltalk projects (over half a billion lines of code) and their evolution over more than 130,000 committed changes. Our study of extensions during software evolution finds that extensions are indeed prevalent evolution tasks, and that both kinds of extensions are equally common in object-oriented software. We also discuss findings about: the evolution of the kinds of extensions over time;the viability of the Visitor pattern as an object-oriented solution to operation extensions;the change-proneness of extensions;and the prevalence of extensions by third parties. This study suggests that object-oriented design alone is not sufficient, and that practical support for both kinds of program decomposition approaches are in fact needed, either by the programming language or by the development environment.
The objective of the present manuscript is to describe a new architecture of the nonlinear multiphysics Finite element code in objectoriented Fortran environment hereafter referred to as FOOF. The salient features of...
详细信息
The objective of the present manuscript is to describe a new architecture of the nonlinear multiphysics Finite element code in objectoriented Fortran environment hereafter referred to as FOOF. The salient features of FOOF are reusability, extensibility, and performance. Computational efficiency stems from the intrinsic optimization of numerical computing intrinsic to Fortran, while reusability and extensibility is inherited from the support of object-oriented programming style in Fortran 2003 and its later versions. The shortcomings of the objectoriented style in Fortran 2003 (in comparison to C+ +) are alleviated by introducing the class hierarchy and by utilizing a multilevel programming style. (C) 2015 Elsevier B.V. All rights reserved.
暂无评论