Vala?

Liittynyt
02.01.2017
Viestejä
215
Koodailen Valalla yhtä harrasteprojektia vapaa-ajalla, takoituksena koodailla softaa joka pyörii komentorivi-sovelluksena serverin päässä. Miksi valitsin Valan? No puhtaasti siksi koska se on vaan v-tun miellyttävä kieli koodailla ja saa nopsaan toteutettua asioita :)

Pelkkä C-kieli on niin jäykkä, ei olioita, merkkijonojen käsittelyt funktioilla jne. C++ löytyy toki oliot ja muut, mutta en tykkää sen syntaxista ja C++ -kielessä joutuu funtsimaan aika paljon asioita "onko oikein koodattu". Hallitsen kyllä C++ kielen mielestäni suht ok, mutta minusta C++ on vanhanaikainen syntaksiltaan verrattuna modernimpiin kieliin (C#, Java jne.)

Vala-kielihän on tarkoitettu tähän:
GObject - Wikipedia

Eli Vala on tarkoitettu ensisijaisesti Gnome softan tekoon, mutta onko tuosta mitään haittaa jos softan on tarkoitus pyöriä vain Linux-serverin päässä komentorivi tasolla? Lähinnä jos rajapinnan kautta tulee pyyntö toteuttaa asia, tämä softa tekee sen ja tulos pistetään takaspäin. Eli mietin tuoko Valalla koodaaminen jotain puutteita tässä mielessä?

En ole varma edes miksi teen tätä softaa harrastuksena, turhaa aikaa viikonloppuisin? Sanotaanko kokemukset ex-työpaikasta ja nykyisestä työpaikasta, tiedän softan tarpeen yrityksissä, "jospa tämmöinen softa olisi olemassa" :)
 
Tämä tuli väärään osastoon, sorry, piti mennä tuonne ohjelmointi puolelle
 
En ole Valaa käyttänyt, tutustunut vain hyvin pintapuolisesti, mutta ei siinä kai ole mitään estettä käyttää Valaa. Käyttäähän jotkut Qt:kin yleisluontoisena kirjastona C++:lle, vaikkei tekisikään graafista ohjelmaa. Miten mahtaa olla kirjastoja? Jos sinun tarvitsee tehdä jotain erikoisempaa. Mitään CPAN:a tai PyPi:ä vastaavaa ei taida Valalle olla olemassa? C-kirjastolle bindingsien tekeminen ei taida olla hirmu vaikeaa?

Ajattelin itsekin opetella mahdollisesti vähän Valaa, kun vaikuttaa kiinnostavalta kieleltä. Vähäinen käyttäjäkunta on pieni miinus. En osaa kyllä C#:kaan, että joutuu syntaksiakin opettelemaan. Suorituskyky on varmaan sama kuin C:llä, koska transpiloituu C:ksi? Käytätkö jotain IDE:ä?
 
Suorituskyky on varmaan sama kuin C:llä, koska transpiloituu C:ksi?
Ottamatta kantaa Valan suorituskykyyn (koska en siitä tiedä) on pakko todeta, että tässä taitaa olla vähän virheellinen päättelyketju. Haskellia taisi vielä melko vastikään pystyä kääntämään C:ksi, mutta suorituskykyyn se ei tainnut vaikuttaa. Samoin vastaavalla logiikalla kaikki käännetyt kielet ovat yhtä suorituskykyisiä, koska ne käännetään konekielelle. Kuitenkin jo C:n ja C++:n välillä on eroa suorituskyvyssä, vaikka molemmat yleensä käännetäänkin konekielelle.
 
Ottamatta kantaa Valan suorituskykyyn (koska en siitä tiedä) on pakko todeta, että tässä taitaa olla vähän virheellinen päättelyketju. Haskellia taisi vielä melko vastikään pystyä kääntämään C:ksi, mutta suorituskykyyn se ei tainnut vaikuttaa. Samoin vastaavalla logiikalla kaikki käännetyt kielet ovat yhtä suorituskykyisiä, koska ne käännetään konekielelle. Kuitenkin jo C:n ja C++:n välillä on eroa suorituskyvyssä, vaikka molemmat yleensä käännetäänkin konekielelle.

Tässäkin taas syytä ottaa huomioon, että C++ ei pakota porukkaa varsinaisesti mihinkään muottiin. Maksat ainoastaan siitä mitä käytät.

Jos tuota nyt rupeaa kirjoittamaan "akateemisella otteella", niin varmasti tulee hitaampaa lopputulosta. Onneksi kuitenkin kieli itsessään mahdollistaa valikoimisen.

Itse pääohjelman käynnistystä lukuunottamatta ( flying circus ), en nyt varsinaisesti keksi mikä "omaa valintaa" lukuunottamatta väistämättä aiheuttaisi eroa suorituskyvyssä?
 
Tässäkin taas syytä ottaa huomioon, että C++ ei pakota porukkaa varsinaisesti mihinkään muottiin. Maksat ainoastaan siitä mitä käytät.

Jos tuota nyt rupeaa kirjoittamaan "akateemisella otteella", niin varmasti tulee hitaampaa lopputulosta. Onneksi kuitenkin kieli itsessään mahdollistaa valikoimisen.

Itse pääohjelman käynnistystä lukuunottamatta ( flying circus ), en nyt varsinaisesti keksi mikä "omaa valintaa" lukuunottamatta väistämättä aiheuttaisi eroa suorituskyvyssä?
Pointtini ei ollut ihan tuossa, ja näköjään esimerkiksi olisi pitänyt kaivaa jokin selkeästi C:hen verrattuna erilainen kieli ettei huomio olisi kiinnittinyt aika tarpeettomaan yksityiskohtaan.
 
Ottamatta kantaa Valan suorituskykyyn (koska en siitä tiedä) on pakko todeta, että tässä taitaa olla vähän virheellinen päättelyketju. Haskellia taisi vielä melko vastikään pystyä kääntämään C:ksi, mutta suorituskykyyn se ei tainnut vaikuttaa. Samoin vastaavalla logiikalla kaikki käännetyt kielet ovat yhtä suorituskykyisiä, koska ne käännetään konekielelle. Kuitenkin jo C:n ja C++:n välillä on eroa suorituskyvyssä, vaikka molemmat yleensä käännetäänkin konekielelle.
Se hyöty tuossa ei tule niinkään siitä että "C on suorituskykyisempää", vaan siitä että C:lle (ja C++):lle on tässä vaiheesa tarjolla varsin pitkälle kehitettyjä kääntäjiä jotka osaavat optimoida koodia paremmin kuin monen uudemman kielen omat kääntäjät. C:n kautta kääntämällä korkeamman tason kielien kanssa pääsee hyödyntämään noita C:n/C++:n parempia kääntäjiä.
 
Mikäs siinä Valaa käyttäessä, kirjastotuki tosiaan itselläkin tulee mieleen ekana mahdollisena puutteena. Jotain backendejä koodatessa ei tulisi nykyään mieleenkään käyttää C:tä tai C++:aa.
 
Se hyöty tuossa ei tule niinkään siitä että "C on suorituskykyisempää", vaan siitä että C:lle (ja C++):lle on tässä vaiheesa tarjolla varsin pitkälle kehitettyjä kääntäjiä jotka osaavat optimoida koodia paremmin kuin monen uudemman kielen omat kääntäjät. C:n kautta kääntämällä korkeamman tason kielien kanssa pääsee hyödyntämään noita C:n/C++:n parempia kääntäjiä.
Heitän villin veikkauksen, että myös C-koodin generointi hidastaa suorituskykyä, koska generoitu C-koodi voi olla heikkolaatuista. Tosin Valan tapauksessa tämä ei liene yhtä suuri ongelma, koska Valan koko backend taitaa perustua C-koodin generointiin (jolloin generoitu C-koodi lienee monissa tapauksissa varsin hyvälaatuista), mutta se ei ole olennainen yksityiskohta, koska puhuin alun perin yleisellä tasolla. Generoitavan kielen kääntäjän optimoinneista lienee joka tapauksessa merkittävää apua vain, mikäli lähdekielen kääntäjä on alun perinkin tarpeeksi optimoitu, jotta se pystyy generoimaan tarpeeksi hyvälaatuista koodia. Lisäksi lähdekielessä (esim. Valassa) voi olla rakenteita, joita ei yksinkertaisesti ole mahdollista kääntää kovin tehokkaaksi C-koodiksi, jolloin vastaan ohjelman kirjoittaminen suoraan C:llä olisi joka tapauksessa tehokkaampaa.
 
Enpä muistanut tätä aloitusta kun viinan voimalla tuli kirjoiteltua =D

Suorituskyky tässä ei ole ongelmana, töissä on vastaavanlainen pulikka (joka on erkeleen kökkö ylläpidettävä, pthyi) on koodattu PHP-kielellä ja hyvin se pelittää suorituskykynsä puolesta, mutta niskavillat nousee pystyy kun sinne pitäisi tehdä joku muutos. Tämän oman pulikan olisi tarkoitus tehdä sama asia +10 muuta lisäksi, eli asiat jotka olisi ollut kultaa myös entisessä työpaikassa.

Bindaus C-kieleen onnistuu helposti ja käytän sitä myös tässä. Käytän silloin kun tuntuu että helpompi/nopeampi toteuttaa asia C-kielellä. En varmaan tätä Vala-kieltä käyttäisi jos bindaus C-kieleen ei onnistuisi.

Näkyihän tuo tuossa linkissäkin lukevan: GObject library is now used by many non-GUI programs such as command-line and server applications, eli toiminee tämä Vala tässä tarkoituksessa :)

Edit: Varsinaista IDEä ei ole käytössä, mutta mikkisoftin VS Code:lla koodailen tätä (+Vala plugin). Tein itse Valalla avuksi oman buildi systeemin jonka avulla voi kääntää vain tiedostot joihin on tullut muutos, ettei koko konkkaronkkaa käännetä joka kerta uusiksi. Tähänkin on varmaan jo omia työkaluja olemassa, mutta koin aikoinaan nuo olemassa olevat jotenkin hankalaksi ottaa käyttöön?
Projects/Vala/Documentation/ParallelBuilds - GNOME Wiki!
 
Viimeksi muokattu:

Uusimmat viestit

Statistiikka

Viestiketjuista
261 787
Viestejä
4 547 083
Jäsenet
74 849
Uusin jäsen
ookooo

Hinta.fi

Back
Ylös Bottom