Как стать автором
Обновить
33
0
Oleg Butko @deviator

Программист

Отправить сообщение

Как на D писать под ARM

Время на прочтение6 мин
Количество просмотров6.7K

Доброго времени суток, Хабр!


Сегодня я хочу поделиться опытом разработки под миникомпьютеры на linux (RPI, BBB и другие) на языке программирования D. Под катом полная инструкция о том как сделать это без боли. Ну или почти… =)


Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии13

Свой блог на vibe-d, часть 1: простое веб приложение с использованием шифрования

Время на прочтение8 мин
Количество просмотров5.3K

Доброго времени суток, Хабр! Если Вы давно хотели сделать себе, соседке или её собаке сайт, но пока не сделали, то эта статья для Вас! В этой серии статей я покажу основы работы с vibe для создания сайтов на примере простого блога.
В первой части мы разберём базовые моменты и добавим к получившемуся приложению шифрование.

Сделать свой блог на vibe
Всего голосов 18: ↑17 и ↓1+16
Комментарии3

REST-сервер и тонкий клиент с использованием vibe-d

Время на прочтение5 мин
Количество просмотров9K
Доброго времени суток, Хабр! Если Вам хотелось разделить своё приложение на сервер и клиент, если Вы хотите добавить API к своему vibe-сайту или если Вам просто нечего делать.
добро пожаловать под кат
Всего голосов 22: ↑22 и ↓0+22
Комментарии10

Реализация reference counting или жизнь без GC (почти)

Время на прочтение7 мин
Количество просмотров7K
Доброго времени суток, хабр!

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

Как Вам, скорее всего, известно — в D сборщик мусора, отчасти, опционален. Но ручное управление памятью это прошлый век.
Поэтому сегодня я покажу как можно реализовать сборку мусора самому через «полуавтоматический» подсчёт ссылок, а так же как при этом минимизировать обращения к встроенному в runtime сборщика мусора на основе сканирования памяти.

Поехали
Всего голосов 11: ↑10 и ↓1+9
Комментарии17

DConf2016

Время на прочтение3 мин
Количество просмотров3.8K
Доброго времени суток, хабр!

Как-то на хабре обошли стороной это событие, хочется восполнить этот пробел.

image

Проходила конференция 4-6 мая в Берлине, спонсором выступала компания Sociomantic.

Тут я вкрадце расскажу о чём были выступления.

Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии14

Сравнение прозводительности D и Go для веб

Время на прочтение4 мин
Количество просмотров18K
Доброго времени суток, хабр!

Так как мне скоро предстоит разрабатывать веб-приложение, а писать на интерпретирумых языках как-то нет желания, тем более, что есть такие ЯП как D и Go, возникло желание сравнить их производительность при работе с веб (в сети не нашёл тестов, которые были бы свежими). Для D это vibe.d, а для Go, как я понял, не используются фреймворки. Так как Go я знаю менее чем «никак» решил не выпендриваться: тестовые приложения просто отдают страничку с некоторым текстом (ни баз данных, ни сложного роутинга, ни изображений).

Нагрузка давалась с помощью Apache Benchmark.

Читать дальше →
Всего голосов 27: ↑15 и ↓12+3
Комментарии57

Немного сахара в комбинаторике

Время на прочтение3 мин
Количество просмотров11K
Доброго времени суток, хабр!

Каждый уважающий себя программист знает, что глубокие вложенности — плохой стиль. Но есть алгоритмы, которые реализуются каскадом вложенных циклов (3 и более). В этой статье я хочу рассказать, как можно справиться с проблемой вложенных циклов при переборе комбинаций на любимом языке D.
Читать дальше →
Всего голосов 13: ↑12 и ↓1+11
Комментарии6

Compile-time рефлексия D, практика

Время на прочтение11 мин
Количество просмотров5.2K
Доброго времени суток, хабр!

В прошлой статье были рассмотренны базовые элементы compile-time рефлексии, те кирпичики, из которых строят «настоящие» метаконструкции. В этой статье я хочу показать некоторые такие приёмы. Попробуем реализовать сигналы и слоты, похожие на те, что в Qt, будет примерно так:
class Foo : XObject
{
    @​signal
    void message( string str );
}
class Bar : XObject
{
    @​slot
    void print( string str ) { writefln( "Bar.print: %s", str ); }
}
void main()
{
    auto a = new Foo, b = new Bar;
    connect( a.message, b.print );
    a.message( "hello habr" ); // Bar.print: hello habr
}

Осторожно: много кода (с комментами).
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии0

Compile-time рефлексия D

Время на прочтение11 мин
Количество просмотров3.9K
Доброго времени суток, хабр!

Сегодня поговорим о том, что делает метапрограммирование в D таким гибким и мощным — compile-time рефлексии. D позволяет программисту напрямую пользоваться информацией, которой оперирует компилятор, а не выводить её хитрыми способами. Так какую информацию позволяет получить компилятор и как её можно использовать?
Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии6

Сравнение производительности языков на примере простейшего классификатора

Время на прочтение10 мин
Количество просмотров33K
Доброго времени суток, хабр!


Моим основным ЯП является D. Всегда понимал, что он будет проигрывать C++ из-за сборщика, каких-то высокоуровневых плюшек и т.д. Но никогда не доходили руки проверить насколько. Решил написать простенький классификатор (даже не помню метод как называется) и проверить. Результат меня приятно удивил: версия C++ отработала за 5.47 сек, версия D — за 5.55 сек. «0.08 сек при обработке файла в 74Мб это не так уж и много» — подумал я. Но, на всякий случай, решил попробовать собрать код на D с помощью gdc (dmd как frontend, gnu backend) и тут уже в душу закрались сомнения, что я всё сделал правильно: код отработал за 4.01 сек, что более чем на 20% быстрее версии на С++. Решил собрать с помощью ldc2 (dmd frontend, llvm backend): 2.92(!!) сек. Тут я решил разобраться.
Читать дальше →
Всего голосов 27: ↑22 и ↓5+17
Комментарии34

D для новичков, часть 2

Время на прочтение9 мин
Количество просмотров8.4K
Доброго времени суток, хабр!

Продолжим тематику предыдущей статьи. Здесь будет объяснение таких концепций, как @​safe, @​trusted, pure, nothrow, некоторые моменты, касающиеся ООП.
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии29

D для новичков, часть 1

Время на прочтение8 мин
Количество просмотров14K
Доброго времени суток, хабр!

Уже достаточно взрослый язык, а в сети очень мало материала на русском. Нужно восполнять пробел. В этой заметке хочу рассказать о достаточно скучной, но очень важной теме модификаторов, аттрибутов и тому подобных. Их обилие в D может отпугнуть людей, которые только начинают знакомиться с языком. Да и не все, кто пользуется языком имеет полное представление. Но не всё так страшно, не сложнее чем у других)
Читать дальше →
Всего голосов 19: ↑17 и ↓2+15
Комментарии12

Контракты в D

Время на прочтение5 мин
Количество просмотров8.1K
Доброго времени суток, хабр!

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

Пример подобной спецификации для функции:
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии3

Управление и уборка в D

Время на прочтение7 мин
Количество просмотров8K
Доброго времени суток, хабр!

Все мы знаем, что в D используется сборщик мусора. Он же управляет выделением памяти. Его используют реализации таких встроенных типов как ассоциативные и динамические массивы, строки (что тоже массивы), исключения, делегаты. Так же его использование втроенно в синтаксис языка (конкатенация, оператор new). GC снимает с программиста ответственность и нагрузку, позволяет писать более компактный, понятный и безопасный код. И это, пожалуй, самые важные плюсы сборщика мусора. Стоит ли от этого отказываться? Расплатой за использование сборщика будут избыточное расходование памяти, что недопустимо при сильно ограниченных ресурсах и паузы всех потоков (stop-the-world) на как таковую сборку. Если эти пункты для Вас критичны добро пожаловать под кат.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии19

Python и D

Время на прочтение4 мин
Количество просмотров21K
Доброго времени суток, хабр!

Здесь мы не будем рассуждать о плюсах и минусах языков.



Мы будем использовать их вместе!


Читать дальше →
Всего голосов 29: ↑27 и ↓2+25
Комментарии12

Начинаем использовать GTKD

Время на прочтение4 мин
Количество просмотров14K
Доброго времени суток, хабр!

Сегодня хочу рассказать вам о том, как писать приложения с использованием GTK+ и языка программирования D.



Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии5

3D на D

Время на прочтение8 мин
Количество просмотров14K
Доброго времени суток, хабр!

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

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



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

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

Время на прочтение8 мин
Количество просмотров7.1K
Доброго времени суток, хабр!

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

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

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность