Vala | |
---|---|
Semántica | programación estructural , imperativa , orientada a objetos |
clase de idioma | lenguaje de programación orientado a objetos |
Apareció en | 2006 |
Autor | Jürg Billeter, Raffaele Sandrini |
extensión de archivo | .valao.vapi |
Liberar | 0.56.3 [1] (3 de septiembre de 2022 ) |
sistema de tipos | estricto, estático |
Implementaciones principales | Proyecto de escritorio GNOME |
sido influenciado | C , C++ , Groovy , Java , C# |
Licencia | LGPL |
Sitio web | wiki.gnome.org/proyectos/… |
sistema operativo | multiplataforma |
Archivos multimedia en Wikimedia Commons |
Vala es un lenguaje de programación diseñado para la programación de aplicaciones y sistemas basado en las bibliotecas GLib Object System ( GObject ) del entorno de escritorio GNOME / GTK+ . El lenguaje fue desarrollado por Jürg Billeter y Raffaele Sandrini.
Vala es muy similar en sintaxis a Java e implementa completamente el enfoque orientado a objetos . Admite introspección , inferencia de tipos , recolección de basura de conteo de referencias , funciones lambda , concepto de señales y ranuras similar a Qt , pero implementado a nivel de lenguaje, tipos de cadenas , programación genérica , división de matrices , operador de recolección foreach , delegados , cierres , interfaces , propiedades y excepciones .
Una característica del sistema de desarrollo es que el programa Vala se traduce a un programa C , que, a su vez, se compila en el código ejecutable de la plataforma de destino con bibliotecas C estándar , Glib y se ejecuta a la velocidad de la aplicación C compilada en el destino. código objeto de la plataforma . Para obtener código C traducible, debe especificar la opción -C en el compilador Vala. Si el programa tiene una interfaz gráfica de usuario , la biblioteca GTK+ se usa durante la compilación (opción --pkg gtk+-3.0 del compilador). Gracias a este enfoque, el código Vala compilado es binario compatible con las bibliotecas del sistema escritas en C. Para conectar bibliotecas de terceros a los programas Vala, se utilizan archivos vapi especiales que describen la interfaz de la biblioteca. Para muchas bibliotecas, ya hay archivos vapi incluidos en la entrega estándar del compilador Vala [2] . Además, existen archivos vapi para bibliotecas compatibles con usuarios de terceros, que aún no se incluyen en la distribución estándar [3] .
Hay compilaciones no oficiales del compilador de Windows mantenidas por terceros.
El lenguaje Vala fue creado para el desarrollo eficiente de aplicaciones complejas y aplicaciones de sistema en la plataforma GNOME con una interfaz gráfica de usuario basada en la biblioteca estándar GTK+ utilizando herramientas de lenguaje y técnicas de programación modernas.
El lenguaje orientado a objetos de Java proporciona suficiente potencia al programador, pero los programas se ejecutan en máquinas virtuales , lo que hace imposible acceder a ellos directamente desde el código binario C , así como el uso de bibliotecas de bajo nivel del sistema como GObject en dichos programas. Por tanto, este lenguaje, como cualquier otro que ejecuta bytecode en máquinas virtuales, no puede ser aceptado dentro de la plataforma GNOME . Las aplicaciones administradas también tienen limitaciones de rendimiento, lo cual es crítico para el funcionamiento de algunos programas (por ejemplo, de sistema) que deben ejecutarse en código binario ( ABI ). Esta fue la razón del surgimiento del nuevo idioma Vala.
Un sencillo programa " Hola, mundo "
void main () { print ( "Hola, mundo \n " ); }Programa " Hello, World " que demuestra un enfoque orientado a objetos
clase Muestra { void ejecutar () { stdout . printf ( "Hola mundo \n " ); } static int main ( cadena [] args ) { var muestra = nueva muestra (); muestra _ ejecutar (); devolver 0 ; } }Este es un ejemplo del uso de GTK+ para crear programas GUI en Vala:
utilizando GTK ; int principal ( cadena [] argumentos ) { Gtk . init ( argumentos de referencia ); varwindow = nueva ventana ( ); ventana _ título = "¡Hola mundo!" ; ventana _ borde_ancho = 10 ; ventana _ posición_ventana = PosiciónVentana . CENTRO ; ventana _ establecer_tamaño_predeterminado ( 350 , 70 ); ventana _ destruir _ conectar ( Gtk . main_quit ); var label = new Label ( "¡Hola, mundo!" ); ventana _ añadir ( etiqueta ); ventana _ mostrar_todo (); gtk . principal (); devolver 0 ; }El lenguaje Vala se usa activamente para desarrollar aplicaciones para GNOME , en particular, para escribir aplicaciones fundamentalmente nuevas que satisfacen las necesidades de los usuarios de GNU Linux . El uso de Vala se está desarrollando:
Si tiene problemas para compilar el ejemplo, pruebe la última versión de Vala.
Simple Hola, mundo:
void main () { print ( "Hola, mundo \n " ); }Compilando y ejecutando:
$ valac hello.vala
$ ./hello
En el modo de secuencias de comandos:
# !/ usr / bin / vala print ( "hola, mundo \n " );Ejecutar: haga que el archivo sea ejecutable use el comando vala (entonces la primera línea es opcional)
$ vala hello.vala
Lectura de la entrada del usuario vacío principal () { salida estándar . printf ( "Ingrese su nombre: " ); cadena nombre = stdin . leer_linea (); salida estándar printf ( @"¡Hola, $nombre! \n " ); } Leer y escribir en un archivoEste es un procesamiento muy simple de archivos de texto. Para E/S avanzada, use las poderosas clases de flujo GIO .
vacío principal () { prueba { // Escribe cadena contenido = "hola mundo" ; FileUtils . set_contents ( datos . txt , contenido ); // Leer lectura de cadena ; FileUtils . get_contents ( nombre de archivo , fuera de lectura ); salida estándar printf ( @"El contenido del archivo '$filename' es: \n $leer \n " ); } captura ( Error de archivo e ) { stderr _ printf ( @"$(e.mensaje) \n " ); } } Procesos de desove void main () { try { // Proceso sin bloqueo . spawn_command_line_async ( "ls" ); // Bloqueo (espera a que termine el proceso) Proceso . spawn_command_line_sync ( "ls" ); // Bloqueo con cadena de salida standard_output , standard_error ; int exit_status ; proceso _ spawn_command_line_sync ( "ls" , out standard_output , out standard_error , out exit_status ); // imprime la salida del proceso exec stdout . printf ( salida_estándar ); } catch ( SpawnError e ) { stderr . printf ( "%s \n " , e . mensaje ); } } Ejemplo avanzado /* clase derivada de GObject */ public class AdvancedSample : Object { /* propiedad automática, el campo de datos está implícito */ public string name { get ; conjunto ; } /* señal */ señal pública void foo (); /* método de creación */ public AdvancedSample ( string name ) { this . nombre = nombre ; } /* método de instancia pública */ public void run () { /* asignando una función anónima como manejador de señales */ this . foo _ connect (( s ) => { stdout . printf ( "Expresión lambda %s! \n " , este . nombre ); }); /* emitiendo la señal */ esto . foo (); } /* punto de entrada de la aplicación */ public static int main ( string [] args ) { foreach ( string arg in args ) { var sample = new AdvancedSample ( arg ); muestra _ ejecutar (); /* "muestra" se libera cuando finaliza el bloque */ } return 0 ; } } Trabajando con cadenasEditor | Resaltado de sintaxis | Formato de código | Análisis de código estático | Finalización automática | Saltar a definición | Documentación completa | Compilación, prueba y depuración integradas |
Anjuta | Sí | Sí | Sí | ||||
átomo | Sí | Sí | Sí | ||||
código de sistema operativo elemental | Sí | ||||||
emacs | Sí | ||||||
geany | Sí | Sí | Sí | ||||
gedit | Sí | Sí | |||||
Constructor de GNOME | Sí | Sí | Sí | Sí | Sí | ||
IDEA IntelliJ | Sí | ||||||
meditación | Sí | ||||||
Texto sublime | Sí | Básico | |||||
compañero de texto | Sí | Básico | |||||
empuje | Sí | Sí | Sí | ||||
código de estudio visual | Sí | Sí | Sí | Sí | Sí | Video parcial ("Vala Debug" en YouTube) | |
Kate | Sí |
Actualmente hay 4 implementaciones de servidores de idiomas en desarrollo para Vala:
GNOMO | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Aplicaciones |
| ||||||||||||||||
Aplicaciones |
| ||||||||||||||||
Componentes | |||||||||||||||||
Arquitectura de plataforma |
| ||||||||||||||||
Comunidad | |||||||||||||||||
Gente | |||||||||||||||||
|
Lenguajes de programación | |
---|---|
|
C# | |
---|---|
Versiones |
|
EN | |
Relacionado |