Desarrollando con VALA

Tema: 

Saludos a todos, esta es mi primera entrada.
Como preambulo quiero contarles que soy aficionado a la programacion, unos de los lenguajes que mas use fue C#, por razones ideologicas deje de usarlo y busque una alternativa, y la encontrè, es Vala de Gnome, software libre.
Tiene una sintaxis muy parecida a C# por lo que aprenderlo fue cuestion de unos dias.

Valac, el compilador, convierte el codigo fuente de Vala automaticamente a C y posteriormente ese codigo lo compila a codigo maquina.

Esto permite que los programas escritos en Vala puedan ser compilados y corridos en casi todas las plataformas. Es un lenguaje aun joven, no por eso menos potente.

No requiere de un framework para correr como lo hace un compilado de C#.

Esta es la pagina oficial del proyecto, enontraran informacion acerca del lenguaje, tutoriales, etc.

http://live.gnome.org/Vala

Los invito a conocerlo y aprenderlo.

Me despido, bendiciones a todos.

Comentarios

Velocidad de Vala

Bueno, el desempeño de Vala depende tambien como se haga el programa. Pero en las pruebas que he visto buscando en la red Vala es superior a c# en velocidad.
Esto porque compila a codigo maquina y no requiere el uso de algun framework como c# o Java.

Gracias por compartir

Imagen de carlosjulioperez

Gracias por compartir el dato edwinspire.

Voy a echarle una ojeada al lenguaje.

Saludos cordiales.

Carlos Julio Pérez Quizhpe
Full stack developer
https://ec.linkedin.com/in/carlosjulioperez

Vala me gusta.

Si comparamos la documentacion, ejemplos, librerias etc, entre Vala y c#, pues Vala queda muy por debajo.
Pero eso no significa que sea poco potente.
Cuando me cambie de c# a Vala heche de menos muchas cosas, muchas librerias que me hacian la vida mas facil.
En Vala algunas librerias tuve que implementarlas yo mismo, por ejemplo para controlar puertos seriales en windows y linux. Por cierto si a alguien le interesa esa libreria solo me avisan y listo, en los proximos pondre un blog acerca de ella.

Vala es un lenguaje joven, usa GLib, portada para Windows y Linux, su desarrollo va de la mano del equipo de Gnome.
Existen muchos bindings para poder usar una serie de librerias que actualmente ya existen y han sido escritas en C.

Hace unos dos años realice un software para un sistema de alarmas comunitarias con notificaciones via sms escrito en c#, hoy estoy reescribiendo todo ese codigo a Vala sin mayor problema.

Algo de Codigo con Vala

Basic Vala Samples

Hello World

A very simple Hello World program:

void main () {
print ("hello, world\n");
}
Compile and Run

$ valac hello.vala
$ ./hello
If the binary should have a different name:

$ valac hello.vala -o greeting
$ ./greeting
Reading User Input

void main () {
stdout.printf ("Please enter your name: ");
string name = stdin.read_line ();
if (name != null) {
stdout.printf ("Hello, %s!\n", name);
}
}
Vala provides the objects stdin (standard input), stdout (standard output) and stderr (standard error) for the three standard streams. The printf method takes a format string and a variable number of arguments as parameters.

Mathematics

Math functions are inside the Math namespace.

void main () {

stdout.printf ("Please enter the radius of a circle: ");
double radius = double.parse (stdin.read_line ());
stdout.printf ("Circumference: %g\n", 2 * Math.PI * radius);

stdout.printf ("sin(pi/2) = %g\n", Math.sin (Math.PI / 2));

// Random numbers

stdout.printf ("Today's lottery results:");
for (int i = 0; i < 6; i++) {
stdout.printf (" %d", Random.int_range (1, 49));
}
stdout.printf ("\n");

stdout.printf ("Random number between 0 and 1: %g\n", Random.next_double ());
}
Command-Line Arguments and Exit Code

int main (string[] args) {

// Output the number of arguments
stdout.printf ("%d command line argument(s):\n", args.length);

// Enumerate all command line arguments
foreach (string arg in args) {
stdout.printf ("%s\n", arg);
}

// Exit code (0: success, 1: failure)
return 0;
}
The first command line argument (args[0]) is always the invocation of the program itself.

Reading and Writing Text File Content

This is very basic text file handling. For advanced I/O you should use GIO's powerful stream classes.

void main () {
try {
string filename = "data.txt";

// Writing
string content = "hello, world";
FileUtils.set_contents (filename, content);

// Reading
string read;
FileUtils.get_contents (filename, out read);

stdout.printf ("The content of file '%s' is:\n%s\n", filename, read);
} catch (FileError e) {
stderr.printf ("%s\n", e.message);
}
}
Spawning Processes

void main () {
try {
// Non-blocking
Process.spawn_command_line_async ("ls");

// Blocking (waits for the process to finish)
Process.spawn_command_line_sync ("ls");

// Blocking with output
string standard_output, standard_error;
int exit_status;
Process.spawn_command_line_sync ("ls", out standard_output,
out standard_error,
out exit_status);
} catch (SpawnError e) {
stderr.printf ("%s\n", e.message);
}
}
First Class

/* class derived from GObject */
public class BasicSample : Object {

/* public instance method */
public void run () {
stdout.printf ("Hello World\n");
}
}

/* application entry point */
int main (string[] args) {
// instantiate this class, assigning the instance to
// a type-inferred variable
var sample = new BasicSample ();
// call the run method
sample.run ();
// return from this main method
return 0;
}
The entry point may as well be inside the class, if you prefer it this way:

public class BasicSample : Object {

public void run () {
stdout.printf ("Hello World\n");
}

static int main (string[] args) {
var sample = new BasicSample ();
sample.run ();
return 0;
}
}

La pagina es la siguiente:

https://live.gnome.org/Vala/BasicSample

Y mas ejemplos en:

https://live.gnome.org/Vala/Documentation#Sample_Code