scholarly journals Evaluating the GO Programming Language with Design Patterns

2021 ◽  
Author(s):  
◽  
Frank Schmager

<p>GO is a new object-oriented programming language developed at Google by Rob Pike, Ken Thompson, and others. GO has the potential to become a major programming language. GO deserves an evaluation.  Design patterns document reoccurring problems and their solutions. The problems presented are programming language independent. Their solutions, however, are dependent on features programming languages provide. In this thesis we use design patterns to evaluate GO. We discuss GO features that help or hinder implementing design patterns, and present a pattern catalogue of all 23 Gang-of-Four design patterns with GO specific solutions. Furthermore, we present GoHotDraw, a GO port of the pattern dense drawing application framework JHotDraw. We discuss design and implementation differences between the two frameworks with regards to GO.</p>

2021 ◽  
Author(s):  
◽  
Frank Schmager

<p>GO is a new object-oriented programming language developed at Google by Rob Pike, Ken Thompson, and others. GO has the potential to become a major programming language. GO deserves an evaluation.  Design patterns document reoccurring problems and their solutions. The problems presented are programming language independent. Their solutions, however, are dependent on features programming languages provide. In this thesis we use design patterns to evaluate GO. We discuss GO features that help or hinder implementing design patterns, and present a pattern catalogue of all 23 Gang-of-Four design patterns with GO specific solutions. Furthermore, we present GoHotDraw, a GO port of the pattern dense drawing application framework JHotDraw. We discuss design and implementation differences between the two frameworks with regards to GO.</p>


1994 ◽  
Vol 4 (2) ◽  
pp. 127-206 ◽  
Author(s):  
Kim B. Bruce

AbstractTo illuminate the fundamental concepts involved in object-oriented programming languages, we describe the design of TOOPL, a paradigmatic, statically-typed, functional, object-oriented programming language which supports classes, objects, methods, hidden instance variables, subtypes and inheritance.It has proven to be quite difficult to design such a language which has a secure type system. A particular problem with statically type checking object-oriented languages is designing typechecking rules which ensure that methods provided in a superclass will continue to be type correct when inherited in a subclass. The type-checking rules for TOOPL have this feature, enabling library suppliers to provide only the interfaces of classes with actual executable code, while still allowing users to safely create subclasses. To achieve greater expressibility while retaining type-safety, we choose to separate the inheritance and subtyping hierarchy in the language.The design of TOOPL has been guided by an analysis of the semantics of the language, which is given in terms of a model of the F-bounded second-order lambda calculus with fixed points at both the element and type level. This semantics supports the language design by providing a means to prove that the type-checking rules are sound, thus guaranteeing that the language is type-safe.While the semantics of our language is rather complex, involving fixed points at both the element and type level, we believe that this reflects the inherent complexity of the basic features of object-oriented programming languages. Particularly complex features include the implicit recursion inherent in the use of the keyword, self, to refer to the current object, and its corresponding type, MyType. The notions of subclass and inheritance introduce the greatest semantic complexities, whereas the notion of subtype is more straightforward to deal with. Our semantic investigations lead us to recommend caution in the use of inheritance, since small changes to method definitions in subclasses can result in major changes to the meanings of the other methods of the class.


Author(s):  
Prof. Shilpa Shitole ◽  
Rohit Maurya ◽  
Tanaya Pawar ◽  
Siya Randhe

Industries evolve. Our thinking changes as well. Programming languages need evolvement too. “The thing is that ideas for new features with its ways of thinking will be flourished, and so perfectly designed those languages won’t be perfect anymore.” Where did logical programming go? “Notice that you can use this paradigm and just provide a set of constraints for a website and expect the website to develop automatically based on them.” It is possible to implement that. Likewise, new paradigms will sooner or later be born. It can’t be that we’ve explored everything. “Technologies are born likewise the old way of thinking, which represents by the previous programming languages might not be adequate. This project is an open-source modern object-oriented programming language that aims to bridge the gap between modern expressive programming paradigms like python and strictly typed rigid languages like Java and C#. Our goal is to provide the usefulness of an object-oriented programming language while holding the simplicity of an expressive programming language without having to sacrifice performance.


1990 ◽  
Vol 19 (302) ◽  
Author(s):  
Elmer Sandvad

Object-orientation is discussed in relation to the traditional division of system development activities: analysis, design and implementation. Object-orientation integrates analysis, design and implementation. This statement is illustrated by introducing an object-oriented graphical notation for analysis as well as design and by showing how this notation can be mapped into the object-oriented programming language BETA. This mapping can be automated. It is shown how the programming environment, the Mjølner BETA System can support integration of the object-oriented notation and BETA, and thereby providing an object-oriented CASE tool that, at least partially, closes the CASE gap between design and implementation.


Author(s):  
Alex Blewitt

Patterns are often described in terms of concrete examples in specific programming languages in catalogues (Gamma, Helm, Johnson, & Vlissides, 1995). The description is worded such that a practitioner in an object-oriented programming language will be able to understand the key points of the pattern and translate it into a programming language of their choice.This abstract description of patterns is well suited for intelligent readers, but less suited for automated tasks that must process pattern information. Furthermore, the way in which the pattern information is encoded is often strongly influenced by the type of processing that is being performed on the pattern. In this chapter, the Spine language will be presented as a way of representing Design patterns in a suitable manner for performing verification of a pattern’s implementation in a particular source language. It is used by a proof engine


Sign in / Sign up

Export Citation Format

Share Document