Yao is a general-purpose, extensible, systems, scripting, and shell programming language.
“General-purpose” means that it can be used for anything in programming.
“Extensible” means that users can extend it with their own ideas.
“Systems programming language” means that Yao can be used for building systems, which means that it can communicate with code outside itself (see “Some Were Meant for C” by Stephen Kell).
“Scripting programming language” means that Yao is suitable for fast prototyping and throw-away programs.
“Shell programming language” means that Yao is designed to be used in a shell, making it easy to run outside commands from the language itself, while still providing all of the capabilities and convenience of a normal programming language.
Why put all of these things in one language? Simple: there is no reason to have many tools do these jobs when our tools are as flexible as programming languages are.
But another, better answer is that currently, programmers generally prototype new code in a scripting language, and then, when they need more performance, they gradually rewrite the code in a stricter, compiled language to get the lost performance back. If we could create a language able to stretch across the spectrum of languages without any loss of ease, such rewritings would not be necessary.
This will be done by allowing strong dynamic typing using reflection and allowing the programmer to use type inference and static typing where needed.
In fact, it might be better said that Yao is meant to be:
As powerful as C,
As flexible as Lisp,
As easy as Python,
As provable as Ada/SPARK,
More reliable than Rust,
With the time semantics of HAL/S.
- Source Code Representation
- Standard Library
- File Extension
- Zero Values
- Memory Management
- Extended Structured Concurrency
- Function Annotations
- Error Handling
- Design by Contract
- Type System
- Scope Resolution
- Mutexes and Such
- Code Tiles