Programming Tutorials

Excellent Free Tutorials to Learn Vala

Vala is an object-oriented programming language with a self-hosting compiler that generates C code and uses the GObject system.

Vala combines the high-level build-time performance of scripting languages with the run-time performance of low-level programming languages.

Vala is syntactically similar to C# and includes notable features such as anonymous functions, signals, properties, generics, assisted memory management, exception handling, type inference, and foreach statements.

Its developers, Jürg Billeter and Raffaele Sandrini, wanted to bring these features to the plain C runtime with little overhead and no special runtime support by targeting the GObject object system. Rather than compiling directly to machine code or assembly language, it compiles to a lower-level intermediate language. It source-to-source compiles to C, which is then compiled with a C compiler for a given platform, such as GCC.

Did you always want to write GTK+ or GNOME programs, but hate C with a passion? Learn Vala with these free tutorials!

Vala is published under the GNU Lesser General Public License v2.1+.


1. Vala Tutorial by GNOME

This tutorial doesn’t go into depth about basic programming practices. It only briefly explains the principles of object-oriented programming, instead focusing on how Vala applies the concepts. As such it will be helpful if you have experience of a variety of programming languages already, although in-depth knowledge of any particular one is not required.

Vala shares a lot of syntax with C#, but the author seeks to avoid describing features in terms of their similarity or differences with either C# or Java, with the aim of making the tutorial more accessible.

Read the tutorial


2. Tutorial for beginners and code samples by GNOME

By following these tutorials you will learn the basics of GUI programming using GTK+. You should have thoroughly understood the previous tutorial before embarking on this series.

Read the tutorial


3. Learn Vala in Y minutes by Milo Gilad

In GNOME’s own words, “Vala is a programming language that aims to bring modern programming language features to GNOME developers without imposing any additional runtime requirements and without using a different ABI compared to applications and libraries written in C.”

Vala has aspects of Java and C#, so it’ll be natural to those who know either.

Read the tutorial


4. Gtk+ Kick-Start Tutorial for Vala by Alberto Ruiz

This is an eight minute video showing you how to create a simple GTK+ application using the Vala programming language.

Watch the tutorial


5. Vala Language Introduction by Andre Masella

This video provides an overview of the Vala programming language given to co-workers.

Watch the tutorial


6. Create an ElementaryOS app with GTK & Vala! by Egee

This is a two part tutorial on how to make an ElementaryOS app using GTK and Vala.

Watch the tutorials


7. Learn Vala and Gtk+ from Scratch by Alessandro Castellani

A series of 13 short videos that explain how to build native Linux Applications – Learn Vala and Gtk+ from Scratch.

Watch the videos


8. Vala for C# Programmers by GNOME

This page describes the syntax differences, not the similarities between Vala and C#. It is intended to be a quick introduction to Vala for programmers who already know C#.

Read the article


9. Vala for Java Programmers by GNOME

This page describes the syntax differences, not the similarities between Vala and Java. It is intended to be a quick introduction to Vala for programmers who already know Java.

Read the tutorial


All tutorials in this series:

Free Programming Tutorials
JavaGeneral-purpose, concurrent, class-based, object-oriented, high-level language
CGeneral-purpose, procedural, portable, high-level language
PythonGeneral-purpose, structured, powerful language
C++General-purpose, portable, free-form, multi-paradigm language
C#Combines the power and flexibility of C++ with the simplicity of Visual Basic
JavaScriptInterpreted, prototype-based, scripting language
PHPPHP has been at the helm of the web for many years
RubyGeneral purpose, scripting, structured, flexible, fully object-oriented language
AssemblyAs close to writing machine code without writing in pure hexadecimal
SwiftPowerful and intuitive general-purpose programming language
GroovyPowerful, optionally typed and dynamic language
GoCompiled, statically typed programming language
PascalImperative and procedural language designed in the late 1960s
PerlHigh-level, general-purpose, interpreted, scripting, dynamic language
RDe facto standard among statisticians and data analysts
COBOLCommon Business-Oriented Language
ScalaModern, object-functional, multi-paradigm, Java-based language
FortranThe first high-level language, using the first compiler
ScratchVisual programming language designed for 8-16 year-old children
LuaDesigned as an embeddable scripting language
LogoDialect of Lisp that features interactivity, modularity, extensibility
RustIdeal for systems, embedded, and other performance critical code
LispUnique features - excellent to study programming constructs
AdaALGOL-like programming language, extended from Pascal and others
HaskellStandardized, general-purpose, polymorphically, statically typed language
SchemeGeneral-purpose, functional, language descended from Lisp and Algol
PrologGeneral purpose, declarative, logic programming language
ForthImperative stack-based programming language
ClojureDialect of the Lisp programming language
JuliaHigh-level, high-performance language for technical computing
SQLAccess and manipulate data held in a relational database management system
ErlangGeneral-purpose, concurrent, declarative, functional language
VimLPowerful scripting language of the Vim editor
OCamlGeneral-purpose, powerful, high-level language
AwkVersatile language designed for pattern scanning and processing
RacketPlatform for programming language design and implementation
BASICFamily of general-purpose, high-level programming languages
CoffeeScriptA very succinct programming language that transcompiles into JavaScript
LaTeXProfessional document preparation system and document markup language
ElixirRelatively new functional language that runs on the Erlang virtual machine
DartClient-optimized programming language for fast apps
ABAPAdvanced Business Application Programming
F#General purpose, strongly typed, multi-paradigm language. Part of ML
ChapelParallel-programming language in development at Cray Inc.
DylanMulti-paradigm language, supports functional & object-oriented programming
DGeneral-purpose systems programming language with a C-like syntax
SolidityObject-oriented, high-level language for implementing smart contracts
XMLSet of rules for defining semantic tags that describe the structure and meaning
ValaObject-oriented language with a self-hosting compiler that generates C code
ECMAScriptBest known as the language embedded in web browsers
KotlinStatically typed, general-purpose programming language with type inference
TypeScriptStrict syntactical superset of JavaScript, adding optional static typing
MarkdownPlain text formatting syntax designed to be easy-to-read and easy-to-write
Share this article

Share your Thoughts

This site uses Akismet to reduce spam. Learn how your comment data is processed.