Introduction - NotSpooky/Espuki-Definitive GitHub Wiki
Espuki is an easy to read, powerful, and very flexible language. It follows the functional dataflow paradigm, with metaprogramming capabilities. It can be compiled or interpreted.
Reasoning
Programming is the process of translating needs to a computer in a way that helps to solve the problem. This process involves:
- Clarifying what needs to be done and how.
- Using a system to express those requirements to the computer.
Programming languages are one of the main systems to achieve it. To be as effective as possible, the language-human system should have the minimum entropy possible.
This goal means:
- Reducing the human-idea barrier: It should be easy to find what does an idea encompass, it's limitations, capabilities, requirements and structure.
- Reducing the idea-language barrier: Commands should be easy to find and learn, they should do exactly what a person expects it to do, nothing more and nothing less. General ways to achieve that are:
Making commands approximate the syntax and semantics of natural languages, as long as it doesn't become tedious or ambiguous. Eliminating implicit actions, the obscurity might include function behavior, language semantics and overgeneralizing. Provide tools to simplify the finding process, making it clear what the correct command for a job is, it's requirements and limitations. This also includes having good tools to identify and avoid problems and bugs as soon as possible, with the easiest way to fix them. Automate as much as possible, balanced by other entropy-reduction mechanisms. This means abstracting all common and repetitive situations, and reducing bugs. Here, a balance must be done between power-users, who will spend more time learning, and new or casual users, who need intuitive tools to be effective. Reduce distractions, the build process should be intuitive, the compilation and run times adequate.
- Reducing the language-computer barrier: The code must be able to be translated to binary the hardware knows with the least ambiguity possible, optimizing it both in time and space and adjusting it to work well and effectively.