A Language for Generic Programming in the Large
Jeremy G. Siek, Andrew Lumsdaine

TL;DR
The paper introduces G, a new programming language designed for large-scale generic programming, featuring concepts for constraints, modular type checking, and separate compilation, demonstrated through porting C++ libraries.
Contribution
G provides a novel concept-based approach for organizing constraints in generic programming, supporting modularity and independent compilation, unlike existing languages.
Findings
Successfully ported C++ libraries to G demonstrating expressiveness.
G's concept mechanism improves modularity and type safety.
Supports large-scale, reusable software development.
Abstract
Generic programming is an effective methodology for developing reusable software libraries. Many programming languages provide generics and have features for describing interfaces, but none completely support the idioms used in generic programming. To address this need we developed the language G. The central feature of G is the concept, a mechanism for organizing constraints on generics that is inspired by the needs of modern C++ libraries. G provides modular type checking and separate compilation (even of generics). These characteristics support modular software development, especially the smooth integration of independently developed components. In this article we present the rationale for the design of G and demonstrate the expressiveness of G with two case studies: porting the Standard Template Library and the Boost Graph Library from C++ to G. The design of G shares much in common…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Parallel Computing and Optimization Techniques · Distributed systems and fault tolerance
