GTK is written using the C programming language, but its also available to various programming languages through language bindings, which allow writing GTK applications in the style of those languages. Language bindings are relatively easy to create because GTK is designed with them in mind.
There are various, maintained language bindings available for GTK:
GTK generates a complete, machine readable description of its API as part of its build; the introspection data is available both as an XML file and as a binary format that can be loaded using a shared library. The introspection data is commonly used to write the language bindings in the list above.
For more information on the introspection data, you can read the GObject Introspection documentation.