Metadata
Title
Programming Language
Category
general
UUID
f193c2efabbb4a488d412d8597484d8a
Source URL
https://cforall.uwaterloo.ca/~cforall/
Parent URL
https://cs.uwaterloo.ca/current-undergraduate-students/research-opportunities/ur...
Crawl Time
2026-03-18T05:14:28+00:00
Rendered Raw Markdown
# Programming Language

**Source**: https://cforall.uwaterloo.ca/~cforall/
**Parent**: https://cs.uwaterloo.ca/current-undergraduate-students/research-opportunities/ura

located at

powered by

(C-for-all) is an open-source project extending ISO C with modern safety
and productivity features, while still ensuring backwards compatibility with C and its programmers.
C∀ is designed to have an orthogonal feature-set based closely on the C programming paradigm
(non-object-oriented) and these features can be added incrementally to an existing C code-base allowing
programmers to learn C∀ on an as-needed basis. In many ways, C∀ is to C
as [Scala](http://www.scala-lang.org/files/archive/spec/2.11) is to Java, providing a vehicle for
new typing and control-flow capabilities on top of a highly popular programming language allowing immediate
dissemination.

Traditional languages,
[Fortran 18](https://en.wikipedia.org/wiki/Fortran),
[Cobol 14](https://en.wikipedia.org/wiki/COBOL), and
[Ada 12](https://en.wikipedia.org/wiki/Ada_(programming_language)), like C∀, are
taking an *evolutionary* approach, adding modern features and fixing problems within the framework of
each language. Newer languages,
[D](https://en.wikipedia.org/wiki/D_(programming_language)),
[Go](https://en.wikipedia.org/wiki/Go_(programming_language)),
[Java](https://en.wikipedia.org/wiki/Java_(programming_language)), and [Rust](https://en.wikipedia.org/wiki/Rust_(programming_language)) are taking a
*revolutionary* approach, generating new languages with no backwards compatibility requirement. All
of these languages have different syntax and semantics from C, only interoperate indirectly with C, and are
not systems languages because of restrictive memory management or garbage collection. As a result, there is
a significant learning curve to move to these languages, and C legacy-code must be rewritten. While C++,
like C∀, takes an evolutionary approach to extending C, C++'s complex and interdependent features
(e.g., overloading, object oriented, templates) mean idiomatic C++ code is difficult to use from C, and C
programmers must expend significant effort learning C++. Hence, rewriting and retraining costs for these
languages (even C++) can be prohibitive for companies with a large C software-base. C∀ circumvents
these problems with its backward compatibility requirement and orthogonal feature-set.

The result of this project is a language that is largely backwards compatible with C, but fixes many of the
well known C problems while adding modern language-features. To achieve these goals requires a significant
engineering exercise *thinking inside the C box*. Without extensions to C, it is unable to cope with
the needs of modern programming problems and programmers, putting it in jeopardy. Considering the large
body of existing C code and programmers, there is significant impetus to ensure C is transformed into a
modern programming-language.

### [GitHub (pre-release download)](https://github.com/cforall/cforall)

### [User Manual](https://cforall.uwaterloo.ca/doc/user.pdf)

### [Papers/Theses](https://cforall.uwaterloo.ca/papers)

### [Continuous Integration](https://cforall.uwaterloo.ca/jenkins)

### [Bug Tracker](https://cforall.uwaterloo.ca/trac)

### [Mailing List](https://lists.uwaterloo.ca/mailman/admindb/cforall) (internal only)