2012-05-01 27 views
9

Sto lavorando con un certo codice legacy C, che ho bisogno di refactoring e, in generale pulire, per rimuovere la programmazione tipo spaghetti, rispettare il principio DRY eccLa produzione di Vala e Genie è pronta?

Stavo pensando di riscrivere in C++, ma non lo faccio voglio andare così lontano, e vorrei rimanere il più vicino possibile al C (mentre uso alcuni concetti di OOP [senza doverli codificare manualmente]).

Recentemente ho incontrato GObject, Vala e Genie. Gli ultimi due sono abbastanza recenti. Qualcuno è a conoscenza del fatto che Vala o Genie siano utilizzati nel codice di produzione?

Ultimo ma non meno importante - c'è una lista di confronti tra Pro e contro tra le due lingue. Mi sto appoggiando un po 'verso Genie perché adoro Python e non sono molto appassionato di C#, ma l'insistenza di Genie (apparente?) Sulle schede potrebbe essere un po' fastidiosa nella pratica - sarei interessato a un elenco di pro e contro per il due lingue (assumendo che una o entrambe siano pronte per l'uso in produzione).

Come parte, sto sviluppando su Linux, quindi qualsiasi problema relativo a Windows non è rilevante per quanto mi riguarda.

+0

si potrebbe anche prendere in considerazione [Objective C] (http: //en.wikipedia. org/wiki/Objective_c), [D] (http://en.wikipedia.org/wiki/D_%28programming_language%29), e possibilmente un [gruppo di altre lingue] (http://en.wikipedia.org/ wiki/Object-oriented_programming # OOP_languages) simile a "C con oggetti". – pmg

risposta

10

Unity, l'interfaccia utente utilizzata da tutte le versioni recenti di Ubuntu, utilizza Vala.

Here is a list di applicazioni sviluppate utilizzando Vala. Alcuni di questi fanno parte dell'installazione GUI predefinita di alcune importanti distribuzioni GNU/Linux.

E per quanto riguarda Genie: è un altro linguaggio (con sintassi simile a Python) compreso dal compilatore Vala. Quindi è solo questione di quale sintassi preferisci (secondo me). Ecco una citazione dalla guida di lingua Genie, che sembra dire la stessa cosa:

Genie è molto simile a Vala in funzionalità, ma differisce nella sintassi permettendo allo sviluppatore di utilizzare più pulito e meno codice per compiere la stesso compito.

Come Vala, Genie ha gli stessi vantaggi:

  • programmi scritti in Genie dovrebbe avere avere prestazioni simili e l'utilizzo delle risorse a quelle scritte direttamente in Vala e C
  • Genie ha nulla della gonfiare e spese generali che viene fornito con molti altri linguaggi di alto livello che utilizzano una macchina virtuale (ad esempio Python, Mono, Java)
  • Corsi in Genie in realtà sono GObjects modo Genie può essere utilizzato per la creazione di codice piattaforma come i widget e le librerie in cui GObjects sono necessari per la rilegatura ad altro r lingue

Se non ti piace TAB caratteri, è possibile utilizzare gli spazi invece:

[indent=2] //two space indent instead of TAB 
init 
    print "Hello World" 
+1

Grazie. Penso che andrò con Vala. È ancora in fase di sviluppo (sembra che l'ultimo cambio di codice a Genie sia stato fatto qualche anno fa). –

+1

Il fraseggio "I programmi scritti in Genie ... a quelli scritti * direttamente * in Vala e C" sono piuttosto indicativi.Quale livello di indirezione viene introdotto usando Genie? Capisco che Vala/Genie compili prima in C prima di compilarlo in binari, ma quella frase fa sembrare che i programmi scritti in Genie siano prima compilati in Vala prima di essere compilati in C, quindi in binari. O forse lo swahili in mezzo. Non ne ho idea. – robru

+0

Ho controllato il codice sorgente di Unity, posso vedere solo le estensioni cpp, c, py lì. – exebook