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, 2016
    Co-Authors: Nawrin Sultana, Justin Middleton, Jeffrey Overbey, Munawar Hafiz
    Abstract:

    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
    2010
    Co-Authors: Dave Clarke, Tobias Wrigstad, Johan Östlund, Einar Broch Johnsen
    Abstract:

    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, 2008
    Co-Authors: Dave Clarke, Tobias Wrigstad, Johan Östlund, Einar Broch Johnsen
    Abstract:

    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, 2008
    Co-Authors: Alexandr A. Savinov
    Abstract:

    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, 2008
    Co-Authors: Alexandr A. Savinov
    Abstract:

    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, 2008
    Co-Authors: Alexandr A. Savinov
    Abstract:

    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.

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, 2016
    Co-Authors: Nawrin Sultana, Justin Middleton, Jeffrey Overbey, Munawar Hafiz
    Abstract:

    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.