Vala

Vala היא שפת תכנות מונחית־עצמים אשר מטרתה ליצור שפת תכנות חדישה למפתחי GNOME ללא תלויות וללא שימוש ב־API שונה לעומת יישומים וספריות שנכתבו בשפת C.

valac, מהדר Vala, מתרגם קוד Vala לקוד בשפת C. הוא משתמש במערכת GObject ליצירת מחלקות וממשקים המוצהרים בקוד המקור של Vala.

Vala נועדה לאפשר גישה לספריות קיימות הכתובות בשפת C (בעיקר לספריות מבוססות GObject), ללא צורך בהסבתן. כל מה שצריך הוא קובץ API המכיל את הצהרות הפונקציות והמחלקות בתחביר Vala.

Vala משוחררת תחת הרישיון הציבורי הכללי המוקטן של גנו (GNU LGPL) גרסה 2.1.

== תכונות ==
תחביר Vala דומה לתחביר C#{{D}}, אך שונה כדי להתאים למערכת GObject. בין תכונותיה של Vala ניתן למצוא תכונות המאפיינות שפות חדשות רבות:
* ממשקים
* מאפייני מחלקות (Properties)
* אותות
* לולאות מבוססות טווח (לולאת "Foreach")
* תחשיב למדא
* זיהוי אוטומטי של סוג טיפוס ערך (Type inference)
* תכנות גנרי (כתיבת תוכניות שאינן תלויות בטיפוסי המשתנים)
* הגדרת משתנים ריקים (שערכם Nothing)
* איסוף זבל (ניקוי זיכרון עצמים שאינם בשימוש)
* טיפול בחריגות

== קוד לדוגמה ==
דוגמה פשוטה לתוכנית "שלום עולם" ב־Vala:
<syntaxhighlight lang="vala">
int main()
{
 print("Hello, world !\n");
 
 return 0;
}
</syntaxhighlight>
הידור הקוד מתבצע באמצעות valac, מהדר Vala, דרך המסוף (בהנחה שקוד המקור נמצא בקובץ "helloworld.vala"):

<syntaxhighlight lang="bash">
valac helloworld.vala
</syntaxhighlight>

דוגמה מורכבת יותר המציגה מספר תכונות מונחות עצמים של Vala, המהודרת באותה הצורה:
<syntaxhighlight lang="vala">
using GLib;

public class Sample : Object
{
 public void run()
 {
 stdout.printf("Hello, world !\n");
 }
 
 static int main(string[] args)
 {
 var sample = new Sample();
 sample.run();
 
 return 0;
 }
}
</syntaxhighlight>

דוגמה לתוכנית "שלום עולם" באמצעות GTK+{{D}}:
<syntaxhighlight lang="vala">
using Gtk;

int main(string[] args)
{
 Gtk.init(ref args);
 
 var window = new Window();
 window.title = "שלום עולם !";
 window.border_width = 10;
 window.window_position = WindowPosition.CENTER;
 window.set_default_size(350, 70);
 window.destroy.connect(Gtk.main_quit);
 
 var label = new Label("שלום עולם !");
 
 window.add(label);
 window.show_all();
 
 Gtk.main();
 
 return 0;
}
</syntaxhighlight>

הידור הקוד, באמצעות המסוף, מתבצע עם הוספת אפשרות המכלילה את הספרייה GTK+ (בהנחה שקוד המקור נמצא בקובץ "helloworld.vala"):
<syntaxhighlight lang="bash">
valac --pkg gtk+-3.0 helloworld.vala
</syntaxhighlight>

== ראו גם ==
* פייתון, שפת תכנות מפורשת מונחית עצמים

== קישורים חיצוניים ==

* [https://sourceforge.net/projects/gtk-mingw/ GTK+ for Windows], מיזם המספק, בין השאר, קבצים בינאריים של Vala לחלונות
* [https://wiki.gnome.org/Projects/Vala/Tutorial המדריך הרשמי (אנגלית)], [https://wiki.gnome.org/Projects/Vala/Tutorial/he עברית]
* [https://code.launchpad.net/~tarnyko/valide/trunk Valide], סביבת פיתוח משולבת ל־Vala
* [http://code.google.com/p/vtg/ Vala Toys for gEdit], תוסף לעורך הטקסט Gedit המוסיף תמיכה להשלמה אוטומטית ומספר תכונות נוספות לקוד Vala
* [http://valadoc.org/ תיעוד ה־API] של מרבית ספריות התוכנה הקיימות עבור Vala
* [https://wiki.gnome.org/Projects/Vala/Documentation#Projects_Developed_in_Vala רשימת תוכניות Vala]

=== השוואות עם שפות אחרות ===
* [https://wiki.gnome.org/Projects/Vala/ValaForJavaProgrammers Vala למתכנתי Java]
* [https://wiki.gnome.org/Projects/Vala/ValaForCSharpProgrammers Vala למתכנתי C#]

== הערות שוליים ==

קטגוריה:תוכנה חופשית
קטגוריה:GNOME
קטגוריה:שפות תכנות
קטגוריה:תוכנות שהושקו ב-2006