Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Message dispatching на D

Программирование *Разработка игр *D *
Из песочницы
Многие разработчики игр сталкиваются с проблемой описания и реализации протокола общения клиента и сервера, особенно если пишут свои велосипеды для работы с сокетами. Ниже я расскажу о моей попытке решить задачу как можно элегантнее и удобнее для дальнейшего использования и масштабирования приложения. Будет много compile-time'a с автоматической кодогенерацией, нежно приправленный щепоткой run-time'a.
Читать дальше →
Всего голосов 18: ↑18 и ↓0 +18
Просмотры 2.5K
Комментарии 16

Прошла DConf 2013 — конференция, посвящённая языку программирования D

Программирование *D *
Из песочницы
Чуть больше недели назад закончилась трёхдневная конференция по языку программирования D.
Про него уже неоднократно писали на Хабрахабре, а самой конференции был посвящён отдельный пост, где можно посмотреть полный список докладов.
Читать дальше →
Всего голосов 24: ↑22 и ↓2 +20
Просмотры 6.9K
Комментарии 10

Простой сайт на D

Разработка веб-сайтов *Компиляторы *
На хабре уже упоминался язык D. Но популярности он не получил из-за невозможности практического использования, а точнее большинству он просто не нужен.Сегодня хочу рассказать вам об одном полезном фреймворке для D. Большинство программистов хоть раз писали веб-сервер на компилируемом языке, но эти языки слишком низкоуровневы для такой задачи. Для такой задачи можно использовать этот язык в связке с фреймворком vibe.d;
Читать дальше →
Всего голосов 54: ↑45 и ↓9 +36
Просмотры 25K
Комментарии 46

Voldemort типы в D

Программирование *Проектирование и рефакторинг *D *
Tutorial
Данный пост расскажет об уникальной фишке D — Voldemort типы. Типы, которые можно использовать, но нельзя назвать. Данное название не очень подходит им, но Walter Bright очень любит так их называть. Voldemort типы очень часто встречаются в стандартной библиотеке Phobos, особенно в модулях std.algorithm и std.array. Осваивающие D могут часами штудировать документацию в поисках типа, возвращаемого из splitter или joiner, а возвращают они именно Voldemort типы. После этого поста можно смело открывать исходники std.algorithm, ибо никакие Сами-Знаете-Кто вам будут не страшны.

Он самый

Иногда, взаимодействие существующих возможностей может привести к неожиданным сюрпризам. Мне нравится считать, что мы изначально заложили Voldemort типы в D, но на самом деле они были найдены Андреем Александреску. Что это за Voldermort типы? Читайте дальше.

Читать дальше →
Всего голосов 46: ↑39 и ↓7 +32
Просмотры 17K
Комментарии 27

Свой Web проект на D под ОС Ubuntu

Разработка веб-сайтов *D *
Из песочницы
Этот материал родился благодаря статье Простой сайт на D автора danial72. Только там был разобран момент под ОС Windows. В моей же статье, будет пошагово рассмотрен процесс подготовки рабочего окружения для создания собственного Web-проекта на языке программирования D на примере ОС Ubuntu 13.04.
Читать дальше →
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 5.2K
Комментарии 9

Facebook совместно с Digital Mars платят за исправление багов в компиляторе D

Программирование *D *
Digital Mars logo Вчера на форуме forum.dlang.org Андрей Александреску (Разработчик языка D и автор книги: The D Programming Language" — 2010 г. ) объявил о начале бонусной программы по исправлению багов в языке D.
Какой бюджет?
Всего голосов 35: ↑31 и ↓4 +27
Просмотры 7.2K
Комментарии 7

Функциональная обработка изображений в D

Open source *Обработка изображений *D *
Перевод
image

Недавно я завершил переработку графического пакета для моей D библиотеки. Вдохновленный модулями std.algorithm и std.range, я пытался достичь следующих целей:
  • Представить все в виде малых комбинируемых компонентов
  • Избежать неявного копирования и предпочтительно использовать ленивые вычисления
  • Использовать шаблоны для улучшения производительности и эффективности написания кода


Начиная с первой версии, все компонеты пакета обработки изображений были параметризированы типом цвета. Это не стандартный способ реализации графических библиотек — большинство абстрагируют конкретный тип цвета изображения через ООП интерфейс, или просто конвертируют все изображения в единый формат пикселей, с которыми далее работают в памяти. Однако для большинства случаев это является тратой памяти и времени, обычно разработчики заранее знают в каком конкретно формате будет представлено изображение, за исключением приложений, где графические данные вводятся пользователем (например, граф. редакторы). Вместо этого моя библиотека объявляет все типы изображений как шаблоны с типом-параметром для цвета.

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

Читать дальше →
Всего голосов 32: ↑31 и ↓1 +30
Просмотры 8.7K
Комментарии 13

Сравнение D и C++ и Rust на примерах

C++ *D *Rust *
Данный пост основывается на Сравнение Rust и С++ на примерах и дополняет приведенные там примеры кодом на D с описанием различий.

Все примеры были собраны с помощью компилятора DMD v2.065 x86_64.
Читать дальше →
Всего голосов 63: ↑58 и ↓5 +53
Просмотры 35K
Комментарии 50

Учебник по языку программирования D. Часть 1

Программирование *Системное программирование *D *
Перевод
Tutorial
Данный пост начинает серию переводов D Programming Language Tutorial, дабы компенсировать информационный вакуум об этом системном языке. Каждая часть будет содержать константое количество материала из книги, так как оригинальные главы имеют широкий разброс в размере: от пары абзацев до нескольких печатных страниц. Все примеры кода проверяются на текущем релизе компилятора dmd 2.065, и если возникают проблемы с технической частью, прошу отписываться в комментариях.

Читать дальше →
Всего голосов 40: ↑33 и ↓7 +26
Просмотры 37K
Комментарии 54

Использование в языке D сторонних библиотек

Программирование *Проектирование и рефакторинг *D *
Tutorial
На волне интереса к языку D решил и я внести свой вклад в его популяризацию. Статья не для новичков, а больше для тех кто рассматривает D как второй язык. Известно, что на заре своего развития, языки программирования имеют небогатый набор библиотек и это часто не позволяет начинать писать на них что-то серьёзное. Надеюсь статья поможет кому-нибудь переступить этот барьер.
Ниже будут рассмотрены возможности утилиты dub, а так же подключение сторонних пакетов и библиотек написанных на C/C++ на примере замечательной библиотеки libev.
Читать дальше →
Всего голосов 18: ↑17 и ↓1 +16
Просмотры 6.9K
Комментарии 17

Учебник по языку программирования D. Часть 2

Программирование *Системное программирование *D *
Перевод
Tutorial
Вторая часть перевода D Programming Language Tutorial от Ali Çehreli. Большая часть материала ориентирована на начинающих, но так как большая часть аудитории уже имеет базовые знания в программировании, то этот материал убран под хабракаты. В данной части рассматриваются фундаментальные типы, свойства типов, основы компиляции и императивного программирования.

Читать дальше →
Всего голосов 32: ↑27 и ↓5 +22
Просмотры 14K
Комментарии 4

Compile-time функциональное программирование в D

Ненормальное программирование *Программирование *D *
Сегодня мы рассмотрим одну из главных фич языка D, ради которой он и создавался — это продвинутое программирование на этапе компиляции. Некоторые могут припомнить как на C++ высчитывается факториал или, что посложнее, реализацию игры «Жизнь» и испугаться. Не стоит, шаблоны в D на порядок проще и мощнее аналога из C++, но все равно они требуют особого подхода в размышлениях, поэтому для акклиматизации сложность материала будет нарастать постепенно.

Читать дальше →
Всего голосов 22: ↑19 и ↓3 +16
Просмотры 7.3K
Комментарии 29

REST интерфейс генератор фреймворка vibe.d

D *
Из песочницы
Tutorial
В этой статье я поэтапно покажу как пользоваться rest interface генератором встроенным во фреймворк vibe.d. Если вы интересуетесь D и его особенностями, то данная статья, надеюсь, немного прояснит новичкам как на практике использовать D и познать всю его мощь.

Для этого нами понадобится:
  1. Настроить eclipse для работы с vibe.d.новичкам
  2. Запустить «Hello World» на vibe.d. новичкам
  3. Создать клиента для api OpenWeatherMap.
  4. Создать дублирующий сервер на основе api OpenWeatherMap

В документации к vibe.d имеется пример пользования генератором. Однако данный пример, на мой взгляд, слишком прост и не раскрывает механизма работы генератора.
Вперед
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 3.9K
Комментарии 2

Учебник по языку программирования D. Часть 3

Программирование *D *
Перевод
Tutorial
Третья часть перевода D Programming Language Tutorial от Ali Çehreli. Содержание главы расчитано для начинающих и, как мне кажется, даже не раскрывает темы. Но это перевод одной из глав.

Предыдущие части:
  1. Часть 1
  2. Часть 2

Читать дальше →
Всего голосов 22: ↑18 и ↓4 +14
Просмотры 10K
Комментарии 5

Учебник по языку программирования D. Часть 5

Программирование *D *
Перевод
Tutorial
Пятая часть перевода D Programming Language Tutorial от Ali Çehreli. В этой части переведена глава Logical Expressions. Материал главы рассчитан на новичков.
  1. Часть 1
  2. Часть 2
  3. Часть 3
  4. Часть 4
Читать дальше →
Всего голосов 18: ↑17 и ↓1 +16
Просмотры 8.1K
Комментарии 15

Фишки языка D

Программирование *Алгоритмы *D *
Очень радует, что на Хабре появляются статьи о языке D. Но, на мой взгляд, переводы хелпа и статей для чуть больше, чем для новичков не дают ничего в плане популяризации языка. Думаю, искушённой публике лучше представлять, пусть более сложные, но какие-то интересные вещи — фишки. Большинство из того, что можно назвать фишками D, есть и в других языках, но многое в D реализовано более эффектно и эффективно, на мой вкус во всяком случае. В D есть много интересного, о чем стоит рассказать, и начну я в этой статье с функций, но не совсем обычных.
Читать дальше →
Всего голосов 28: ↑24 и ↓4 +20
Просмотры 13K
Комментарии 63

Пишем вектор на Dlang

Программирование *D *
Из песочницы
Доброго времени суток, хабр!

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

Стоит напомнить, что в отличии от C++ в D классы и структуры имеют разное логическое предназначение и устроенны они по разному. Структуры не могут наследоваться, в структурах нет никакой другой информации, кроме полей (в классах есть таблица виртуальных функций, например), структуры хранятся по значению (классы всегда ссылками). Структуры прекрасно подходят для простых типов данных.
Читать дальше →
Всего голосов 19: ↑19 и ↓0 +19
Просмотры 6.7K
Комментарии 34

3D на D

D *
Tutorial
Доброго времени суток, хабр!

С языком D я познакомился на 3 курсе, но решил его использовать только через год, когда вышла книга Александреску. Сразу взялся писать лабораторные, курсовые. Основной проблемой являлось отсутствие нужных библиотек (графика, удобная математика) или неудобная их установка. Сейчас многое изменилось, пишутся библиотеки (gfm, dlib, dlangui и тд), появился dub. С одной из таких библиотек хочу познакомить в этом посте. Имя ей DES. Выросла она из институтских наработок, поэтому, возможно, кому-то она будет полезной в учёбе и/или станет катализатором изучения языка.Сразу следует оговорить: статья для новичков, всё предельно просто.

Напишем простое приложение, рисующее на экране некий абстрактный mesh.



Читать дальше →
Всего голосов 24: ↑23 и ↓1 +22
Просмотры 14K
Комментарии 0

DlangUI — кросплатформенный GUI для D (Часть 1)

Разработка веб-сайтов *Программирование *D *
Мне нравится язык D. Давно слежу за его развитием. Для D есть несколько GUI библиотек и биндингов, но я решил изобрести свой велосипед.
Хочу рассказать о своём проекте DlangUI. Надеюсь, что он кому-нибудь будет полезен.



На КДПВ скриншот DlangIDE — приложения, написанного на DlangUI.

Особенности:

  • Кроссплатформенность — поддерживаются Windows, Linux, Mac OSX; легкость портирования на другие платформы
  • Написан на D — легкорасширяемый
  • Использование Layouts для позиционирования элементов интерфейса
  • Масштабирование шрифтов и иконок в приложении в зависимости от разрешения экрана
  • Поддержка Unicode
  • Интернационализация — поддержка перевода UI на несколько языков
  • Аппаратное ускорение с помощью OpenGL (опционально)
  • Возможность отрисовки виджетов поверх OpenGL сцены (например, для UI в игре)
  • Небольшой размер исполняемого файла
  • Внешний вид интерфейса настраивается с помощью тем (две стандартные темы — светлая и темная)
  • Встраивание ресурсов в исполняемый файл
  • Открытый исходный код, под лицензией Boost License 1.0
Подробности
Всего голосов 45: ↑44 и ↓1 +43
Просмотры 15K
Комментарии 48