Engage Language (ELang)
Introduction
ELang (Engage Language) is an event-based programming language designed to automate processes when specific events are detected. It is developed under Helika and is particularly suited for use in the Engage system. ELang emphasizes leniency in data handling, allowing variables and structures to be used before they are explicitly defined.
Philosophy and Value
ELang is built on the following principles:
- Event-Driven Automation: Designed to respond to specific events, making it ideal for dynamic environments.
- Lenient Data Handling: Variables and structures default to 0, enabling flexible and error-tolerant programming.
- Modular and Evolving: Built around key concepts such as buckets, hooks, and interfaces, with room for future expansion.
- Efficiency and Simplicity: Simplifies complex processes into manageable logic, promoting ease of use and rapid development.
- Structured Pathways: Uses groups and ternary conditions within loops to create paths and conditional behaviors, facilitating better computer processing management.
Key Concepts
Buckets
- Buckets: The highest-level data storage entities. Temporary buckets are used to store event data and utility objects during code execution.
- Persisted Bucket (
$_
): Used for data that lives in the database. If we mutate a persisted state, it will be represented in the database.
- Event Bucket (
!_
): Used for transient data required for event handling. In order words, this allows us to access event attributes. This is a temporary bucket.
- Local Bucket (
*_
): Used for run-time defined data. These are local variables scoped at the hook level. This is a temporary bucket.
Hooks
- Hooks: Contain logic and storage guidelines, typically the starting point for ELang programs. Executed when specific events occur. The trigger_key is used to access if a hook should be executed event.
Interfaces
ELang supports various interfaces for handling different types of data and operations. Please refer to logic_symbols.py in the streaming repository for a more comprehensive list: