scholarly journals Graceful Language Extensions and Interfaces

2021 ◽  
Author(s):  
◽  
Michael Homer

<p>Grace is a programming language under development aimed at education. Grace is object-oriented, imperative, and block-structured, and intended for use in first- and second-year object-oriented programming courses. We present a number of language features we have designed for Grace and implemented in our self-hosted compiler. We describe the design of a pattern-matching system with object-oriented structure and minimal extension to the language. We give a design for an object-based module system, which we use to build dialects, a means of extending and restricting the language available to the programmer, and of implementing domain-specific languages. We show a visual programming interface that melds visual editing (à la Scratch) with textual editing, and that uses our dialect system, and we give the results of a user experiment we performed to evaluate the usability of our interface.</p>

2021 ◽  
Author(s):  
◽  
Michael Homer

<p>Grace is a programming language under development aimed at education. Grace is object-oriented, imperative, and block-structured, and intended for use in first- and second-year object-oriented programming courses. We present a number of language features we have designed for Grace and implemented in our self-hosted compiler. We describe the design of a pattern-matching system with object-oriented structure and minimal extension to the language. We give a design for an object-based module system, which we use to build dialects, a means of extending and restricting the language available to the programmer, and of implementing domain-specific languages. We show a visual programming interface that melds visual editing (à la Scratch) with textual editing, and that uses our dialect system, and we give the results of a user experiment we performed to evaluate the usability of our interface.</p>


Author(s):  
JAE HUN CHOI ◽  
JAE DONG YANG ◽  
DONG GILL LEE

In this paper, we propose a new approach for managing domain specific thesauri, where object-oriented paradigm is applied to thesaurus construction and query-based browsing. The approach provides an object-oriented mechanism to assist domain experts in constructing thesauri; it determines a considerable part of relationship degrees between terms by inheritance and supplies the domain expert with information available from other parts of the thesaurus being constructed or already constructed. In addition to that, it enables domain experts to incrementally construct the thesaurus, since the automatically determined relationship degrees can be refined whenever a more sophisticated thesaurus is needed. It may minimize domain experts' burden caused by the exhaustive specification of individual relationship. This approach also provides a query-based browsing facility, which enables users to find desired thesaurus terms without tedious browsing in the thesaurus. A browsing query can be formulated with terms rather ambiguous, yet capable of deriving the desired terms. This browsing query is useful especially when users want precise results. In other words, it is useful when they want to use only thesaurus terms carefully selected in reformulating Boolean queries. To demonstrate the feasibility of our approach, we fully implemented an object-based thesaurus system, which supports the semiautomatic thesaurus construction and the query-based browsing facility.


2021 ◽  
Author(s):  
◽  
Alex Potanin

<p>Modern object-oriented programming languages support many techniques that simplify the work of a programmer. Among them is generic types: the ability to create generic descriptions of algorithms and object structures that will be automatically specialised by supplying the type information when they are used. At the same time, object-oriented technologies still suffer from aliasing: the case of many objects in a program's memory referring to the same object via different references. Ownership types enforce encapsulation in object-oriented programs by ensuring that objects cannot be referred to from the outside of the object(s) that own them. Existing ownership programming languages either do not support generic types or attempt to add them on top of ownership restrictions. The goal of this work is to bring object ownership into mainstream object-oriented programming languages. This thesis presents Generic Ownership which provides perobject ownership on top of a generic imperative language. Surprisingly, the resulting system not only provides ownership guarantees comparable to the established systems, but also requires few additional language mechanisms to achieve them due to full reuse of generic types. In this thesis I formalise the core of Generic Ownership, highlighting that the restriction of this calls, owner preservation over subtyping, and appropriate owner nesting are the only necessary requirements for ownership. I describe two formalisms: (1) a simple formalism, capturing confinement in a functional setting, and (2) a complete formalism, providing a way for Generic Ownership to support both deep and shallow variations of ownership types. I support the formal work by describing how the Ownership Generic Java (OGJ) language is implemented as a minimal extension to Java 5. OGJ is the first publicly available language implementation that supports ownership, confinement, and generic types at the same time. I demonstrate OGJ in practice: show how to use OGJ to write programs and provide insights into the implementations of Generic Ownership.</p>


Sign in / Sign up

Export Citation Format

Share Document