2010-01-30 21 views
41

Como programador que es nuevo en Vala, ¿cuál es su consejo número uno para alguien que es nuevo en el idioma?Vala: Gotchas, consejos y trucos

+9

Honestamente, creo que es un poco pronto para esta pregunta. Vala es un lenguaje completamente nuevo. Los consejos y trucos solo se aprenden a través de la experiencia, lo cual sería difícil para cualquier persona en este momento. – Kredns

+0

+1 Estoy de acuerdo con Lucas, y no veo que obtengas 550 respuestas de reputación (¡aunque me gustaría que se demuestre que estoy equivocado!) Así que aquí hay un voto por tu genuino y profundo interés en tu tema elegido :) – Russell

+4

It era demasiado temprano hace dos años ... ¿qué tal ahora? – robru

Respuesta

33

Depende en gran medida del origen del que provenga. Si vienes de C/C++/Java, el mejor consejo es aprender programación funcional. Vala admite cierres verdaderos, por lo que debe aprender (profundamente) cómo usar expresiones lambda. El mejor recurso para esto es Estructura e Interpretación de Programas de Computación por Abelson y Sussman. Fue el libro de texto introductorio para CS en MIT durante muchos años. Está disponible en línea gratis en http://mitpress.mit.edu/sicp/full-text/book/book.html, pero la versión en papel es más legible. Video conferencias están disponibles en http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/. Los conjuntos de problemas están disponibles gratis en http://icampustutor.csail.mit.edu/6.001-public/.

Aparte de eso, generalmente solo trato de aprender bien el estilo de programación C#. Es similar a Vala, pero hay muchos libros sobre ese tema.

capturas:

  • Tenga en cuenta Vala no tiene recolección de basura. Hace referencia al conteo.
  • Tenga en cuenta que Vala todavía se está desarrollando. Es un lenguaje bastante nuevo y no ha llegado a 1.0. El código que escriba ahora puede romperse en el futuro.
  • Si elige aprender Vala, tenga en cuenta que es un poco obsoleto, en lo que respecta a los conceptos del lenguaje de programación. No hace nada para ayudar con la programación multinúcleo. No hace nada para ayudar con la gestión de la memoria (el rendimiento del código se basa en gran medida en la coherencia del caché; los buenos lenguajes recogidos de basura pueden reorganizar la memoria para ayudar aquí). Es una envoltura alrededor de C, y viene con muchas de las limitaciones de C (aunque sí agrega cierres).

Además, uno de los carteles recomienda tinycc.Esta es una opción razonable para el desarrollo, pero debe usar un compilador optimizado como gcc (o si es compatible, el compilador de Intel) para la implementación.

+8

@ user274045: No veo la falta de un GC indeterminado como una desventaja, ni considero el * es un envoltorio C * como un problema. Se compila con el código de bytes nativo y se convierte en una biblioteca C. Puede tener algunas limitaciones de C, pero una mayor flexibilidad que C#. – IAbstract

+6

@ user274045: se contradice entre los puntos 2 y 3. * Es un lenguaje bastante nuevo ... * y luego * ... tenga en cuenta que es un poco obsoleto ... *. Incluso si está discutiendo el concepto de lenguaje, parece estar fusionando algunas de las mejores ofertas de C# con el poder de C. – IAbstract

+8

Sin contradicción. Si tuviera que, por ejemplo, hacer un nuevo lenguaje como Fortran hoy, sería nuevo y obsoleto. C tiene 38 años. Fue diseñado para computadoras 1000 veces más lentas y con 1000 veces menos memoria que lo que estoy escribiendo. Los procesadores fueron mucho más simples; era posible optimizar manualmente el código contando los ciclos de la máquina. El rendimiento no estuvo limitado por jerarquías de memoria y multinúcleo. No tenía los recursos para implementar compiladores o VM y JIT optimizados. Estamos en un mundo nuevo ahora. Compilado de bajo nivel cada vez más no puede competir con VM alto nivel de potencia y rendimiento. – user274045

8

Consejo: Usted puede acelerar su tiempo de construcción de manera significativa al usar TinyCC en lugar de gcc para el desarrollo. Vala usa la variable de entorno CC para seleccionar el compilador de back-end, por lo que "export CC = tcc" hará el truco.

21

Mi consejo n. ° 1 es aprender sobre GObjects. Son la columna vertebral del poder y la flexibilidad de Vala, y aprender a envolver varias bibliotecas con GObject les da a sus programas Vala acceso a todo lo que c puede vincular (¡eso es mucho!).

Éstos son algunos enlaces que pueden ser de interés:
* http://library.gnome.org/devel/gobject/stable/
* http://fosswire.com/post/2009/7/gobject-vala/
* http://developer.gnome.org/doc/tutorials/#gobject
* http://en.wikipedia.org/wiki/GObject

14
  1. Para múltiples recursos, este será un recurso general para un poco : Vala - GNOME Live!.
  2. Para conocer de cerca y personal con GObject: GObject Reference Manual.
  3. no sé qué fondo que está viniendo, pero se encuentra este útil: Vala Quick Intro for C# Programmers

En cualquier caso, el conocimiento de C será de gran utilidad. Nuestro equipo está considerando una renovación progresiva y la migración a Vala. Tenemos miembros con sólidos antecedentes en C#/C++ y este cambio de dirección (a lo largo del tiempo) será beneficioso para el rendimiento y la flexibilidad de nuestros productos.

2

Advertencia: No estoy familiarizado con Vala, pero espero que mi respuesta se aplique al aprendizaje de cualquier idioma nuevo. Solo quiero ofrecer algunas ideas en caso de que ayuden ... Definitivamente no debería recibir la recompensa por mi respuesta.

En pocas palabras: Depende de qué se está aprendiendo que ...

Si está intrigado porque es un lenguaje nuevo y genial, pero no está seguro de cómo se puede utilizar en la práctica, trata de recrear/portar algo con lo que está profundamente familiarizado para ver cómo se compara.

Si lo está aprendiendo porque cree que resuelve un problema específico al que se enfrenta, asegúrese de que vale la inversión inicial, ya que aprender cualquier idioma nuevo puede consumir mucho tiempo y puede haber una solución razonable en un lenguaje más familiar.

De lo contrario, se trata de cómo se aprende mejor. ¿Es alguien que necesita comprender los aspectos internos del lenguaje o simplemente hacer las cosas rápidamente? (¿O, como yo, en algún lugar en el medio?) Para el enfoque de hacer las cosas, solo busco tutoriales simples y trato de poner en marcha algo básico para ver cómo se siente. Si estoy disfrutando el idioma, entonces comenzaré a leer más información en profundidad sobre el idioma y a entender lo que sucede bajo el capó.

Cualquiera que sea su enfoque, la mejor de las suertes!

5

Aquí está mi consejo: lea la documentación oficial. :)

+2

+1: Si tuviera que responder de nuevo, creo que esta hubiera sido mi respuesta. – IAbstract

3

En general, Vala es excelente, pero una gran sorpresa que he encontrado es que, o bien su manejo de matrices es muy primitivo en comparación con el resto del lenguaje o su documentación tiene un gran vacío en él.

A pesar de una larga y dura mirada a través de la documentación, tutoriales, y Google, he concluido que:

  • La única manera de concatenar dos matrices es ya sea para fall back to C-style tricks o uso foreach y += a manually complemento una matriz a la otra elemento por elemento.
  • Puede hacer una porción como argv[1:-1] pero parece que no hay sintaxis equivalente a la de Python argv[1:], por lo que debe recurrir a algo more procedural para eso.
  • Libgee es inútil para mí, ya que, mientras que los objetos tienen métodos como Gee add_all, ninguno de ellos se arrays de tipo C, por lo que estoy de nuevo a usar add con foreach y +=.
1

mi consejo sería leer la documentación, pero yo personalmente aprendido el idioma examinado vala ejemplos de código:

The official vala tutorial

some documentation

el tutorial vala me ayudó mucho y la documentación La página contiene muchos ejemplos útiles, pero el único sitio que más me ayudó fue y sigue siendo valadoc.org:

valadoc.org

valadoc le ayudará mucho con las diferentes clases y funciones también otros librarys.

vala es muy similar a C# pero a menudo también verá interfaces similares a Java. cualquier experiencia con C es buena porque todas las bibliotecas alrededor de vala están escritas en C y cuando llamas a funciones puedes ver casi todo el código C que está justo debajo de la superficie.

para aquellas personas que dicen que vala es demasiado joven: vala seguirá siendo tan joven como ahora hasta que alguien haga una documentación MUY grande o comience un proyecto tan grande como QT donde miles de personas hacen preguntas todos los días.

vala es un poco difícil de aprender al principio debido a la mala documentación pero ¡no te rindas! es un gran lenguaje cuando has aprendido que es básico. ¡buena suerte! y perdón por el inglés malo :)

0

Si está pensando en escribir una aplicación de servidor, Vala le puede gustar algunas características de agrupamiento de objetos (función token de objeto) en Aroop. Aroop es una bifurcación de Vala que agrupa la memoria. Y tiene como referencia al recolector de basura. Puede encontrar una lista de características here. Permítanme mencionar algunos de los objetivos aquí en la lista,

  • memoria puesta en común
  • servidores de red a la redacción, shotodol_net, shotodol_web.
  • Mensaje basado en cola libre de bloqueo que pasa
  • Desarrollo basado en el complemento, shotodol.
  • Desarrollo integrado
Cuestiones relacionadas