Introduction
Philosophy and Goals of Wave
Wave does not aim simply to replace existing low-level programming languages. Instead, it is designed to maintain the control and performance of low-level languages while complementing and simplifying them, allowing for various development domains to be handled within a consistent language and ecosystem.
Wave seeks to move away from handling vastly different areas such as web development, operating systems, artificial intelligence, blockchain, hardware control, compilers, networking, and encryption with separate languages. Wave's core goal is to provide an integrated development experience that naturally encompasses broad domains through one language, one toolchain, and one standard library.
Wave's philosophy lies in the coexistence of powerful high-level abstraction and precise low-level control. Through the standard library, it allows complex tasks to be handled intuitively, while also providing a pathway for direct access to memory, registers, and hardware resources when necessary. This enables developers to choose according to the situation without compromising between convenience and performance.
Especially, Wave's hardware library is a key design component. It is designed to be easily used by developers without deep knowledge of hardware, while also offering flexibility through low-level interfaces for precise control when needed. This approach allows for more intuitive use of hardware features without sacrificing performance.
Wave aims to break down the boundaries between high-level and low-level programming, simplifying the development experience within a single consistent language environment.
Main Features and Characteristics of Wave
Wave's key feature is its integration of various development fields within a single language structure. This allows developers to solve problems in multiple areas with Wave alone, without the need to learn a new language for each project.
The powerful standard library is a key element supporting Wave's productivity. It is designed to express complex tasks in concise code, allowing developers to focus on solving problems rather than repetitive implementation.
Hardware accessibility is also a significant feature of Wave. Wave offers a high-level interface for easy hardware handling, while also being designed to allow direct low-level control when necessary. This inclusivity extends from beginners to experienced system developers.
Performance is a non-negotiable element in Wave's design. It is designed to operate stably in performance-critical applications, based on an efficient compiler architecture and clear memory model.
Wave emphasizes modularity and reusability. It supports the separation and reuse of code into clear units, enabling effective management of complexity as project size grows.
Wave also aims to provide clear and intuitive error messages and debugging environments. This allows developers to quickly identify and fix the cause of problems, reducing unnecessary trial and error during the learning process.