# Pony Tutorial > A tutorial for the Pony programming language. The Pony Tutorial is a comprehensive guide to the Pony programming language, an object-oriented, actor-model, capabilities-secure language. It covers the type system, reference capabilities, generics, C FFI, testing, and more. The target audience is programmers with some experience in another language. ## Introduction - [Home](https://tutorial.ponylang.io/index.md) ## Getting Started - [Overview](https://tutorial.ponylang.io/getting-started/index.md) - [What You Need](https://tutorial.ponylang.io/getting-started/what-you-need.md) - [Hello World -- Your First Pony Program](https://tutorial.ponylang.io/getting-started/hello-world.md) - [Hello World -- How It Works](https://tutorial.ponylang.io/getting-started/how-it-works.md) ## Types - [Overview](https://tutorial.ponylang.io/types/index.md) - [The Pony Type System at a Glance](https://tutorial.ponylang.io/types/at-a-glance.md) - [Classes](https://tutorial.ponylang.io/types/classes.md) - [Primitives](https://tutorial.ponylang.io/types/primitives.md) - [Actors](https://tutorial.ponylang.io/types/actors.md) - [Traits and Interfaces](https://tutorial.ponylang.io/types/traits-and-interfaces.md) - [Structs](https://tutorial.ponylang.io/types/structs.md) - [Type Aliases](https://tutorial.ponylang.io/types/type-aliases.md) - [Type Expressions](https://tutorial.ponylang.io/types/type-expressions.md) ## Expressions - [Overview](https://tutorial.ponylang.io/expressions/index.md) - [Literals](https://tutorial.ponylang.io/expressions/literals.md) - [Variables](https://tutorial.ponylang.io/expressions/variables.md) - [Operators](https://tutorial.ponylang.io/expressions/ops.md) - [Arithmetic](https://tutorial.ponylang.io/expressions/arithmetic.md) - [Control Structures](https://tutorial.ponylang.io/expressions/control-structures.md) - [Match Expressions](https://tutorial.ponylang.io/expressions/match.md) - [As Operator](https://tutorial.ponylang.io/expressions/as.md) - [Methods](https://tutorial.ponylang.io/expressions/methods.md) - [Errors](https://tutorial.ponylang.io/expressions/errors.md) - [Equality in Pony](https://tutorial.ponylang.io/expressions/equality.md) - [Sugar](https://tutorial.ponylang.io/expressions/sugar.md) - [Object Literals](https://tutorial.ponylang.io/expressions/object-literals.md) - [Partial Application](https://tutorial.ponylang.io/expressions/partial-application.md) ## Reference Capabilities - [Overview](https://tutorial.ponylang.io/reference-capabilities/index.md) - [Reference Capabilities](https://tutorial.ponylang.io/reference-capabilities/reference-capabilities.md) - [Reference Capability Guarantees](https://tutorial.ponylang.io/reference-capabilities/guarantees.md) - [Consume and Destructive Read](https://tutorial.ponylang.io/reference-capabilities/consume-and-destructive-read.md) - [Recovering Capabilities](https://tutorial.ponylang.io/reference-capabilities/recovering-capabilities.md) - [Aliasing](https://tutorial.ponylang.io/reference-capabilities/aliasing.md) - [Passing and Sharing References](https://tutorial.ponylang.io/reference-capabilities/passing-and-sharing.md) - [Capability Subtyping](https://tutorial.ponylang.io/reference-capabilities/capability-subtyping.md) - [Combining Capabilities](https://tutorial.ponylang.io/reference-capabilities/combining-capabilities.md) - [Arrow Types aka Viewpoints](https://tutorial.ponylang.io/reference-capabilities/arrow-types.md) - [Reference Capability Matrix](https://tutorial.ponylang.io/reference-capabilities/capability-matrix.md) ## Object Capabilities - [Overview](https://tutorial.ponylang.io/object-capabilities/index.md) - [Object Capabilities](https://tutorial.ponylang.io/object-capabilities/object-capabilities.md) - [Derived Authority](https://tutorial.ponylang.io/object-capabilities/derived-authority.md) - [Trust Boundary](https://tutorial.ponylang.io/object-capabilities/trust-boundary.md) ## Generics - [Overview](https://tutorial.ponylang.io/generics/index.md) - [Generics and Reference Capabilities](https://tutorial.ponylang.io/generics/generics-and-reference-capabilities.md) - [Constraints](https://tutorial.ponylang.io/generics/generic-constraints.md) ## Packages - [Overview](https://tutorial.ponylang.io/packages/index.md) - [Use Statement](https://tutorial.ponylang.io/packages/use-statement.md) - [Standard Library](https://tutorial.ponylang.io/packages/standard-library.md) ## Testing - [Overview](https://tutorial.ponylang.io/testing/index.md) - [Testing with PonyTest](https://tutorial.ponylang.io/testing/ponytest.md) - [Testing with PonyCheck](https://tutorial.ponylang.io/testing/ponycheck.md) ## C-FFI - [Overview](https://tutorial.ponylang.io/c-ffi/index.md) - [Calling C from Pony](https://tutorial.ponylang.io/c-ffi/calling-c.md) - [Linking to C Libraries](https://tutorial.ponylang.io/c-ffi/linking-c.md) - [C Shims](https://tutorial.ponylang.io/c-ffi/c-shims.md) - [Callbacks](https://tutorial.ponylang.io/c-ffi/callbacks.md) ## Runtime Basics - [Overview](https://tutorial.ponylang.io/runtime-basics/index.md) - [The Scheduler](https://tutorial.ponylang.io/runtime-basics/scheduler.md) - [Program Lifecycle](https://tutorial.ponylang.io/runtime-basics/program-lifecycle.md) - [Garbage Collection](https://tutorial.ponylang.io/runtime-basics/garbage-collection.md) - [The ASIO Subsystem](https://tutorial.ponylang.io/runtime-basics/asio.md) - [Backpressure](https://tutorial.ponylang.io/runtime-basics/backpressure.md) - [Runtime Options](https://tutorial.ponylang.io/runtime-basics/runtime-options.md) ## Gotchas - [Overview](https://tutorial.ponylang.io/gotchas/index.md) - [Divide by Zero](https://tutorial.ponylang.io/gotchas/divide-by-zero.md) - [Garbage Collection](https://tutorial.ponylang.io/gotchas/garbage-collection.md) - [Scheduling](https://tutorial.ponylang.io/gotchas/scheduling.md) - [Function Call Side Effects](https://tutorial.ponylang.io/gotchas/side-effect-ordering-in-function-call-expressions.md) - [Recursion](https://tutorial.ponylang.io/gotchas/recursion.md) ## Where Next? - [Overview](https://tutorial.ponylang.io/where-next/index.md) ## Appendices - [Overview](https://tutorial.ponylang.io/appendices/index.md) - [PONYPATH](https://tutorial.ponylang.io/appendices/ponypath.md) - [Lexicon](https://tutorial.ponylang.io/appendices/lexicon.md) - [Symbol Lookup Cheat Sheet](https://tutorial.ponylang.io/appendices/symbol-lookup-cheat-sheet.md) - [Keywords](https://tutorial.ponylang.io/appendices/keywords.md) - [Examples](https://tutorial.ponylang.io/appendices/examples.md) - [Whitespace](https://tutorial.ponylang.io/appendices/whitespace.md) - [Compiler Arguments](https://tutorial.ponylang.io/appendices/compiler-args.md) - [Platform-dependent Code](https://tutorial.ponylang.io/appendices/platform-dependent-code.md) - [A Short Guide to Pony Error Messages](https://tutorial.ponylang.io/appendices/error-messages.md) - [Program Annotations](https://tutorial.ponylang.io/appendices/annotations.md) - [Serialisation](https://tutorial.ponylang.io/appendices/serialisation.md)