# Tutorials

Each tutorial in this section walks through writing a simple FIDL service using
your language of choice, and will introduce you to the basics of FIDL:

  * writing a FIDL protocol
  * compiling the FIDL protocol into generated bindings in your language of choice
  * implementing a client of the protocol
  * implementing a server for the protocol
  * running the client and server together, on Fuchsia

The tutorials do not assume any knowledge about FIDL, but do assume that you
are comfortable writing code in your chosen language. However, you will get more
out of the tutorial by understanding the [concepts][fidl-concepts] behind FIDL
first. If you're using C++ and wondering which tutorial to follow, take a look
at the [HLCPP and LLCPP comparison doc][c-family].

  * [High Level C++ (HLCPP) Tutorial][hlcpp]
  * [Low Level C++ (LLCPP) Tutorial][llcpp]
  * [Rust Tutorial][rust]
  * [Dart Tutorial][dart]
  * [Go Tutorial][go]
  * [C Tutorial][c]

<!-- xrefs -->
[fidl-concepts]: /docs/concepts/fidl/overview.md
[hlcpp]: /docs/development/languages/fidl/tutorials/tutorial-hlcpp.md
[llcpp]: /docs/development/languages/fidl/tutorials/tutorial-llcpp.md
[rust]: /docs/development/languages/fidl/tutorials/tutorial-rust.md
[dart]: /docs/development/languages/fidl/tutorials/tutorial-dart.md
[go]: /docs/development/languages/fidl/tutorials/tutorial-go.md
[c]: /docs/development/languages/fidl/tutorials/tutorial-c.md
[c-family]: /docs/development/languages/fidl/guides/c-family-comparison.md
