Для самого старта нам потребуется совсем немного ПО.
Любой компилируемый язык программирования для компиляции требует компилятор (как ни странно). Для D существует 3 полноценных компилятора и несколько экспериментальных, которые не будем разбирать. Какой из них выбрать каждый для себя сам, каждый компилятор имеет некоторые преимущества и недостатки.
Компилятор от разработчиков языка, самые свежие фичи, самые последние исправления. Поддерживается только intel архитектура (x86, x86_64). Рекомендуется для новичков. Для каждой поддерживаемой системы существует установочный файл/пакет.
Для frontend (разбор исходного кода) используется оригинальная реализация от DMD,
для backend (кодогенерация, оптимизация) используется
LLVM. Использование LLVM
позволяет получать более оптимизированный код (самые быстрые D-программы компилируются
ldc), а так же осуществлять сборку под различные архитектуры (x86, x86_64, ARM,
PowerPC, MIPS и т.д.). Распостраняется в виде архива, нужно будет добавить его в $PATH.
Backend компилятора использует код gnu compiler collection (gcc), frontend транслируется с D на С++ командой разработчиков gdc. Отсюда следует, что возможны различия в поведении с DMD и LDC на одинаковом коде (не проверенная информация). Поддерживается только linux. Архитектуры x86_64 и ARM. Официальный релиз основан на достаточно старом DMD, имеет смысл собирать из репозитария на github.
По сути единственным развитым и распостранённым вариантом является dub.
Так же dub является менеджером пакетов.
Разработчики языка, по всей видимости, не очень любят IDE как явление, поэтому некоторые особенности языка облегчают работу с ним без IDE. Подстветка синтаксиса есть практически для всех разспостранённых редакторов текста. Но если хочется чего-то больше блокнота с подсветкой синтаксиса можно попробовать что-то из списка ниже.
Кроссплатформенный редактор кода, стремящийся быть IDE, базирующаяся на Atom. Позволяет отлаживать, работать с git и много другое. Достаточно легковесен, хороший выбор для старта, подходит для полноценной работы.
Code-D (плагин для работы с D)
Code-d использует внешние программы для разбора исходного кода, автодополнения и подсветки ошибок, при установке он должен самостоятельно их скачать и собрать (компилятор уже должен быть доступен в путях).
IDE написана на D для D. Придётся собирать самому, но там достаточно просто всё. (TODO инструкция)
IDE написана на Pascal (!).
После того, как компилятор установлен уже можно экспериментировать.
Создадим файл с расширением *.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 тут.