31 días con Vala: primer día, creando un proyecto con MonoDevelop

Introducción

Realmente inspirado en 31 días con Windows Phone 7, he decidido escribir mi experiencia aprendiendo en 31 días este nuevo lenguaje de programación que la comunidad de Gnome está adoptando como alternativa a Mono.

Voy a suponer que tienes ya todo instalado, para ir directamente al grano para aprender este lenguaje. Yo he utilizado una máquina virtual en VirtualBox con Ubuntu 10.10 y con MonoDevelop instalado así como todas las dependencias instaladas.

Creando un proyecto nuevo

Cuando entramos en MonoDevelop nos encontramos la ventana de Bienvenida en ella dentro de Acciones Típicas, picamos sobre Iniciar una nueva solución/archivo y nos aparecerá la ventana de plantillas de MonoDevelop. En la parte derecha de la ventana podemos seleccionar las plantillas según el lenguaje, nosotros seleccionaremos Vala presentándose 4 tipos de proyectos:

  1. Empty Vala Project: como se puede observar sin traducir, es un proyecto en lenguaje Vala vacío, en realidad es una Solución que puede incluir otros proyectos.
  2. Proyecto de consola: un proyecto para correr bajo linea de comandos de linux (por ejemplo bash), al estilo CMD de Windows.
  3. Libreria compartida: un conjunto de clases codificadas en Vala.
  4. Plan de pruebas: conjunto de pruebas unitarias para agregar a nuestra solución. Ideal para los que nos gusta el TDD.

En la imagen inferior podemos ver una captura de la ventana de Nueva Solución y las 4 opciones que se nos plantea. Dentro de la captura vemos que hemos introducido los datos que nos van a llevar a crear un Hola Mundo en un Proyecto de Consola.

Creando un Proyecto de Consola

Cuando nos encontramos, damos a Aceptar nos encontramos ante el entorno de desarrollo de MonoDevelop. En él podemos seleccionar distintas formas de plantear el desarrollo cambiando de vistas. Para cambiar de vista, nos vamos al menú Ver y dentro de este menú nos encontramos con 4 opciones:

  1. Predeterminado: nos muestra la ventana de edición lo más grande posible para que sea posible un desarrollo realmente cómodo.
  2. Solución: nos muestra además la Ventana de Solucion, esta ventana la veremos más adelante cuando hablemos de la estructura de la solución en Vala. Es la que viene seleccionada por defecto.
  3. Visual Design: sin traducir todavía, al crear una solución de consola no he observado que tenga mucha utilidad.
  4. Depurar: es la vista de depuración, nos aparecen en la parte inferior de la pantalla las ventanas necesarias para depurar un programa, además de aparecer la Ventana de Solución en la parte izquierda.

Nosotros vamos a trabajar con la Vista de Solución, para ello nos vamos al menú Ver|Solución.

Contenido de la Solución

Para detallar el contenido de la solución por defecto, nos fijamos en la Ventana de Solución que aparece en la imagen inferior.

Como podemos ver únicamente incluye un archivo con la extensión vala, al llamarse main indica que este archivo incluye la entrada única main para el proyecto de consola. Por otro lado la carpeta Packages hace la función de Referencias en los proyectos con Mono en MonoDevelop o .Net en Visual Studio. Vemos que sólo tiene una referencia que es a la librería glib-2.0, que es el núcleo alrededor del cual se construye el proyecto Gnome.

Analizando el código fuente

Echemos un vistazo al código fuente:

using GLib;

public class HelloVala:GLib.Object
{
   public static int main(string[] args)
   {
      stdout.printf("Hola Mundo \n");
      return 0;
   }
}

Hay algunas apreciaciones que quiero recalcar en este pequeño código fuente:

  1. Por un lado, que no existe herencia por defecto de la clase Object de las clases, sino que hay que escribirla siempre.
  2. Además, que la escritura en el terminal se hace en la salida estandar (stdout) en vez de en Console. Esto es una herencia de C.
  3. Se utiliza la misma sentencia using que en C# para hacer llamadas a paquetes externos.
  4. Siempre hay que poner un return lo que sea cuando se escriba un programa, ya que la función main es un método más dentro de una clase.
  5. El nombre del archivo no coincide con el nombre de la clase, esto no es obligatorio en vala, aunque si recomendable si queremos tener un código organizado.
Anuncios
Deja un comentario

4 comentarios

  1. edwinspire

     /  enero 27, 2011

    Saludos.
    Estoy actualmente programando con monodevelop y c#, para la interface grafica uso GTK.
    Todo de maravilla.
    Quisiera cambiarme a vala por las caracteristicas que he leido que tiene.
    Pero… puedo usar Monodevelop y vala para crear interfaces graficas tan facilmente como lo hago con c#?
    He visto ejemplos de interfaces graficas con vala y GTK pero son codigo puro, en cambio con Monodevelop es tan facil como arrastrar y soltar.
    Tengo entendido que con vala se puede obtener un codigo fuente en C, este codigo fuente lo puedo compilar para que funcione en Guindous y recompliar para haya una version tambien para Linux?
    Si alguien me lo puede aclarar se lo agradeceria.
    Atte:
    Edwin De La Cruz
    Ecuador

    Responder
    • No lo he probado, pero puedes intentar esta solución, crear el interfaz de usuario con Glade, que genera un XML e importarlo al proyecto como un recurso. Para más información puedes visitar es enlace en el apartado Loading User Interface from XML File viene como hacerlo.

      Responder
  2. edwinspire

     /  enero 28, 2011

    Gracias por la ayuda.
    He encontrado poca informacion acerca de vala y definitivamente le apuesto al software libre por lo que quiero dejar de usar c#.
    GRACIAS

    Responder
    • C# también es una buena salida para desarrollar programas en Gnome, además te abre puertas para otro tipo de trabajos. Yo no descartaría su aprendizaje, sobre todo por si quieres migrar aplicaciones de Windows a Linux, o de C# a Vala.

      Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: