Vala: Gotchas, советы и хитрости - PullRequest
44 голосов
/ 30 января 2010

Как программист, который является новичком в Vala, что вы посоветуете номер один для новичка в языке?

Ответы [ 9 ]

35 голосов
/ 16 февраля 2010

Это в значительной степени зависит от того, откуда вы родом. Если вы пришли из C / C ++ / Java, лучший совет - изучить функциональное программирование. Vala поддерживает истинные замыкания, поэтому вы должны (глубоко) научиться использовать лямбда-выражения. Лучший ресурс для этого - структура и интерпретация компьютерных программ Абельсона и Суссмана. Это был вводный учебник для CS в MIT в течение многих лет. Он доступен бесплатно в режиме онлайн по адресу http://mitpress.mit.edu/sicp/full-text/book/book.html,, но бумажная версия более читабельна. Видеолекции доступны на http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/. Наборы задач доступны бесплатно на http://icampustutor.csail.mit.edu/6.001-public/.

Кроме того, я обычно просто стараюсь хорошо изучить стиль программирования C #. Это похоже на Вала, но есть много книг на эту тему.

Ловит:

  • Имейте в виду, что у Валы нет сборки мусора. Это делает подсчет ссылок.
  • Знайте, что Вала все еще развивается. Это довольно новый язык, и он не достиг 1,0. Код, который вы пишете сейчас, может сломаться в будущем.
  • Если вы хотите изучать Vala, имейте в виду, что она немного устарела, насколько позволяют концепции языка программирования. Он не делает ничего, чтобы помочь с многоядерным программированием. Он не делает ничего, чтобы помочь с управлением памятью (производительность кода в значительной степени основана на когерентности кэша - хорошие языки с мусором могут реорганизовать память, чтобы помочь здесь) Это обертка вокруг C и поставляется со многими ограничениями C (хотя она добавляет замыкания).

Также один из плакатов рекомендовал tinycc. Это разумный выбор для разработки, но вы должны использовать оптимизированный компилятор, такой как gcc (или, если поддерживается, компилятор Intel) для развертывания.

22 голосов
/ 14 февраля 2010

Мой совет № 1 - узнать о GObjects. Они являются основой мощи и гибкости Vala, а изучение того, как обернуть различные библиотеки с помощью GObject, дает вашим программам Vala доступ ко всему, с чем можно связываться (что очень много!).

Вот несколько ссылок, которые могут быть интересны:
* 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

15 голосов
/ 15 февраля 2010
  1. Для нескольких ресурсов это будет общий ресурс для немного: Vala - GNOME Live! .
  2. Чтобы поближе познакомиться с GObject: Справочное руководство GObject .
  3. Я не знаю, откуда вы, но вы найдете это полезным: Vala Quick Intro для программистов на C #

В любом случае знание C будет очень полезным. Наша команда на самом деле рассматривает возможность постепенного обновления и переноса на Вала. У нас есть участники с большим опытом работы в C # / C ++, и это изменение направления (со временем) будет полезно для производительности и гибкости наших продуктов.

9 голосов
/ 06 февраля 2010

Совет: вы можете значительно сократить время сборки, используя TinyCC вместо gcc для разработки. Vala использует переменную CC env для выбора внутреннего компилятора, поэтому «export CC = tcc» поможет.

6 голосов
/ 17 февраля 2010

Вот мой совет для вас: прочитайте официальную документацию. :)

4 голосов
/ 28 декабря 2011

В общем, Vala превосходна, но я обнаружил, что один большой недостаток - либо обработка массивов очень примитивна по сравнению с остальным языком, либо документация имеет очень зияющую дыру.

Несмотря на долгий и тщательный просмотр документации, учебных пособий и Google, я пришел к выводу, что:

  • Единственный способ объединить два массива - либо вернуться к трюкам в стиле C , либо использовать foreach и += до вручную добавить один массив к другому элементу -по-элемент.
  • Вы можете сделать срез наподобие argv[1:-1], но, похоже, нет синтаксиса для эквивалента argv[1:] в Python, поэтому вам придется вернуться к чему-то более процедурному для этого.
  • Libgee для меня бесполезен, потому что, хотя объекты Gee имеют такие методы, как add_all, ни один из них не принимает массивы в стиле C, поэтому я вернулся к использованию add с foreach и +=.
3 голосов
/ 17 февраля 2010

Предостережение: я не знаком с Вала, но, надеюсь, мой ответ применим к изучению любого нового языка. Я просто хочу поделиться некоторыми мыслями на случай, если они помогут ... Мне определенно не следует получать награду за мой ответ.

Итог: это зависит от того, почему вы изучаете это ...

Если вы заинтригованы, потому что это крутой новый язык, но вы не уверены, как использовать его на практике, попробуйте воссоздать / перенести что-то, с чем вы хорошо знакомы, чтобы увидеть, как он сравнивается.

Если вы изучаете его, потому что считаете, что оно решает конкретную проблему, с которой вы сталкиваетесь, убедитесь, что оно стоит первоначальных вложений, поскольку изучение любого нового языка может быть невероятно трудоемким, и может быть разумное решение в более знакомый язык.

В противном случае, это все о том, как вы учитесь лучше всего. Вы тот, кто должен понимать внутренности языка или просто делать вещи быстро? (Или, как я, где-то посередине?) Для подхода к достижению цели я просто ищу простые учебники и пытаюсь получить что-то базовое и запустить, чтобы увидеть, как оно выглядит. Если я наслаждаюсь языком, тогда я начну читать более подробную информацию о языке и пойму, что происходит под капотом.

Независимо от вашего подхода, удачи!

2 голосов
/ 15 октября 2013

я бы посоветовал прочитать документацию, но я лично выучил язык, посмотрев примеры кода vala:

Официальный учебник Vala

некоторая документация

учебное пособие по vala мне очень помогло, а страница документации содержит множество полезных примеров, но один сайт, который мне больше всего помог, был и остается valadoc.org:

.

valadoc.org

valadoc поможет вам с различными классами и функциями, а также с другими библиотеками.

vala очень похожа на c #, но вы также часто будете видеть java-подобные интерфейсы. любой опыт работы с C хорош, потому что все библиотеки вокруг vala написаны на C, и при вызове функций вы можете почти увидеть весь код C, который находится прямо под поверхностью.

для тех, кто говорит, что vala слишком молода: vala будет оставаться такой же молодой, как сейчас, пока кто-нибудь не сделает ОЧЕНЬ большую документацию или не начнет проект размером с QT, где тысячи людей ежедневно задают вопросы.

Вала немного сложно выучить с самого начала из-за плохой документации, но не сдавайтесь! Это отличный язык, когда ты выучил его основы. удачи! и извините за плохой английский :) 1023 *

1 голос
/ 23 октября 2014

Если вы рассматриваете Vala для написания серверного приложения, вам могут понравиться некоторые функции объединения объектов (функция токена объекта) в Aroop . Aroop - это вилка Vala, которая выполняет пул памяти. И он имеет подсчет ссылок на сборщик мусора. Вы можете найти список возможностей здесь . Позвольте мне назвать некоторые цели здесь, в списке,

  • Пул памяти
  • Запись сетевых серверов, shotodol_net , shotodol_web .
  • Передача сообщений без очереди на основе
  • Разработка на основе плагинов, shotodol .
  • Разработка встраиваемых систем
...