# Writing Parsl Apps

An App defines a computation that will be executed asynchronously by Parsl. Apps are Python functions marked with a decorator which designates that the function will run asynchronously and cause it to return a `Future` instead of the result.

Apps can be one of three types of functions, each with their own type of decorator

- `@python_app`: Most Python functions

- `@bash_app`: A Python function which returns a command line program to execute

- `@join_app`: A function which launches one or more new Apps

Start by learning how to write Python Apps, which define most of the rules needed to write other types of Apps.

- Python Apps
- Bash Apps
- MPI and Multi-node Apps
- Join Apps