The fundamental challenge:
Create a development environment that permits the developer to do whatever they conceive.

Plange may not accomplish a developers goals for them, but it strives to stay out of the way while maintaining its usefulness. In other words: do not obstruct any use case, and anticipate many of them. As the developer explores the languages capabilities, they discover new potential domains rather than boundaries. A small number of specific goals stem from this notion, and provide an outline for the project.

Strongly-Connected Model of Computation

A key concept for maximizing power and flexibility, and proof that plange does not obstruct any use case. See the main page.


An approach to meta programming (see metaobject on Wikipedia). See the main page.


Support semantics from each generation of programming language.

Solver and C.A.S.

The interface to the solver and computer algebra system is through syntax and semantics built into the language. Constraints on systems, in the form of expressions in predicate logic, differentials, and other problem domains are solved symbolically, or numeric methods are used at runtime.

Scripting friendly

Ensure that simple solutions exist for simple problems. The "Hello World" program must be one line of source code, one statement. As such, functions for printing, manipulating files, and other basic operations are automatically in scope of each translation unit. See the standard library. Further, the bar to entry must be low for provisioning and for typical use. Accessibility is critical to good adoption.

Bare Metal

The highest level languages create an abstraction of the physical hardware that's dramatically different from the reality. This approach is very powerful. But as with all things, it is not the optimal solution for all problems. For high level abstractions, developers often (and sometimes unwittingly) exchange the ability to reach the "bare metal." Instead, a well rounded language maintains the accessibility of the system hardware as a semantic feature of the language. The most obvious approach is to provide first-class inline assembler support. See: asm

Comprehensive Libraries, Documentation, Support

A standard library that is broad, compared to python, or .Net. This website ( catalogs the requirements of the project, and provides a moderated platform for open-source user contributions.

Communicate Well

Documentation is exhaustive, generated wherever possible, and available whenever possible. This website serves as the primary source for structured and unstructured information used in the building of the tool chain. For example, the Syntax pages (under Documentation) of this website are used by a web scraper to generate grammar files plange. Formalism in documentation and source code is highly valued.

Error message, diagnostics, etc. should be helpful. e.g. Think of clang's template error messages versus gcc's.

copyright © Brent Lewis 2017