Pull to refresh
33
0
Oleg Butko @deviator

Программист

Send message

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

Reading time 6 min
Views 6.7K

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


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


Читать дальше →
Total votes 24: ↑24 and ↓0 +24
Comments 13

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

Reading time 8 min
Views 5.3K

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

Сделать свой блог на vibe
Total votes 18: ↑17 and ↓1 +16
Comments 3

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

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

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

Reading time 7 min
Views 7K
Доброго времени суток, хабр!

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

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

Поехали
Total votes 11: ↑10 and ↓1 +9
Comments 17

DConf2016

Reading time 3 min
Views 3.8K
Доброго времени суток, хабр!

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

image

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

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

Читать дальше →
Total votes 6: ↑6 and ↓0 +6
Comments 14

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

Reading time 4 min
Views 18K
Доброго времени суток, хабр!

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

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

Читать дальше →
Total votes 27: ↑15 and ↓12 +3
Comments 57

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

Reading time 3 min
Views 11K
Доброго времени суток, хабр!

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

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

Reading time 11 min
Views 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
}

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

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

Reading time 11 min
Views 3.9K
Доброго времени суток, хабр!

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

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

Reading time 10 min
Views 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(!!) сек. Тут я решил разобраться.
Читать дальше →
Total votes 27: ↑22 and ↓5 +17
Comments 34

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

Reading time 9 min
Views 8.4K
Доброго времени суток, хабр!

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

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

Reading time 8 min
Views 14K
Доброго времени суток, хабр!

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

Контракты в D

Reading time 5 min
Views 8.1K
Доброго времени суток, хабр!

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

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

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

Reading time 7 min
Views 8K
Доброго времени суток, хабр!

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

3D на D

Reading time 8 min
Views 14K
Доброго времени суток, хабр!

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

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



Читать дальше →
Total votes 24: ↑23 and ↓1 +22
Comments 0

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

Reading time 8 min
Views 7.1K
Доброго времени суток, хабр!

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

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

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity