The Experts below are selected from a list of 42 Experts worldwide ranked by ideXlab platform
Munawar Hafiz - One of the best experts on this subject based on the ideXlab platform.
-
ICSE - Understanding and fixing multiple language interoperability issues: the C/Fortran case
Proceedings of the 38th International Conference on Software Engineering, 2016Co-Authors: Nawrin Sultana, Justin Middleton, Jeffrey Overbey, Munawar HafizAbstract:We performed an empirical study to understand interoperability issues in C and Fortran programs. C/Fortran interoperability is very common and is representative of general language interoperability issues, such as how interfaces between languages are defined and how data types are shared. Fortran presents an additional challenge, since several ad hoc approaches to C/Fortran interoperability were in use long before a standard mechanism was defined. We explored 20 applications, automatically analyzing over 12 million lines of code. We found that only 3% of interoperability instances follow the ISO standard to describe interfaces; the rest follow a combination of compiler-dependent ad hoc approaches. Several parameters in cross-language functions did not have standards-compliant interoperable types, and about one-fourth of the parameters that were Passed by Reference could be Passed by value. We propose that automated refactoring tools may provide a viable way to migrate programs to use the new interoperability features. We present two refactorings to transform code for this purpose and one refactoring to evolve code thereafter; all of these are instances of multiple language refactorings.
Einar Broch Johnsen - One of the best experts on this subject based on the ideXlab platform.
-
Minimal Ownership for Active Objects
2010Co-Authors: Dave Clarke, Tobias Wrigstad, Johan Östlund, Einar Broch JohnsenAbstract:Active objects offer a structured approach to concurrency, encapsulating both unshared state and a thread of control. For efficient data transfer, data should be Passed by Reference whenever possible, but this introduces aliasing and undermines the validity of the active objects. This paper proposes a minimal variant of ownership types that preserves the required race freedom invariant yet enables data transfer by Reference between active objects (that is, without copying) in many cases, and a cheap clone operation where copying is necessary. Our approach is general and should be adaptable to several existing active object systems.
-
APLAS - Minimal Ownership for Active Objects
Programming Languages and Systems, 2008Co-Authors: Dave Clarke, Tobias Wrigstad, Johan Östlund, Einar Broch JohnsenAbstract:Active objects offer a structured approach to concurrency, encapsulating both unshared state and a thread of control. For efficient data transfer, data should be Passed by Reference whenever possible, but this introduces aliasing and undermines the validity of the active objects. This paper proposes a minimal variant of ownership types that preserves the required race freedom invariant yet enables data transfer by Reference between active objects (that is, without copying) in many cases, and a cheap clone operation where copying is necessary. Our approach is general and should be adaptable to several existing active object systems.
Alexandr A. Savinov - One of the best experts on this subject based on the ideXlab platform.
-
Concepts and their Use for Modelling Objects and References in Programming Languages
arXiv: Programming Languages, 2008Co-Authors: Alexandr A. SavinovAbstract:In the paper a new programming construct, called concept, is introduced. Concept is pair of two classes: a Reference class and an object class. Instances of the Reference classes are Passed-by-value and are intended to represent objects. Instances of the object class are Passed-by-Reference. An approach to programming where concepts are used instead of classes is called concept-oriented programming (CoP). In CoP objects are represented and accessed indirectly by means of References. The structure of concepts describes a hierarchical space with a virtual address system. The paper describes this new approach to programming including such mechanisms as Reference resolution, complex References, method interception, dual methods, life-cycle management inheritance and polymorphism.
-
Indirect Object Representation and Access by Means of Concepts
arXiv: Programming Languages, 2008Co-Authors: Alexandr A. SavinovAbstract:The paper describes a mechanism for indirect object representation and access (ORA) in programming languages. The mechanism is based on using a new programming construct which is referred to as concept. Concept consists of one object class and one Reference class both having their fields and methods. The object class is the conventional class as defined in OOP with instances Passed by Reference. Instances of the Reference class are Passed by value and are intended to represent objects. The Reference classes are used to describe how objects have to be represented and accessed by providing custom format for their identifiers and custom access procedures. Such an approach to programming where concepts are used instead of classes is referred to as concept-oriented programming. It generalizes OOP and its main advantage is that it allows the programmer to describe not only the functionality of target objects but also intermediate functions which are executed behind the scenes as an object is being accessed.
-
Concepts and Concept-Oriented Programming
The Journal of Object Technology, 2008Co-Authors: Alexandr A. SavinovAbstract:In the paper we introduce a new programming language construct, called concept, which is defined as a pair of two classes: one Reference class and one object class. Instances of the Reference class are Passed-by-value and are intended to indirectly represent objects. Instances of the object class are Passed-by-Reference. Each concept has a parent concept specified by means of the concept inclusion relation. This approach where concepts are used instead of classes is referred to as concept-oriented programming (CoP). CoP is intended to generalize object-oriented programming (OOP). Particularly, concepts generalize conventional classes and concept inclusion generalizes class inheritance in OOP. This approach allows the programmer to describe not only objects but also References which are made integral and completely legal part of the program. Program objects at run-time exist within a virtual hierarchal address space and CoP provides means to effectively design such a space for each concrete problem domain.
William R. Salzman - One of the best experts on this subject based on the ideXlab platform.
-
Passing dynamic objects by Reference in Fortran 90: application to time-dependent quantum chemistry
Computers & Chemistry, 1999Co-Authors: Vadim Alexandrov, Igor Filippov, Ludwik Adamowicz, William R. SalzmanAbstract:Abstract A new effective strategy of passing large variable size objects to subroutines and back in fortran 90 is described. The objects are Passed by Reference utilizing user-defined pointer type variables declared in a shared module. The efficiency of the developed approach is demonstrated by applying it to program the analytic solution for action of the powers of Hamiltonian on the Hermite polynomial type basis function.
Nawrin Sultana - One of the best experts on this subject based on the ideXlab platform.
-
ICSE - Understanding and fixing multiple language interoperability issues: the C/Fortran case
Proceedings of the 38th International Conference on Software Engineering, 2016Co-Authors: Nawrin Sultana, Justin Middleton, Jeffrey Overbey, Munawar HafizAbstract:We performed an empirical study to understand interoperability issues in C and Fortran programs. C/Fortran interoperability is very common and is representative of general language interoperability issues, such as how interfaces between languages are defined and how data types are shared. Fortran presents an additional challenge, since several ad hoc approaches to C/Fortran interoperability were in use long before a standard mechanism was defined. We explored 20 applications, automatically analyzing over 12 million lines of code. We found that only 3% of interoperability instances follow the ISO standard to describe interfaces; the rest follow a combination of compiler-dependent ad hoc approaches. Several parameters in cross-language functions did not have standards-compliant interoperable types, and about one-fourth of the parameters that were Passed by Reference could be Passed by value. We propose that automated refactoring tools may provide a viable way to migrate programs to use the new interoperability features. We present two refactorings to transform code for this purpose and one refactoring to evolve code thereafter; all of these are instances of multiple language refactorings.