> For the complete documentation index, see [llms.txt](https://dibs.gitbook.io/vortex-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dibs.gitbook.io/vortex-docs/introduction.md).

# Introduction

## What is Vortex?

Vortex is a dynamically typed interpreted programming language designed to explore links and relationships between entities through reactive programming.

{% code overflow="wrap" %}

```rust
var x = 0
var y = 0

/*
    Let's set a hook on 'x' so that when it changes, it updates 'y'
*/

x::onChange((e) => {
    println(f"x: ${e.old} -> ${e.current}")
    y = x * 2
})

x = 5

/* 
    Changing 'x' will print the below to the console:
        x: 0 -> 5
    And update the value of 'y'
*/

println(y) // 10
```

{% endcode %}

## Why use Vortex?

* **Simplicity:** It makes creating reactive programs easy
* **Extensibility:** It offers C interoperability and can interface with external libraries
* **Modularity:** Relative imports allows your code to be modular and well organised
* **Familiar syntax:** Easy to write and easy to read syntax

## What does Vortex offer?

* **Hooks:** Simple reactive programming
* **C Interoperability:** Extend the language to suit your needs
* **Coroutines:** Building blocks for async code
* **Standard library:** Useful modules to solve all kinds of programming problems

Learn more about the core functionality of the language by reading the language reference:

{% content-ref url="/pages/4WjPzuJQBX3pyVTFDQOB" %}
[Language Reference](/vortex-docs/language-reference.md)
{% endcontent-ref %}

Or skip straight to the examples to see what you can do with Vortex:

{% content-ref url="/pages/d16AIeBo0bTTjyV470MP" %}
[Examples](/vortex-docs/examples.md)
{% endcontent-ref %}

Alternatively, if you just want to get started straight away, read the Getting Started guide to learn how to compile Vortex and run your first program:
