What is Generic Programming?
Generic Programming is the art of writing highly reusable code that is also highly efficient.
Clay is concise.
If you've written generic programs with C++ templates, you know how verbose it is. This is because type names are longer in generic code. Clay solves this problem elegantly by providing whole program type propagation. Generic programming, when combined with whole program type propagation lets you write high-level code rivaling scripting languages in conciseness.
Clay is fast.
Efficient type-specialized code is generated during compilation. This type-specialized code is low-level and is equivalent to C in performance. Clay uses LLVM to optimize the generated low-level code.
Clay is a systems programming language.
Clay has the same memory footprint and runtime overhead as C. It is suitable for writing garbage collectors, embedded systems, database servers, games etc.
Clay design philosophy.
Efficient, concise, generic - Pick any three.
- Machine memory model
- Value semantics
- Whole program type propagation
- Module system
- Extensible variant types
- Multiple dispatch
- Powerful compile time meta-programming
- Interoperability with C
- No garbage collection
- LLVM backend