Vala | |
---|---|
Semantik | strukturel , imperativ , objektorienteret programmering |
Sprog klasse | objektorienteret programmeringssprog |
Dukkede op i | 2006 |
Forfatter | Jürg Billeter, Raffaele Sandrini |
Filtypenavn _ | .valaeller.vapi |
Frigøre | 0.56.3 [1] (3. september 2022 ) |
Type system | streng, statisk |
Større implementeringer | GNOME Desktop Project |
Blev påvirket | C , C++ , Groovy , Java , C# |
Licens | LGPL |
Internet side | wiki.gnome.org/projects/… |
OS | på tværs af platforme |
Mediefiler på Wikimedia Commons |
Vala er et programmeringssprog designet til applikations- og systemprogrammering baseret på GLib Object System ( GObject ) bibliotekerne i GNOME / GTK+ skrivebordsmiljøet . Sproget er udviklet af Jürg Billeter og Raffaele Sandrini.
Vala minder meget om Java i syntaks og implementerer fuldt ud den objektorienterede tilgang . Understøtter introspektion , typeinferens , referencetælling af affaldsindsamling , lambda-funktioner , Qt - lignende koncept for signaler og slots , men implementeret på sprogniveau, strengtyper , generisk programmering , array slicing , foreach collection operator , delegerede , lukninger , grænseflader , egenskaber og undtagelser .
Et kendetegn ved udviklingssystemet er, at Vala-programmet oversættes til et C -program , som igen kompileres til målplatformens eksekverbare kode med standard C - biblioteker , Glib og eksekveres med hastigheden af C - applikationen, der er kompileret til målet. platform objektkode . For at få oversættelig C-kode skal du angive -C-indstillingen til Vala-kompileren. Hvis programmet har en grafisk brugergrænseflade , bruges GTK+ -biblioteket under kompileringen (mulighed --pkg gtk+-3.0 for compileren). Takket være denne tilgang er den kompilerede Vala-kode binærkompatibel med systembiblioteker skrevet i C. For at forbinde tredjepartsbiblioteker til Vala-programmer bruges specielle vapi-filer, som beskriver biblioteksgrænsefladen. For mange biblioteker er der allerede vapi-filer inkluderet i standardleveringen af Vala-kompileren [2] . Derudover er der vapi-filer til biblioteker understøttet af tredjepartsbrugere, som endnu ikke er inkluderet i standarddistributionen [3] .
Der er uofficielle builds af Windows -kompileren , der vedligeholdes af tredjeparter.
Vala-sproget blev skabt til effektiv udvikling af komplekse applikationer og systemapplikationer på GNOME-platformen med en grafisk brugergrænseflade baseret på GTK+ standardbiblioteket ved hjælp af moderne sprogværktøjer og programmeringsteknikker.
Det objektorienterede Java - sprog giver programmøren nok strøm, men programmer kører i virtuelle maskiner , hvilket gør det umuligt at få direkte adgang til dem fra C binær kode , samt at bruge system-lavniveaubiblioteker såsom GObject i sådanne programmer. Derfor kan dette sprog, som ethvert andet, der udfører bytekode i virtuelle maskiner, ikke accepteres i GNOME -platformen . Administrerede applikationer har også ydeevnebegrænsninger, hvilket er afgørende for driften af nogle programmer (f.eks. systemprogrammer), der skal udføres i binær kode ( ABI ). Dette var årsagen til fremkomsten af det nye Vala-sprog.
Et simpelt " Hej, verden "-program
void main () { print ( "Hej, verden \n " ); }" Hello, World "-program, der demonstrerer objektorienteret tilgang
klasse Sample { void run () { stdout . printf ( "Hej verden \n " ); } static int main ( string [] args ) { var sample = new Sample (); prøve . køre (); returnere 0 ; } }Dette er et eksempel på at bruge GTK+ til at oprette GUI- programmer i Vala:
bruger GTK ; int main ( streng [] args ) { Gtk . init ( ref args ); varwindow = nyt vindue ( ); vindue . title = "Hej verden!" ; vindue . grænse_bredde = 10 ; vindue . window_position = WindowPosition . CENTER ; vindue . set_default_size ( 350 , 70 ); vindue . ødelægge . forbinde ( Gtk . main_quit ); var label = new Label ( "Hej, verden!" ); vindue . tilføje ( etiket ); vindue . vis_alle (); gtk . hoved (); returnere 0 ; }Vala-sproget bruges aktivt til at udvikle applikationer til GNOME , især til at skrive fundamentalt nye applikationer, der opfylder behovene hos GNU Linux-brugere . Brug af Vala udvikles:
Hvis du har problemer med at kompilere eksemplet, så prøv den nyeste version af Vala.
Simpelt Hej, verden:
void main () { print ( "Hej verden \n " ); }Kompilere og køre:
$ valac hello.vala
$ ./hello
I script-tilstand:
# !/ usr / bin / vala print ( "hej verden \n " );Kør: gør filen eksekverbar med vala-kommandoen (så er den første linje valgfri)
$ vala hello.vala
Læser brugerinput void main () { stdout . printf ( "Indtast dit navn: " ); strengnavn = stdin . _ read_line (); stdout . printf ( @"Hej, $navn! \n " ); } Læsning og skrivning til en filDette er en meget enkel behandling af tekstfiler. Til avanceret I/O skal du bruge de kraftfulde GIO-streamklasser .
void main () { prøv { // Skriv string content = "hej verden" ; FileUtils . set_contents ( data . txt , indhold ); // Læs streng læst ; FileUtils . get_contents ( filnavn , læst ud ); stdout . printf ( @"Indholdet af filen '$filename' er: \n $read \n " ); } catch ( FileError e ) { stderr . printf ( @"$(e.message) \n " ); } } Ægningsprocesser void main () { prøv { // Ikke-blokerende proces . spawn_command_line_async ( "ls" ); // Blokering (venter på, at processen er færdig) Proces . spawn_command_line_sync ( "ls" ); // Blokering med output- streng standard_output , standard_error ; int exit_status ; proces . spawn_command_line_sync ( "ls" , ud standard_output , ud standard_fejl , ud exit_status ); //print output af process exec stdout . printf ( standard_output ); } catch ( SpawnError e ) { stderr . printf ( "%s \n " , e . meddelelse ); } } Avanceret eksempel /* klasse afledt af GObject */ public class AdvancedSample : Object { /* automatisk egenskab, datafelt er implicit */ public string name { get ; sæt ; } /* signal */ offentligt signal void foo (); /* oprettelsesmetode * / public AdvancedSample ( strengnavn ) { this . navn = navn ; } /* offentlig instansmetode */ public void run () { /* tildeler anonym funktion som signalbehandler */ dette . foo . connect (( s ) => { stdout . printf ( "Lambda-udtryk %s! \n " , dette . navn ); }); /* udsender signalet */ dette . foo (); } /* applikationsindgangspunkt */ public static int main ( streng [] args ) { foreach ( streng arg i args ) { var sample = new AdvancedSample ( arg ); prøve . køre (); /* "sample" frigives, når blokken slutter */ } returner 0 ; } } Arbejde med strengeRedaktør | Syntaksfremhævning | Kodeformatering | Statisk kodeanalyse | Autofuldførelse | Spring til definition | Omfattende dokumentation | Integreret build, test og debug |
Anjuta | Ja | Ja | Ja | ||||
atom | Ja | Ja | Ja | ||||
elementær OS-kode | Ja | ||||||
emacs | Ja | ||||||
Geany | Ja | Ja | Ja | ||||
gedit | Ja | Ja | |||||
GNOME Builder | Ja | Ja | Ja | Ja | Ja | ||
IntelliJ IDÉ | Ja | ||||||
meditation | Ja | ||||||
SublimeTekst | Ja | Grundlæggende | |||||
TextMate | Ja | Grundlæggende | |||||
vim | Ja | Ja | Ja | ||||
Visual Studio kode | Ja | Ja | Ja | Ja | Ja | Delvis video ("Vala Debug" på YouTube) | |
Kate | Ja |
Der er i øjeblikket 4 sprogserverimplementeringer under udvikling til Vala:
GNOME | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Kerneapplikationer |
| ||||||||||||||||
Ansøgninger |
| ||||||||||||||||
Komponenter | |||||||||||||||||
Platform arkitektur |
| ||||||||||||||||
Fællesskab | |||||||||||||||||
Mennesker | |||||||||||||||||
|
Programmeringssprog | |
---|---|
|
C# | |
---|---|
Versioner |
|
PÅ |
|
Relaterede |