Skip to content

Commit

Permalink
GitBook: [master] 92 pages and 15 assets modified
Browse files Browse the repository at this point in the history
  • Loading branch information
gavr123456789 authored and gitbook-bot committed May 12, 2020
1 parent e3a8c07 commit b92755c
Show file tree
Hide file tree
Showing 73 changed files with 2,852 additions and 63 deletions.
Binary file modified .gitbook/assets/image (10).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .gitbook/assets/image (11).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .gitbook/assets/image (12).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .gitbook/assets/image (13).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .gitbook/assets/image (14).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .gitbook/assets/image (15).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .gitbook/assets/image (16).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .gitbook/assets/image (2).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .gitbook/assets/image (3).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .gitbook/assets/image (4).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .gitbook/assets/image (5).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .gitbook/assets/image (6).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .gitbook/assets/image (7).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .gitbook/assets/image (8).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified .gitbook/assets/image (9).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
35 changes: 16 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,38 +3,34 @@
### Предисловие

Это перевод основного учебника Vala от GNOME, какое то время я занимался им прямо на их платформе но потом решил перенести все на GitBook.
Иногда я буду делать дополнения от себя\(их пока что мало, тк кк еще ведется работа по вычитке и исправлению ошибок перевода итд\). Чтобы не мешать слова автора с моими дополнениями я буду выделять их в синий hint. \(наверное потом могут появится и другие цвета^^\)

{% hint style="info" %}
вот такой
{% endhint %}

Но иногда, когда мне будет требоваться MD разметка я буду просто добавлять заголовок "от меня" третьего уровня или типа того.
Я также добавлял множество информации от себя, так что он не полностью соответствует оригиналу.

### Введение

#### Что такое Vala?

Vala — это новый язык программирования, который позволяет использовать современные способы программирования для написания приложений, которые будут основываться на библиотеках выполнения GNOME, частично GLib и GObject. С давних пор эта платформа является полноценной средой разработки, включая такие особенности как система динамических типов данных и вспомогательные инструменты управления памятью. До создания Vala, единственным способом написания программ для этой платформы было использование API языка C, что приводило к нежелательным последствиям, использованию высокоуровневых скриптовых языков, требующих наличие виртуальной машины, таких как Python, Mono C\#, или, как альтернативный вариант, использование библиотеки-оболочки для C++.
Vala — это новый язык программирования, который позволяет использовать современные способы программирования для написания приложений, которые будут основываться на библиотеках GNOME, частично GLib и GObject. С давних пор эта платформа является полноценной средой разработки, включая такие особенности как система динамических типов данных и вспомогательные инструменты управления памятью. До создания Vala, единственным способом написания программ для этой платформы было использование API языка C, что приводило к нежелательным последствиям, использованию высокоуровневых скриптовых языков, требующих наличие виртуальной машины, таких как Python, Mono C\#, или, как альтернативный вариант, использование библиотеки-оболочки для C++.

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

{% hint style="info" %}
Это не значит что язык имеет какую-либо зависимость от платформы GNOME, единственное что необходимо для запуска Vala это библиотека [GLIb](https://ru.wikipedia.org/wiki/GLib) которая является абсолютно кроссплатформенной\(все DLL под Windows занимают 2 МБ, и скорее уже установлены под любым Linux дистрибутивом\).
Хотя имеется возможность писать без GLib, у Vala существуют альтернативные бэкенды самый развитый из которых: POSIX, при компиляции через него единственной зависимостью будет [libc](https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%B0%D1%8F_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_%D0%A1%D0%B8), которая уже присутствует везде. Однако большенство высокоуровневых преимуществ вроде интроспекции классов разумеется теряются.
Это не значит что язык имеет какую-либо зависимость от платформы GNOME, единственное что необходимо для запуска Vala это библиотека [GLIb](https://ru.wikipedia.org/wiki/GLib) которая является абсолютно кроссплатформенной\(все DLL под Windows занимают 2 МБ, на Linux GLib поставляется из коробки в любом дистрибутиве\)
Хотя имеется возможность писать без GLib, у Vala существуют альтернативные бэкенды самый развитый из которых: POSIX, с ним единственной зависимостью будет являться стандартная библиотека С [libc](https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%B0%D1%8F_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_%D0%A1%D0%B8).
{% endhint %}

Из этого следует:

Производительность программ, написанных на Vala, будет сопоставима с производительностью программ, написанных непосредственно на C. И в то же время, они более просты в написании и сопровождении.

Производительность программ, написанных на Vala, будет сопоставима с производительностью программ, написанных непосредственно на C. И в то же время, они более просты в написании и сопровождении. Также Vala добавляет множество проверок для улучшения безопасности. Их можно отключить для увеличения производительности флагом --disable-asserts

![https://github.com/kostya/benchmarks](.gitbook/assets/image%20%282%29.png)

---

Программы, написанные на Vala, могут делать то же, что и программы, написанные на C. И хотя Vala предоставляет функции, не доступные C программистам, их можно реализовать и на C, но это трудоемкий и сложный процесс.
Программы, написанные на Vala, могут делать то же, что и программы, написанные на C. И хотя Vala предоставляет функции, не доступные C программистам, их можно реализовать и на C, но это трудоемкий и сложный процесс \(ООП, Дженерики, Лямбды, Миксины, Контроль памяти ...\)

### Vala разрабатывается слишком маленьким количеством людей?

Как таковой Vala — это современный язык со всеми возможностями, которые только можно себе представить, но, несмотря на это, вся его мощь идет от существующей платформы и соответствует установленным ей правилам.
Это не так, дело в том что Std Vala выступает GLib, а доп библиотеками GNOME стек.

Статья "[Vala не язык программирования](https://blogs.gnome.org/despinosa/2017/02/14/vala-is-not-a-programming-language/)" которую я пока не перевёл, вкратце в ней говорится о том что Vala состоит из большого количества вещей развиваемых по отдельности огромными сообществами.

Expand All @@ -46,8 +42,9 @@ Vala — это новый язык программирования, котор
* GTK огромный графический стек [wiki](https://ru.wikipedia.org/wiki/GTK), [git](https://gitlab.gnome.org/GNOME/gtk), скоро выйдет 4тая версия в которой очень много изменений самые главные из которых рендер интерфейса на Vulkan/GL, значительные улучшения поддержки платформы Windows. Буквально сегодня вышла новость об очередном релизе \([рус](http://www.opennet.ru/opennews/art.shtml?num=50648)\)
* GCC

И еще кучей всяких кусков Gстека\(по аналогии с Qt стеком\) самым главным из которых является компилятор GCC
Разберу одну ситуацию: только что вышло мажорное обновление GCC 9. В нем улучшили оптимизацию `switch`\(второй параграф [здесь](http://www.opennet.ru/opennews/art.shtml?num=50622)\(рус\)\) и эта оптимизация автоматически попала в vala тк кк она компилируется в си код. \(Я проверил swich стейты vala преобразуются в swich стейты Си, если они не над string \(не поддерживается си\)\)
Разберу одну ситуацию: только что вышло мажорное обновление GCC 9. В нем улучшили оптимизацию `switch`\(второй параграф [здесь](http://www.opennet.ru/opennews/art.shtml?num=50622)\(рус\)\) и эта оптимизация автоматически попала в vala тк кк она компилируется в С код.

Из этого всего следует что сам компилятор vala это около 10%, и над Vala косвенно работают множество людей.

#### Для кого предназначено это руководство?

Expand All @@ -73,11 +70,11 @@ print("Hello World!\n");

Ага, вот настолько просто, запустить можно с помощью `$ vala filename`

{% hint style="info" %}
{% hint style="warning" %}
`Если вам не нужно выделения памяти на куче то main можно не объявлять.`
{% endhint %}

ООП\(Java/C\# style\) вариант:
ООП \(Java/C\# style\) вариант:

```java
class Demo.HelloWorld : GLib.Object {
Expand Down Expand Up @@ -146,7 +143,7 @@ valac - это компилятор Vala, создающий двоичный и

Установка на Windows: [бинарная](http://valainstaller.sourceforge.net/), "[правильная](https://wiki.gnome.org/Projects/Vala/ValaOnWindows)", после установки через MSYS рекомендую добавить /bin MSYS'а в Path чтобы иметь доступ к `valac` из консоли

Установка на Mac: $ brew install vala
Установка на Mac: `$ brew install vala`

FreeBSD: `$ cd /usr/ports/lang/vala/ && make install clean`
`$ pkg install vala`
Expand Down
Loading

0 comments on commit b92755c

Please sign in to comment.