Подтвердить что ты не робот

Вала: Гоча, советы и хитрости

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

4b9b3361

Ответ 1

В значительной степени это зависит от того, из какого фона вы пришли. Если вы едете с C/С++/Java, лучшим советом является изучение функционального программирования. Вала поддерживает истинные закрытия, и поэтому вы должны научиться (глубоко) использовать лямбда-выражения. Лучший ресурс для этого - Структура и Интерпретация компьютерных программ Абельсона и Суссмана. Это был вводный учебник для КС в Массачусетском технологическом институте в течение многих лет. Он доступен бесплатно в режиме 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/.

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

Ловушки:

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

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

Ответ 2

Мой # 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

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

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

Ответ 7

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

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

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

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

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

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

Ответ 8

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

Официальное руководство по вале

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

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

valadoc.org

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

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

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

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

Ответ 9

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

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