Язык D (dlang) – системный статически типизированный язык программирования семейства фигурных скобок. Идейно схож с C и C++, но включает также функциональность родом из более высокоуровневых языков – таких, как Java, C#, Python и Ruby. Язык располагает мощным (но при этом необязательным) рантаймом, в нем есть автоматическое управление памятью, встроенные динамические и ассоциативные массивы, инструменты метапрограммирования, средства юнит-тестирования, профайлинга и статической интроспекции. Программы на D компилируются в машинный код. Стандартная библиотека D содержит богатый набор инструментов для обработки данных, работы с файлами, для создания многопоточных и сетевых приложений и многое другое. D доступен в нескольких реализациях, есть компиляторы для Windows, Linux и macOS, развивается поддержка ARM, iOS, Android, WebAssembly.

D начался как личный проект Уолтера Брайта, известного американского специалиста с многолетним опытом разработки компиляторов. В частности, он является автором первого нативного компилятора C++, а также компилятора Symantec C++ (ныне Digital Mars C++). Впоследствии к проекту примкнули другие именитые разработчики, в числе которых сам Андрей Александреску.

Программы на D легко писать и читать, они компактны и красивы. В отличие от других современных языков, D не изобретает велосипед, не навязывает программисту новую идеологию, не меняет сложившуюся парадигму разработки нативных приложений. Синтаксис D схож с синтаксисом C++, C# и Java – это облегчает его изучение для тех, кто знаком с этими языками. При этом выучить D и писать на нем качественные безопасные приложения, по сравнению с C++, не в пример легче. На D одинаково удобно писать в процедурном, объектно-ориентированном и функциональном стилях. Кроме того, на D очень легко портировать готовый код с любого из языков семейства фигурных скобок. Программы на D могут напрямую связываться с библиотеками C, есть также частичная поддержка библиотек C++, а также COM-интерфейсов под Windows.

D очень легко установить. В отличие от C# и Java, вам не понадобится устанавливать IDE, какие-либо системные компоненты, рантаймы и другие зависимости – достаточно добавить путь к тулчейну в переменную PATH, открыть терминал, текстовый редактор и начать работать.

D одинаково хорошо подходит для создания

  • консольных утилит и скриптов (есть возможность выполнять D-код напрямую, без предварительной компиляции);
  • бэкендов веб-приложений (есть веб-фреймворк и поддержка различных СУБД); 
  • игр и мультимедийных программ (real-time производительность, прямой доступ к OpenGL, DirectX и Vulkan, поддержка SSE);
  • GUI-приложений (есть привязки к различным графическим тулкитам с C-интерфейсом, в том числе Gtk+ и Tcl/Tk, а также враппер Qt и ряд нативных тулкитов);
  • драйверов и операционных систем (на D можно писать на уровне C – язык предоставляет прямой доступ к памяти, располагает близкой к железу системой типов, имеет встроенный ассемблер, а также специальное подмножество betterC без зависимости от рантайма).

Основные компиляторы D:

  • DigitalMars D Compiler (DMD) – официальный компилятор от создателей D. Является референсной реализацией языка – генерирует не самый быстрый код, но в нем всегда самые свежие фичи. DMD стабилен, хорошо поддерживает все основные десктопные платформы (Windows, Linux, macOS, FreeBSD), поддерживает как 32-, так и 64-битные системы.
  • LLVM D Compiler (LDC) – компилятор на основе фреймворка LLVM, что одновременно позволяет ему генерировать оптимизированный код и быть переносимым под самые разные платформы. Так, с LDC уже возможна компиляция D под ARM и iOS, а также (экспериментально) в Web Assembly. Windows и Unix-системы также поддерживаются в полной мере. Релизы LDC слегка отстают от DMD, но только на одну-две минорные версии.
  • GNU D Compiler (GDC) – компилятор на основе бэкенда GCC. Генерирует очень быстрый код, существует в вариантах для Windows, Linux и ARM с полноценной поддержкой 64-битных систем. По релизам, к сожалению, довольно сильно отстает от DMD.

Если вы затрудняетесь с выбором компилятора, советую начать с DMD, а затем перейти на LDC, если вас интересует производительность, либо на GDC, если вы работаете с Linux и GNU-тулчейном. Например, для создания небольших консольных утилит, нетребовательных к производительности, идеально подойдет DMD. Для игр и других ресурсоемких приложений лучше выбрать LDC, а для системной разработки – GDC. Я для своих проектов использую LDC.

Ссылки

Известные личности в мире D

Интересные проекты на D

Веб:

  • Higgs – JIT-компилятор JavaScript

Системщина:

  • PowerNex – ядро операционной системы для x86_64
  • Vitis – семантическая файловая система для Linux

Игры:

  • DagoBan – клон Sokoban с хардкорно-сложными уровнями и встроенным редактором.
  • sacengine – свободная реализация движка игры Sacrifice.
  • Spectral Robot Task Force – трехмерная пошаговая стратегия в стиле X-COM и Fire Emblem о войне роботов со звероподобными монстрами. Разработана на движке Dash.
  • Mayhem Intergalactic – пошаговая стратегическая игра на космическую тематику. Необходимо управлять армиями космических кораблей для захвата вражеских территорий. Победитель конкурса инди-игр Independent Game Festival 2008.
  • Empire – классическая Empire, одна из первых стратегических игр в истории (первая версия была создана еще в 1977 г.) портирована на D! Кстати, автор Empire – тоже Уолтер Брайт.
  • Wormhol – трехмерный вариант игры “Змейка” для нескольких игроков. 
  • Laser Patriarch – игра для Ludum Dare 36, графический “рогалик” со случайно генерируемой картой.

Наука:

  • Mir GLAS – библиотека линейной алгебры, по тестам обгоняющая OpenBLAS.
  • BioD – фреймворк для написания приложений биоинформатики.
  • RIP – библиотека научного анализа и обработки изображений.

Библиотеки, фреймворки, тулкиты:

  • DUB – стандартный сборщик и пакетный менеджер для D, похожий на NPM для Node.js (входит в официальный дистрибутив компилятора, отдельно скачивать не нужно).
  • Dlang UI – нативный кроссплатформенный GUI-тулкит.
  • GtkD – тулкит для разработки графических приложений на D с использованием популярной библиотеки GTK+. GtkD включает прямой интерфейс к C-функциям GTK+, а также удобную и мощную объектно-ориентированную обертку над ними.
  • Vibe.d – быстрый и мощный веб-фреймворк.
  • BindBC – “джентльменский набор” разработчика игр: коллекция биндингов к мультимедийным библиотекам. На момент написания этого текста включает привязки к OpenGL, OpenAL, SDL, GLFW, FreeImage, FreeType, Lua.
  • Visual D – проект по интеграции D в среду разработки Microsoft Visual Studio.
  • Mono-D – аналогично для MonoDevelop.
  • DDT – для Eclipse.

Полезные инструменты:

  • Compiler Explorer – интерактивный компилятор на основе GDC с мгновенным выводом ассемблерного листинга.
  • DPLDocs – онлайн-генератор документации для D-проектов. Использует язык разметки Adrdox, являющийся надмножеством Ddoc.

Мои проекты на D:

  • dlib – коллекция библиотек для создания игр и игровых движков, мультимедийных и научно-инженерных приложений.
  • Dagon – фреймворк для разработки 3D-игр c рендером на основе OpenGL 4.0
  • BindBC-SoLoud – биндинг к звуковому движку SoLoud
  • BindBC-Newton – биндинг к физическому движку Newton Dynamics
  • BindBC-wgpu – биндинг к графическому API WebGPU
  • BindBC-OpenCL – биндинг к вычислительному API OpenCL
  • GScript2 – второе поколение моего скриптового языка GScript
  • Resolve – утилита для разрешения зависимостей проекта в локальные git-репозитории для удобной разработки и отладки
  • Box – архив-контейнер для хранения файлов с нелатинскими именами.

Оставить комментарий

Ваш адрес email не будет опубликован.