Inheritance provides object-oriented programming with much of its great reusability power. When inheritance is single, its specifications are simple and everybody roughly agrees on them. In contrast, multiple inherita...
详细信息
Inheritance provides object-oriented programming with much of its great reusability power. When inheritance is single, its specifications are simple and everybody roughly agrees on them. In contrast, multiple inheritance yields ambiguities that have prompted long-standing debates, and no two languages agree on its specifications. In this paper, we present a semantics of multiple inheritance based on metamodeling. A metamodel is proposed which distinguishes the "identity" of properties from their "values" or "implementations". It yields a clear separation between syntactic and semantic conflicts. The former can be solved in any language at the expense of a common syntactic construct, namely full name qualification. However, semantic conflicts require a programmer's decision, and the programming language must help the programmer to some extent. This paper surveys the approach based on linearizations, which has been studied in depth, and proposes some extensions. As it turns out that only static typing takes full advantage of the metamodel, the interaction between multiple inheritance and static typing is also considered, especially in the context of virtual types. The solutions proposed by the various languages with multiple inheritance are compared with the metamodel results. Throughout the paper, difficulties encountered under the open-world assumption are stressed. (C) 2010 Elsevier B.V. All rights reserved.
This manuscript focuses the attention on the possibility that some basic programs for solving numerical problems have to be revised. The fundamental case of linear system solution and related concepts is proposed as e...
详细信息
This manuscript focuses the attention on the possibility that some basic programs for solving numerical problems have to be revised. The fundamental case of linear system solution and related concepts is proposed as example of the different ways to approach a problem using object-oriented programming and procedural approaches. The different points of view shows that the traditional approach adopted to deem the conditioning of a system as well as all existing programs to solve linear systems need to be revised. A brief discussion deals with the possibility of parallelizing programs for personal computers and with interaction of parallel computing and object-oriented programming. (c) 2010 Published by Elsevier Ltd.
object-oriented programming is a suitable technique for representation of concepts and so is convenient for description of (computer) simulation models, as the description can be near to that of simulated systems. Dyn...
详细信息
object-oriented programming is a suitable technique for representation of concepts and so is convenient for description of (computer) simulation models, as the description can be near to that of simulated systems. Dynamics of simulated systems is often subject to complex control rules with their support being one or more elements belonging to the same system. The description of behaviour of such elements needs often object-oriented representation of concepts that are applied in the control. These concepts belong to a 'world viewing' that is ontologically quite different from that used in the description of the simulated system. An extreme case is a simulation of a system that contains a controlling element that itself applies simulation for anticipating future consequences of the element decision. This paper is dedicated to application of languages that are not only objectoriented but also process oriented and block oriented. Some existing and prepared applications are presented too.
Finding an appropriate turbulence model for a given flow case usually calls for extensive experimentation with both models and numerical solution methods. This work presents the design and implementation of a flexible...
详细信息
Finding an appropriate turbulence model for a given flow case usually calls for extensive experimentation with both models and numerical solution methods. This work presents the design and implementation of a flexible, programmable software framework for assisting with numerical experiments in computational turbulence. The framework targets Reynolds-averaged Navier-Stokes models, discretized by finite element methods. The novel implementation makes use of Python and the FEniCS package, the combination of which leads to compact and reusable code, where model- and solver-specific code resemble closely the mathematical formulation of equations and algorithms. The presented ideas and programming techniques are also applicable to other fields that involve systems of nonlinear partial differential equations. We demonstrate the framework in two applications and investigate the impact of various linearizations on the convergence properties of nonlinear solvers for a Reynolds-averaged Navier-Stokes model. (C) 2011 Elsevier Ltd. All rights reserved.
Late binding and subtyping create run-time overhead for object-oriented languages. Dynamic typing and multiple inheritance create even more overhead. Static typing and single inheritance lead to two major invariants, ...
详细信息
Late binding and subtyping create run-time overhead for object-oriented languages. Dynamic typing and multiple inheritance create even more overhead. Static typing and single inheritance lead to two major invariants, of reference and position, that make the implementation as efficient as possible. Coloring is a technique that preserves these invariants for dynamic typing or multiple inheritance at minimal spatial cost. Coloring has been independently proposed for method invocation under the name of selector coloring, for subtype tests under the name of pack encoding, and for attribute access and object layout. This paper reviews a number of uses of coloring for optimizing object-oriented programming, generalizes them, and specifies several variations, such as bidirectional and n-directional coloring. Coloring is NP-hard, hence compilers that use it depend on heuristics. The paper describes two families of heuristics and presents some experimental results which indicate that coloring is both efficient and tractable and that bidirectional coloring gives the best results. Copyright (C) 2010 John Wiley & Sons, Ltd.
Software cost estimation is important for budgeting, risk analysis, project planning and software improvement analysis. There are numerous estimation techniques. During the past three decades there had been some signi...
详细信息
Software cost estimation is important for budgeting, risk analysis, project planning and software improvement analysis. There are numerous estimation techniques. During the past three decades there had been some significant developments in effort estimation, size of software and cost estimation methodology. Current software cost estimation models have been experiencing increasing difficulties in estimating the costs of software, as new software development methodologies and technologies are emerging very rapidly. Most of the software cost models generally rely on such inputs as estimates of lines of source code, delivered sets of instructions, function points and processing complexity or experience levels to produce cost estimates. These models generally produce inaccurate results when used to estimate the cost of software development in current development environments such as those that use component-based software development environments like visual languages. The authors present in this study a new technique for software cost estimation that can be used for software projects developed using component-based fourth-generation-language environment. The model was calibrated using the empirical data collected from 19 software systems. Efficiency of the model was also compared with an existing model used for such environment. The proposed model achieved better predictive accuracy.
Mashups have relatively simple, component-based development paradigms, yet few end users develop their own applications. To help turn end users into developers and innovators, the authors present two mashup platforms ...
详细信息
Mashups have relatively simple, component-based development paradigms, yet few end users develop their own applications. To help turn end users into developers and innovators, the authors present two mashup platforms for lightweight Web development practices and discuss open challenges.
Since Java is one of the most popular languages in the academic and research community a lot of robust and effective scientific libraries have been developed. However, the utilisation of these libraries is very awkwar...
详细信息
Since Java is one of the most popular languages in the academic and research community a lot of robust and effective scientific libraries have been developed. However, the utilisation of these libraries is very awkward especially for the average scientist that does not expertise in software development. The study presents the framework that has constructed for the utilisation of Java scientific libraries within the ScalaLab environment. The flexibility and extensibility of the Scala language allows the implementation of simple, coherent and efficient Matlab-like interfaces to those libraries. Moreover, other specialised Java libraries can be exploited much more easily and productively from within ScalaLab with the toolbox import mechanism that this work describes. Additionally, the system offers facilities such as on-line help, code completion, graphical control of the class-path and a specialised text editor with code colouring facilities that greatly facilitate the development of scientific software.
Bounded existential types are a powerful language feature for modeling partial data abstraction and information hiding. However, existentials do not mingle well with subtyping as found in current object-oriented langu...
详细信息
Bounded existential types are a powerful language feature for modeling partial data abstraction and information hiding. However, existentials do not mingle well with subtyping as found in current object-oriented languages: the subtyping relation is already undecidable for very restrictive settings. This paper considers two subtyping relations defined by extracting the features specific to existentials from current language proposals (JavaGI, WildFJ, and Scala) and shows that both subtyping relations are undecidable. One of the two subtyping relations remains undecidable even if bounded existential types are restricted to the equivalent of interface types. With the goal of regaining decidable type checking for the JavaGI language, the paper also discusses various restrictions including the elimination of bounded existentials from the language as well as possible amendments to regain some of their features.
Developing parallel applications is notoriously difficult, but it\'s even more complex for desktop applications. The added difficulties primarily come from their interactive nature, where users largely perceive th...
详细信息
Developing parallel applications is notoriously difficult, but it\'s even more complex for desktop applications. The added difficulties primarily come from their interactive nature, where users largely perceive their performance. Desktop applications are typically developed with graphical toolkits that in turn have limitations in regards to multithreading. This article explores desktop applications\' structure, the threading model\'s limitations, and the parallelization of a desktop application using object-oriented and GUI-aware concepts.
暂无评论