Vala | |
---|---|
Semantiikka | rakenteellinen , pakollinen , olio-ohjelmointi |
Kieliluokka | olio-ohjelmointikieli |
Esiintyi | 2006 |
Tekijä | Jürg Billeter, Raffaele Sandrini |
Tiedostotunniste _ | .valatai.vapi |
Vapauta | 0.56.3 [1] (3. syyskuuta 2022 ) |
Tyyppijärjestelmä | tiukka, staattinen |
Tärkeimmät toteutukset | GNOME-työpöytäprojekti |
Vaikutettu | C , C++ , Groovy , Java , C# |
Lisenssi | LGPL |
Verkkosivusto | wiki.gnome.org/projects/… |
OS | cross-platform |
Mediatiedostot Wikimedia Commonsissa |
Vala on sovellus- ja järjestelmäohjelmointiin suunniteltu ohjelmointikieli , joka perustuu GNOME / GTK+ -työpöytäympäristön GLib Object System ( GObject ) -kirjastoihin . Kielen ovat kehittäneet Jürg Billeter ja Raffaele Sandrini.
Vala on syntaksiltaan hyvin samanlainen kuin Java ja toteuttaa täysin oliolähestymistavan . Tukee itsetutkiskelua , tyyppipäätelmää , viitteiden laskemista roskienkeräystä , lambda -funktioita , Qt - kaltaista signaalien ja aikavälien käsitettä , mutta toteutettu kielitasolla , merkkijonotyypit , yleinen ohjelmointi , taulukon viipalointi , foreach keräysoperaattori , delegaatit , sulkemiset , rajapinnat , ominaisuudet ja poikkeuksia .
Kehitysjärjestelmän ominaisuus on se, että Vala-ohjelma käännetään C -ohjelmaksi , joka puolestaan käännetään kohdealustan suoritettavaksi koodiksi standardien C - kirjastojen Glib kanssa ja suoritetaan C - sovelluksen nopeudella, joka on käännetty kohteeseen. alustan objektikoodi . Käännettävän C-koodin saamiseksi sinun on määritettävä Vala-kääntäjälle vaihtoehto -C. Jos ohjelmassa on graafinen käyttöliittymä , käännöksen aikana käytetään GTK+ -kirjastoa (kääntäjän vaihtoehto --pkg gtk+-3.0). Tämän lähestymistavan ansiosta käännetty Vala-koodi on binääriyhteensopiva C-kielellä kirjoitettujen järjestelmäkirjastojen kanssa. Kolmannen osapuolen kirjastojen yhdistämiseksi Vala-ohjelmiin käytetään erityisiä vapi-tiedostoja, jotka kuvaavat kirjaston käyttöliittymää. Monien kirjastojen osalta Vapi-tiedostot sisältyvät jo Vala-kääntäjän vakiotoimitukseen [2] . Lisäksi kolmannen osapuolen käyttäjien tukemille kirjastoille on vapi-tiedostoja, jotka eivät vielä sisälly vakiojakeluun [3] .
Kolmannet osapuolet ylläpitävät epävirallisia Windows -kääntäjän koontiversioita.
Vala-kieli luotiin monimutkaisten sovellus- ja järjestelmäsovellusten tehokkaaseen kehittämiseen GNOME-alustalla GTK+-standardikirjastoon perustuvalla graafisella käyttöliittymällä nykyaikaisia kielityökaluja ja ohjelmointitekniikoita käyttäen.
Java -oliokieli antaa ohjelmoijalle riittävästi tehoa, mutta ohjelmat toimivat virtuaalikoneen , mikä tekee mahdottomaksi pääsyn niihin suoraan C -binäärikoodista , samoin kuin järjestelmän matalan tason kirjastojen, kuten GObjectin, käytön tällaisissa ohjelmissa. Siksi tätä kieltä, kuten mitään muutakin tavukoodia virtuaalikoneen suorittavaa kieltä, ei voida hyväksyä GNOME -alustalla . Hallituilla sovelluksilla on myös suorituskykyrajoituksia, mikä on kriittistä joidenkin ohjelmien (esimerkiksi järjestelmäohjelmien) toiminnalle, jotka on suoritettava binäärikoodissa ( ABI ). Tämä oli syynä uuden Valan kielen syntymiseen.
Yksinkertainen " Hei, maailma " -ohjelma
void main () { print ( "Hei, maailma \n " ); }" Hei, maailma " -ohjelma, joka esittelee oliolähtöistä lähestymistapaa
class Esimerkki { void run () { stdout . printf ( "Hei, maailma \n " ); } static int main ( merkkijono [] args ) { var sample = new Sample (); näyte . juosta (); paluu 0 ; } }Tämä on esimerkki GTK+ :n käytöstä GUI - ohjelmien luomiseen Valassa:
käyttäen GTK :ta ; int main ( merkkijono [ ] args ) { Gtk . init ( viite args ); varwindow = uusi ikkuna ( ); ikkuna . title = "Hei maailma!" ; ikkuna . reunan_leveys = 10 ; ikkuna . window_position = Ikkunan sijainti . KESKUS ; ikkuna . set_default_size ( 350 , 70 ); ikkuna . tuhota . connect ( Gtk . main_quit ); var label = new Label ( "Hei, maailma!" ); ikkuna . lisätä ( etiketti ); ikkuna . näytä_kaikki (); gtk . tärkein (); paluu 0 ; }Vala-kieltä käytetään aktiivisesti GNOME -sovellusten kehittämiseen, erityisesti periaatteessa uusien GNU Linux -käyttäjien tarpeita vastaavien sovellusten kirjoittamiseen . Valan käyttöä kehitetään:
Jos sinulla on ongelmia esimerkin kääntämisessä, kokeile Valan uusinta versiota.
Yksinkertainen Hello, World:
void main () { print ( "Hei, maailma \n " ); }Kokoaminen ja ajo:
$ valac hello.vala
$ ./hello
Komentosarjatilassa:
# !/ usr / bin / vala print ( "hei, maailma \n " );Suorita: tee tiedostosta suoritettava käyttämällä vala-komentoa (ensimmäinen rivi on valinnainen)
$ vala hello.vala
Käyttäjän syötteen lukeminen void main () { stdout . printf ( "Anna nimesi:" ); merkkijonon nimi = stdin . lue_rivi (); stdout . printf ( @"Hei, $nimi! \n " ); } Tiedoston lukeminen ja kirjoittaminenTämä on hyvin yksinkertainen tekstitiedostojen käsittely. Käytä edistyneille I/O:lle tehokkaita GIO-suoraluokkia .
void main () { kokeile { // Kirjoita string content = "hei maailma" ; FileUtils . set_contents ( data . txt , content ); // Lukea merkkijono lukea ; FileUtils . get_contents ( tiedostonimi , lue ulos ); stdout . printf ( @"Tiedoston '$tiedostonimi' sisältö on: \n $read \n " ); } catch ( FileError e ) { stderr . printf ( @"$(e.message) \n " ); } } Kutuprosessit void main () { kokeile { // Ei- estoprosessi . spawn_command_line_async ( "ls" ); // Estäminen (odottaa prosessin päättymistä) Prosessi . spawn_command_line_sync ( "ls" ); // Esto lähtömerkkijonolla standard_output , standard_error ; int exit_status ; prosessi . spawn_command_line_sync ( "ls" , ulos standardi_lähtö , ulos standardi_virhe , ulos exit_status ); //tulosta prosessin exec stdout -tuloste . printf ( standardi_tulostus ); } catch ( SpawnError e ) { stderr . printf ( "%s \n " , esim . viesti ); } } Edistynyt esimerkki /* luokka johdettu GObjectista */ public class AdvancedSample : Object { /* automaattinen ominaisuus, tietokenttä on implisiittinen */ julkinen merkkijono nimi { get ; asettaa ; } /* signaali */ julkinen signaali void foo (); /* luontitapa */ public AdvancedSample ( merkkijonon nimi ) { this . nimi = nimi ; } /* julkinen ilmentymämenetelmä */ public void run () { /* anonyymin funktion määrittäminen signaalinkäsittelijäksi */ this . foo . connect (( s ) => { stdout . printf ( "Lambda lauseke %s! \n " , tämä . nimi ); }); /* lähettää signaalin */ tämä . foo (); } /* sovelluksen aloituspiste */ public static int main ( merkkijono [] args ) { foreach ( string arg in args ) { var sample = new AdvancedSample ( arg ); näyte . juosta (); /* "näyte" vapautetaan lohkon lopussa */ } return 0 ; } } Työskentely merkkijonojen kanssaToimittaja | Syntaksin korostus | Koodin muotoilu | Staattinen koodianalyysi | Automaattinen täydennys | Siirry määritelmään | Kattava dokumentaatio | Integroitu rakentaminen, testaus ja virheenkorjaus |
Anjuta | Joo | Joo | Joo | ||||
atomi | Joo | Joo | Joo | ||||
peruskäyttöjärjestelmäkoodi | Joo | ||||||
emacs | Joo | ||||||
Geany | Joo | Joo | Joo | ||||
gedit | Joo | Joo | |||||
GNOME Builder | Joo | Joo | Joo | Joo | Joo | ||
IntelliJ IDEA | Joo | ||||||
meditaatio | Joo | ||||||
SublimeText | Joo | Perus | |||||
TextMate | Joo | Perus | |||||
vim | Joo | Joo | Joo | ||||
Visual Studio Code | Joo | Joo | Joo | Joo | Joo | Osittainen video ("Vala Debug" YouTubessa) | |
Kate | Joo |
Tällä hetkellä Valalle on kehitteillä neljä kielipalvelintoteutusta:
GNOME | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ydinsovellukset |
| ||||||||||||||||
Sovellukset |
| ||||||||||||||||
Komponentit | |||||||||||||||||
Alustan arkkitehtuuri |
| ||||||||||||||||
Yhteisö | |||||||||||||||||
Ihmiset | |||||||||||||||||
|
Ohjelmointikielet | |
---|---|
|
C# | |
---|---|
Versiot |
|
PÄÄLLÄ |
|
Liittyvät |