Vala | |
---|---|
Szemantika | strukturális , imperatív , objektumorientált programozás |
Nyelvóra | objektum-orientált programozási nyelv |
Megjelent | 2006 |
Szerző | Jürg Billeter, Raffaele Sandrini |
Fájlkiterjesztés _ | .valavagy.vapi |
Kiadás | 0,56,3 [1] (2022. szeptember 3. ) |
Típusrendszer | szigorú, statikus |
Főbb megvalósítások | GNOME asztali projekt |
Befolyásolva | C , C++ , Groovy , Java , C# |
Engedély | LGPL |
Weboldal | wiki.gnome.org/projects/… |
OS | platformközi |
Médiafájlok a Wikimedia Commons oldalon |
A Vala egy olyan programozási nyelv , amelyet a GNOME / GTK+ asztali környezet GLib Object System ( GObject ) könyvtárain alapuló alkalmazásokhoz és rendszerprogramozáshoz terveztek . A nyelvet Jürg Billeter és Raffaele Sandrini fejlesztette ki.
A Vala szintaxisában nagyon hasonló a Java -hoz , és teljes mértékben megvalósítja az objektum-orientált megközelítést . Támogatja az introspekciót , a típuskövetkeztetést , a referenciaszámláló szemétgyűjtést , a lambda függvényeket , a Qt -szerű jelek és nyílások koncepcióját , de nyelvi szinten megvalósítva , karakterlánctípusokat , általános programozást , tömbszeletelést , foreach collection operátort , delegátusokat , lezárásokat , interfészek , tulajdonságokat és kivételek .
A fejlesztői rendszer egyik jellemzője, hogy a Vala programot C programmá fordítják le , amely viszont a célplatform végrehajtható kódjává fordítódik szabványos C könyvtárakkal , Glib , és a célba fordított C alkalmazás sebességével fut le. platform objektum kódja . Ha lefordítható C kódot szeretne kapni, meg kell adnia a -C kapcsolót a Vala fordítónak. Ha a program grafikus felhasználói felülettel rendelkezik , akkor a fordítás során a GTK+ könyvtár kerül felhasználásra (a fordító --pkg gtk+-3.0 opciója). Ennek a megközelítésnek köszönhetően a lefordított Vala kód binárisan kompatibilis a C nyelven írt rendszerkönyvtárakkal. Harmadik féltől származó könyvtárak Vala programokhoz való csatlakoztatásához speciális vapi fájlokat használnak, amelyek leírják a könyvtári felületet. Sok könyvtár esetében már vannak vapi fájlok a Vala fordító [2] szabványos szállításában . Ezenkívül léteznek vapi fájlok a külső felhasználók által támogatott könyvtárakhoz, amelyek még nem szerepelnek a szabványos disztribúcióban [3] .
A Windows -fordítónak vannak nem hivatalos buildjei, amelyeket harmadik felek tartanak fenn.
A Vala nyelvet komplex alkalmazás- és rendszeralkalmazások hatékony fejlesztésére hozták létre a GNOME platformon a GTK+ szabványkönyvtárra épülő grafikus felhasználói felülettel , modern nyelvi eszközök és programozási technikák segítségével.
A Java objektum-orientált nyelv elegendő energiát biztosít a programozó számára, de a programok virtuális gépeken futnak , ami lehetetlenné teszi a közvetlen hozzáférést a C bináris kódból , valamint az alacsony szintű rendszerkönyvtárak, például a GObject használatát ilyen programokban. Ezért ez a nyelv, mint bármely más, virtuális gépeken bájtkódot végrehajtó nyelv, nem fogadható el a GNOME platformon belül . A felügyelt alkalmazásoknak is vannak teljesítménykorlátozásai, ami kritikus fontosságú egyes programok (például rendszerprogramok) működéséhez, amelyeket bináris kódban ( ABI ) kell végrehajtani. Ez volt az oka az új vala nyelv megjelenésének.
Egy egyszerű " Hello, World " program
void main () { print ( "Hello, World \n " ); }Az objektum-orientált megközelítést bemutató " Hello, World " program
class Minta { void run () { stdout . printf ( "Hello, Világ \n " ); } static int main ( string [] args ) { var sample = new Sample (); minta . futni (); return 0 ; } }Ez egy példa a GTK+ használatára GUI programok létrehozására Valában:
GTK használatával ; int main ( string [ ] args ) { Gtk . init ( ref args ); varwindow = új ablak ( ); ablak . title = "Hello World!" ; ablak . border_width = 10 ; ablak . window_position = Ablakpozíció . KÖZPONT ; ablak . set_default_size ( 350 , 70 ); ablak . elpusztítani . connect ( Gtk . main_quit ); var label = new Label ( "Hello, World!" ); ablak . hozzá ( címke ); ablak . show_all (); gtk . fő (); return 0 ; }A Vala nyelvet aktívan használják GNOME alkalmazások fejlesztésére , különösen olyan alapvetően új alkalmazások írására, amelyek megfelelnek a GNU Linux felhasználók igényeinek . A Vala használata folyamatban van:
Ha problémái vannak a példa fordításával, próbálja ki a Vala legújabb verzióját.
Egyszerű Hello, Világ:
void main () { print ( "Hello, world \n " ); }Összeállítás és futtatás:
$ valac hello.vala
$ ./hello
Szkript módban:
# !/ usr / bin / vala print ( "hello, world \n " );Futtatás: a fájl futtathatóvá tétele a vala paranccsal (akkor az első sor nem kötelező)
$ vala hello.vala
Felhasználói bevitel olvasása void main () { stdout . printf ( "Írja be a nevét: " ); string name = stdin . read_line (); stdout . printf ( @"Szia $név! \n " ); } Fájl olvasása és írásaEz egy nagyon egyszerű szöveges fájlok feldolgozása. Haladó I/O-hoz használja a hatékony GIO adatfolyam osztályokat .
void main () { próbáld meg { // Ír string content = "hello world" ; FileUtils . set_contents ( adat . txt , tartalom ); // Olvas string read ; FileUtils . get_contents ( fájlnév , kiolvasás ) ; stdout . printf ( @"A '$filename' fájl tartalma: \n $read \n " ); } catch ( FileError e ) { stderr . printf ( @"$(e.message) \n " ); } } Spawning folyamatok void main () { try { // Nem blokkoló folyamat . spawn_command_line_async ( "ls" ); // Blokkolás (megvárja a folyamat befejezését) Folyamat . spawn_command_line_sync ( "ls" ); // Blokkolás kimeneti karakterlánccal standard_output , standard_error ; int kilépési_állapot ; folyamat . spawn_command_line_sync ( "ls" , ki standard_output , out standard_error , out exit_status ); //folyamat exec stdout kimenetének nyomtatása . printf ( standard_output ); } catch ( SpawnError e ) { stderr . printf ( "%s \n " , pl . üzenet ); } } Speciális példa /* osztály a GObjectből származtatott */ public class AdvancedSample : Object { /* automatikus tulajdonság, az adatmező implicit */ public string name { get ; készlet ; } /* jel */ nyilvános jelzés void foo (); /* létrehozási módszer */ public AdvancedSample ( karakterlánc neve ) { this . név = név ; } /* nyilvános példány metódus */ public void run () { /* anonim függvény hozzárendelése jelkezelőként */ this . fú . connect (( s ) => { stdout . printf ( "Lambda kifejezés %s! \n " , ez . név ); }); /* a jelet kibocsátó */ ez . foo (); } /* alkalmazás belépési pontja */ public static int main ( string [] args ) { foreach ( string arg in args ) { var sample = new AdvancedSample ( arg ); minta . futni (); /* "minta" blokkvégként felszabadul */ } return 0 ; } } Stringekkel való munkaSzerkesztő | Szintaxis kiemelés | Kód formázása | Statikus kódelemzés | Automatikus kiegészítés | Ugrás a meghatározáshoz | Átfogó dokumentáció | Integrált összeállítás, tesztelés és hibakeresés |
Anjuta | Igen | Igen | Igen | ||||
atom | Igen | Igen | Igen | ||||
elemi operációs rendszer kód | Igen | ||||||
emacs | Igen | ||||||
Geany | Igen | Igen | Igen | ||||
gedit | Igen | Igen | |||||
GNOME Builder | Igen | Igen | Igen | Igen | Igen | ||
IntelliJ ÖTLET | Igen | ||||||
elmélkedés | Igen | ||||||
SublimeText | Igen | Alapvető | |||||
TextMate | Igen | Alapvető | |||||
vim | Igen | Igen | Igen | ||||
Visual Studio kód | Igen | Igen | Igen | Igen | Igen | Részleges videó ("Vala Debug" a YouTube-on) | |
Kate | Igen |
Jelenleg 4 nyelvi szerver implementáció van fejlesztés alatt a Vala számára:
GNOME | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Alapvető |
| ||||||||||||||||
Alkalmazások |
| ||||||||||||||||
Alkatrészek | |||||||||||||||||
Platform architektúra |
| ||||||||||||||||
Közösség | |||||||||||||||||
Emberek | |||||||||||||||||
|
Programozási nyelvek | |
---|---|
|
C# | |
---|---|
Verziók |
|
TOVÁBB |
|
Összefüggő |