Prueba el lenguaje Vala / Ingeniería de Frambuesa Pi

Idiomas son muchos en Frambuesa Pi. Ancianos como C pasando por el moderno (Python ?) o pesado como Java, la elección es amplia ! Nuevo apoyo El proyecto Gnome, Ingeniería sólo asentarse en nuestro frambuesa. más popular de programación-idiomas-de-2014_52efd3a81d277_w1500En la página oficial Ingeniería Usted encontrará la base para el uso de esta lengua. Pero empecemos instalando lo es para el idioma :

  1. Actualización del sistema
    apt - actualización && apt - get upgrade y
  2. Instalar el compilador VALA la OMS apoya la lengua ingeniería. También se necesitará el compilador GCC.
    apt - get install gcc Volac-0.16

    Captura de pantalla 2014-05-05 Para 22.52.29

  3. Ahora puede crear su primer programa : Hola mundo ! (Lui est vraiment universel 😉 )
    init
            print "Hola mundo"
  4. Empezar a compilar con el comando Volac.
  5. Restos de lanzar el programa generado : Hola. Captura de pantalla 2014-05-05 Para 22.59.22

Entonces todo está bien, pero ¿cuál es el punto de esta lengua ?

Te voy a dar la lista (parcial) sus beneficios :

  • Facilidad de programación. El código es similar a la pitón (con un poco de Boo, Delphi o codificar la D). Tan fácil de entender !
  • Rendimiento. Allí donde los lenguajes de alto nivel usan un proceso de interpretación (Via pre compilación o no), El código generado ingeniería es c con excelente rendimiento en ejecución.
  • La posibilidad de utilizar objetos de tipo GObject. Se trata de (en el contorno) equivalente a objective-C para Apple. Ultra práctica para montar una interfaz gráfica portátil en pocas líneas. Se necesitan solamente libc y Glib.
  • Ligeros ejecutables. El clásico Hola mundo es 2,9 Kb y el mismo GTK es inferior a 6 Kb.
  • Enlace con sistemas de bibliotecas directamente en ingeniería. No de superposición como en Python para el ejemplo de encuadernación.

Bueno en, No todo es color de rosa y hay inconvenientes :

  • Que se compile. C’est l’inconvénient des avantages 🙂 Un script python peut être facilement envoyé par email, modificado e implementado. Aquí no es necesariamente tan simple (surtout si vous envoyé le code C généré ou que la personne n’a pas Vala d’installé).
  • Y el último : una comunidad existente pero bastante pequeño. Por lo tanto permanece limitado apoyo durante la fase de aprendizaje. Yo Galera ! 🙂

Así que aquí en el (muy) grandes líneas que pueden decirse de la lengua.

Te doy más ejemplos :

Una pantalla roja con texto desde arriba usando la biblioteca de maldiciones :

[Guión = 8]
uses
        Curses

init
        initscr ()

        start_color ()
        init_pair (1, Color.YELLOW, Color.RED)

        Victoria var = nueva ventana (LÍNEAS - 8, COLLARES - 8, 4, 4)
        Win.bkgdset (COLOR_PAIR (1) | Attribute.BOLD);
        Win.addstr ("Servidor principal de Frambuesa Pi");
        win.Refresh();
        Win.clrtobot ();
        Win.getch ();

        endwin ()

Para compilar (Si tu archivo se llama test.GS) :

Volac - pkg maldiciones x - lncurses test.gs

El resultado :

Captura de pantalla 2014-05-06 Para 22.54.11

Con GTK instalado, Usted puede crear rápidamente windows :

[Guión = 4]
uses
    Gtk

init
    Gtk.init (REF args)
    var wintest = new win_test()
    WINTEST.SHOW_ALL ()
    GTK.Main ()

clase win_test : Window
    init
        title = "Servidor principal de Frambuesa Pi"
        default_height = 250
        default_width = 250
        window_position = WindowPosition.CENTER

        var button = new Button.with_label ("Pulse aquí")
        Button.Clicked.Connect (empujado)

        Destroy.Connect(GTK.main_quit)

        Añadir(botón)

    Def empujado (BTN : Botón)
        title = "Lo hizo clic en"
        BTN.Label = "Me presionó !"

La compilación avec GTK 3 instalado :

Volac--paquete gtk  -gtk.gs 3.0

Captura de pantalla 2014-05-06 Para 23.08.48

Simple, rápido y eficiente !

Bon et pour notre Raspberry Pi ? Es casi fácil. Pero bueno el terreno ! 🙂

  1. Instalar la biblioteca de C wiringPi. Le tutoriel est sur la página oficial.
  2. CRera un enlace (el encuadernación) entre wiringPi y Vala/ingeniería. Por eso se crea el archivo /usr/share/vala-0.16/VAPI/wiringPi.vapi con el siguiente contenido :
    [CCode (cheader_filename = "wiringPi.h")]
    public const int NUM_PINS;
    [CCode (cheader_filename = "wiringPi.h")]
    public const int entrada;
    [CCode (cheader_filename = "wiringPi.h")]
    public const int salida;
    [CCode (cheader_filename = "wiringPi.h")]
    public const int PWM_OUTPUT;
    [CCode (cheader_filename = "wiringPi.h")]
    public const int GPIO_CLOCK;
    
    [CCode (cheader_filename = "wiringPi.h")]
    public const int baja;
    [CCode (cheader_filename = "wiringPi.h")]
    public const int alta;
    
    [CCode (cheader_filename = "wiringPi.h")]
    public const int PUD_OFF;
    [CCode (cheader_filename = "wiringPi.h")]
    public const int PUD_DOWN;
    [CCode (cheader_filename = "wiringPi.h")]
    public const int PUD_UP;
    
    [CCode (cheader_filename = "wiringPi.h")]
    public const int PWM_MODE_MS;
    [CCode (cheader_filename = "wiringPi.h")]
    public const int PWM_MODE_BAL;
    
    [CCode (cheader_filename = "wiringPi.h")]
    public const int INT_EDGE_SETUP;
    [CCode (cheader_filename = "wiringPi.h")]
    public const int INT_EDGE_FALLING;
    [CCode (cheader_filename = "wiringPi.h")]
    public const int INT_EDGE_RISING;
    [CCode (cheader_filename = "wiringPi.h")]
    public const int INT_EDGE_BOTH;
    
    [CCode (CNAME = "int", cprefix = "WPI_", has_type_id = false)]
    [Banderas]
    Public enum Foo {
        FATAL,
        CASI
    }
    
    [CCode (CNAME = "wiringPiSetup")]
    public int wiringPiSetup ();
    [CCode (CNAME = "pinMode")]
    public void pinMode (pin int, int modo);
    [CCode (CNAME = "digitalRead")]
    public int digitalRead (pin int);
    [CCode (CNAME = "digitalWrite")]
    public void digitalWrite (pin int, valor int);
    
    [CCode (CNAME = "piBoardRev")]
    public int piBoardRev ();
    
    namespace wiringPi {
    	[CCode (CNAME = "int", cprefix = "WPI_MODE_", has_type_id = false)]
    	Public enum WpiMode {
       		PERNOS,
        	GPIO,
        	GPIO_SYS,
        	PHYS,
        	PIFACE,
        	OPENNSL
    	}
    }
    

    Este archivo incluye parte de las definiciones en la biblioteca de C. Hice todo pero al principio hay ! Puede hacer la configuración y cambiar la posición de un GPIO.

  3. Reste le programme qui fait clignoter une LED branchée sur le GPIO 17. Je l’ai nommé genius_test.gs
    uses 
    	wiringPi
    init
    	stdout.printf ("Raspberry Pi Board revision : %d\n", piBoardRev());
    	wiringPiSetup();
    	pinMode (0, SALIDA) ;
    	for var i = 0 Para 6
    		digitalWrite (0, ALTA);
    		Thread.usleep (500*1000);
    		digitalWrite (0, BAJA);
    		Thread.usleep (500*1000);
    
  4. Y finalmente la compilación !
    Volac pkg - wiringPi -X - lwiringPi genie_test.gs ; ./genie_test
    

Así que esto es con un LED que parpadea a través de un programa que es de menos de 6 kb y sin tener que pasar por la codificación más compleja de C. Usted puede integrarlo fácilmente en una interfaz GTK por ejemplo.

Puedes jugar ahora ! 🙂

Posiblemente le gustan también....