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

    • Tutorial

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


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


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

    • Tutorial

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

    Сделать свой блог на vibe
    • +16
    • 4,4k
    • 3
  • REST-сервер и тонкий клиент с использованием vibe-d

    • Tutorial
    Доброго времени суток, Хабр! Если Вам хотелось разделить своё приложение на сервер и клиент, если Вы хотите добавить API к своему vibe-сайту или если Вам просто нечего делать.
    добро пожаловать под кат
  • Реализация reference counting или жизнь без GC (почти)

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

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

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

    Поехали
  • DConf2016

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

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

      image

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

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

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

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

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

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

        Читать дальше →
      • Немного сахара в комбинаторике

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

        Каждый уважающий себя программист знает, что глубокие вложенности — плохой стиль. Но есть алгоритмы, которые реализуются каскадом вложенных циклов (3 и более). В этой статье я хочу рассказать, как можно справиться с проблемой вложенных циклов при переборе комбинаций на любимом языке D.
        Читать дальше →
        • +11
        • 10,4k
        • 6
      • Compile-time рефлексия D, практика

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

        В прошлой статье были рассмотренны базовые элементы 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
        }
        

        Осторожно: много кода (с комментами).
        Читать дальше →
      • Compile-time рефлексия D

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

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

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


          Моим основным ЯП является 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(!!) сек. Тут я решил разобраться.
          Читать дальше →
        • D для новичков, часть 1

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

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

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

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

          Пример подобной спецификации для функции:
          Читать дальше →
          • +16
          • 7,8k
          • 3
        • Управление и уборка в D

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

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

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

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

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



            Читать дальше →
          • Пишем вектор на Dlang

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

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

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