• Corpus ID: 45286521

Turing Scholars honors thesis Parametric Polymorphism in the Go Programming Language

  title={Turing Scholars honors thesis Parametric Polymorphism in the Go Programming Language},
  author={Matthew Allen},
An extension to the Go language was developed that introduces parametric polymorphism in the form of generic functions. The changes to the language and the compiler needed to implement the type system extensions are discussed, and alternative implementation strategies are described. The resulting implementation of generic functions is backwards compatible with the existing Go standard and is consistent with the design goals of the language. The overhead of the current prototype implementation… 

Figures and Tables from this paper



A Theory of Type Polymorphism in Programming

  • R. Milner
  • Computer Science
    J. Comput. Syst. Sci.
  • 1978

Design and implementation of generics for the .NET Common language runtime

This paper extends the Microsoft.NET Common Language Runtime with direct support for parametric polymorphism (also known as generics), describing the design through examples written in an extended version of the C# programming language, and explaining aspects of implementation by reference to a prototype extension to the runtime.

Basic Polymorphic Typechecking

LLVM: a compilation framework for lifelong program analysis & transformation

The design of the LLVM representation and compiler framework is evaluated in three ways: the size and effectiveness of the representation, including the type information it provides; compiler performance for several interprocedural problems; and illustrative examples of the benefits LLVM provides for several challenging compiler problems.

Generics in Java and C++: a comparative model

This paper tries to analyze the implementation of the Java Generics and its comparison with the templates of C++, finding that C++ templates go a long way in enriching the multi-paradigm design philosophy.

Go at Google

  • R. Pike
  • Computer Science
    SPLASH '12
  • 2012
Besides its better-known aspects such as built-in concurrency and garbage collection, Go's design considerations include rigorous dependency management, the adaptability of software architecture as systems grow, and robustness across the boundaries between components.

Efficiently computing static single assignment form and the control dependence graph

New algorithms that efficiently compute static single assignment form and control dependence graph data structures for arbitrary control flow graphs are presented and it is given that all of these data structures are usually linear in the size of the original program.