On the other side of the screen, it all looks so easy

Just a Ride

Dicevo altrove di aver provato Vala, il linguaggio C#-like scritto usando GLib e GObject come base, e che viene “compilato” in C invece di usare una VM e un linguaggio intermedio1.

Ho trovato dei difetti nel layer di traduzione, ma sono dovuti essenzialmente alla giovane età del progetto, e il team di sviluppo sta raccogliendo intorno a sé una quantità di collaboratori più o meno saltuari che fa ben sperare. In più, la mera esistenza di Vala sta spingendo a completare il supporto per l’introspezione in GObject2.

Quello che più mi interessa, però, è la possibilità di avere un linguaggio a medio/alto ufficialmente sanzionato da GNOME - come Objective-C da Apple. Intendiamoci: la quantità di binding già presenti è enorme, e già oggi se volessi scrivere un’applicazione per GNOME potrei farlo in Perl, come in Java, come in C# e perfino con quel train wreck di Python3. Tuttavia, i bindings sono quello che sono: si portano dietro virtual machine, ambienti di runtime, licenze, implementazioni patent encumbered e altre amenità.

Intendiamoci: non ho nulla contro le VM - a parte l’obiezione classica: “sto già usando una macchina virtuale su una macchina reale, perché devo usarne un’altra ancora per ogni linguaggio?”; tuttavia, e specie sulle macchine su cui lavoro, una virtual machine è già sufficiente - figuriamoci quattro o cinque. Mi piacerebbe che qualcuno prendesse Mono e ci portasse più di tre o quattro linguaggi; mi piacerebbe ancora di più che qualcuno prendesse Parrot e lo completasse. Mi piacerebbe, insomma, avere una macchina virtuale per tutti i linguaggi ad alto livello. Se non posso averla, allora tanto vale usare Vala.

  1. si potrebbe arguire come, in realtà, la VM usata sia il sistema operativo ospite, e che sicuramente esistono più piattaforme con un compilatore C che piattaforme che supportano Java o C# []
  2. ovvero la possibilità di avere meta-informazioni a runtime su una libreria, sulle API e sui tipi di dati esportati []
  3. che, spero, Python 3.0 affosserà definitivamente con tutte le modifiche arbitrarie alle API senza vere nuove feature; non ci resta, quindi, che sperare in IronPython per una implementazione sana di mente? non voglio pensarci []

8 Comments »

  1. Ikitt said,

    September 4, 2007 @ 08:25

    Vala mi solletica /molto/, devo dire, tanto piu` che stavo gia` cominciando a guarducchiare C# (en passant: molto meno peggio di quanto temessi). Da neofita quasi completo della piattaforma GNOME, chiedo: quanto e` pensabile costruire applicazioni basandosi su Vala, adesso, oggi?

  2. zefram said,

    September 4, 2007 @ 10:09

    @Ikitt: guardando la lista di librerie disponibili attraverso Vala, direi: molto realistico. in più, Vala può essere usato per scrivere librerie in C e realizzarne binding in altri linguaggi (dopo aver pulito a mano gli header auto-generati).

  3. MemEME said,

    September 4, 2007 @ 11:13

    @zefram: ciao.. ho provato anch’io Vala anche se non sono mai riuscito a scrivere un programma intero che avesse senso con qualsiasi linguaggio per Gnome spero che prima o poi ci riusciro’ con Vala.. le basi le ho ma non mi sono mai spinto oltre. L’unica cosa e’ che non sono del tutto d’accordo che Vala sia gia’ da ora usabile perche’ se non sbaglio han detto che potra’ essere soggetto a cambiamenti importanti in futuro che renderebbero magari inutilizzabile il codice gia’ scritto.. e’ un rischio che c’e’ anche in altri casi ma dipende da quanto e’ grande..

  4. zefram said,

    September 4, 2007 @ 11:25

    @MemEME: beh, il linguaggio non è stabile, essendo nuovo di trinca. l’incompatibilità all’indietro, però, è un problema con molti linguaggi - pensiamo a python 3.0, che richiederà la riscrittura; o a perl6. insomma: è un rischio presente in molti casi - quello che fa la differenza è la distanza tra release.

  5. Paolo Capriotti said,

    September 4, 2007 @ 12:42

    Consiglio di dare un’occhiata al progetto llvm (http://www.llvm.org). A chiunque si apprestasse a scrivere un’implementazione per un linguaggio suggerirei caldamente di basarsi su questa piattaforma.
    Sono anche girate delle idee per creare su llvm un’infrastruttura di interoperabilità multilinguaggio (oltre che multipiattaforma) stile .NET, ma purtroppo pare che ad oggi non ci sia niente di concreto in questo senso.
    Un uso importante nato abbastanza di recente è relativo alla pipeline di Mesa. Maggiori informazioni qui: http://zrusin.blogspot.com/2007/05/mesa-and-llvm.html

  6. Luigi said,

    September 4, 2007 @ 20:33

    Visto che è impossibile mettersi d’accordo su un linguaggio coinciso, semplice e performante, tanto vale condividere una vm e che ognuno programmi come vuole.

    Vala sarà al massimo un sostituto del C, ma non dei vari linguaggi di scripting

  7. riffraff said,

    September 5, 2007 @ 09:42

    bel post (anche quello in inglish), ma volevo chiedere una tua opinione: secondo te quante possibilità ha Vala di conquistare mind share all’interno della comunità esistente di sviluppatori gtk/glib?

    (Fermo restando che i binding ruby-gnome sono i più meglio di tutti ;) )

  8. zefram said,

    September 6, 2007 @ 08:40

    @riffraff: se, come sembra, ci sarà maggiore integrazione tra gdb, valgrind, profiler come oprofile e sysprof. e gli IDE per GNOME, allora Vala potrebbe avere sicuramente ottime chance. in ambienti embedded potrebbe addirittura dare un edge - perché, diciamocelo, chi userebbe ruby o python su un ARM? ruby è un disastro e python ha bisogno di ram aggiuntiva dopo mezz’ora.

RSS feed for comments on this post · TrackBack URI

Leave a Comment

Prevent comment spam using the intense, mighty, glaring, and far-famed Hashcash?