Skip to content

Latest commit

 

History

History
218 lines (148 loc) · 9.75 KB

File metadata and controls

218 lines (148 loc) · 9.75 KB

С чего начать

Для самого старта нам потребуется совсем немного ПО.

Компилятор

Любой компилируемый язык программирования для компиляции требует компилятор (как ни странно). Для D существует 3 полноценных компилятора и несколько экспериментальных, которые не будем разбирать. Какой из них выбрать каждый для себя сам, каждый компилятор имеет некоторые преимущества и недостатки.

DMD

Компилятор от разработчиков языка, самые свежие фичи, самые последние исправления. Поддерживается только intel архитектура (x86, x86_64). Рекомендуется для новичков. Для каждой поддерживаемой системы существует установочный файл/пакет.

Скачать

Инструкция

LDC

Для frontend (разбор исходного кода) используется оригинальная реализация от DMD, для backend (кодогенерация, оптимизация) используется LLVM. Использование LLVM позволяет получать более оптимизированный код (самые быстрые D-программы компилируются ldc), а так же осуществлять сборку под различные архитектуры (x86, x86_64, ARM, PowerPC, MIPS и т.д.). Распостраняется в виде архива, нужно будет добавить его в $PATH.

Скачать

Инструкция

GDC

Backend компилятора использует код gnu compiler collection (gcc), frontend транслируется с D на С++ командой разработчиков gdc. Отсюда следует, что возможны различия в поведении с DMD и LDC на одинаковом коде (не проверенная информация). Поддерживается только linux. Архитектуры x86_64 и ARM. Официальный релиз основан на достаточно старом DMD, имеет смысл собирать из репозитария на github.

Скачать

Инструкция

Система сборки

По сути единственным развитым и распостранённым вариантом является dub.

Скачать

Инструкция

Так же dub является менеджером пакетов.

Среда разработки

Разработчики языка, по всей видимости, не очень любят IDE как явление, поэтому некоторые особенности языка облегчают работу с ним без IDE. Подстветка синтаксиса есть практически для всех разспостранённых редакторов текста. Но если хочется чего-то больше блокнота с подсветкой синтаксиса можно попробовать что-то из списка ниже.

Visual Studio Code

Кроссплатформенный редактор кода, стремящийся быть IDE, базирующаяся на Atom. Позволяет отлаживать, работать с git и много другое. Достаточно легковесен, хороший выбор для старта, подходит для полноценной работы.

Скачать

Code-D (плагин для работы с D)

Code-d использует внешние программы для разбора исходного кода, автодополнения и подсветки ошибок, при установке он должен самостоятельно их скачать и собрать (компилятор уже должен быть доступен в путях).

Плагин для отладки

IntelliJ IDEA

Visual Studio

DLangIDE

IDE написана на D для D. Придётся собирать самому, но там достаточно просто всё. (TODO инструкция)

Страница на github

Coedit

IDE написана на Pascal (!).

Страница на github

Первые шаги

После того, как компилятор установлен уже можно экспериментировать.

Создадим файл с расширением *.d и запишем туда следующее:

import std.stdio;

void main()
{
    writeln("hello world");
}

Сохраняем, затем запускаем следующие команды из командной строки, находясь рядом с файлом (команда cd -- change dir -- позволит перейти в нужную директорию):

dmd <filename>.d
./<filename>

Первая строчка компилирует исходный код из файла <filename>.d в исполняемый файл, (вместо dmd может быть любой другой из перечисленных компиляторов). Вторая строчка запускает исполняемый файл.

Для того чтобы сделать это за один шаг можно воспользоваться утилитой rdmd. Она компилирует файл в временную директорию (Temp, tmp и тд), а уже оттуда сразу запускает его.

rdmd <filename>.d

Если часть кода лежит в дополнительном файле (аля библиотека) рядом с вашим целевым, то необходимо его включить в исходном коде целевого файла и добавить при сборке:

// foo.d
module foo;

int myFunc(int a, int b) { return a * b; }
// app.d
import std.stdio;
import foo;

void main()
{
    writeln("myFunc(3,4) = ", myFunc(3,4));
}
dmd app.d foo.d
./app

либо

rdmd app.d foo.d

Последовательность файлов важна: первым должен быть целевой файл (содержащий функцию main).

Первый проект

Для написания полноценных проектов из нескольких файлов с использованием сторонних библиотек потребуется система сборки и менеджер пакетов -- dub.

Создадим папку, перейдём в неё из командной строки и вызовем инициализацию нового проекта с помощью dub:

mkdir test
cd test
dub init

dub будет в интерактивном режиме создавать проект. В самом начале советую изменить только одно значение по умолчанию -- формат файла сборки. Это первый параметр -- введите sdl и нажмите несколько раз enter.

Либо без интерактивного режима:

dub init -f sdl -n

Будет создана базовая структура проекта:

$ tree -a
.
├── dub.sdl
├── .gitignore
└── source
    └── app.d

1 directory, 3 files

Для компиляции и запуска программы введите dub, только для сборки dub build.

Для использования библиотеки из репозитария dub пакетов необходимо добавить её в dub.sdl в качестве зависимости:

dependency "dlib" version="~>0.12.2"

где "dlib" имя библиотеки из репозитария пакетов.

При запуске сборки dub самостоятельно скачает пакет в директорию $HOME/.dub/packages/, соберёт и использует при сборке исходного проекта.

Подробная информация по настройке проекта через dub.sdl тут.