На протяжении последних месяцев я использую Go для имплементаций Proof of Concept (прим.пер.: код для проверки работоспособности идеи) в свободное время. Отчасти это было для изучения самого языка программирования. Программы сами по себе очень просты и не являются целью статьи, но сам опыт использования Go заслуживает того, чтобы сказать о нем пару слов. Go обещает быть (прим.пер.: статья написана в 2015) массовым языком для серьезного масштабируемого кода. Язык создан в Google, в котором активно им пользуются. Подведя черту, я искренне считаю, что дизайн языка Go плох для умных программистов.
Рубрика «D» - 3
Почему дизайн Go плох для умных программистов
2017-12-10 в 20:02, admin, рубрики: D, Go, golang, open source, programming languages design, Совершенный кодЛучше чем C
2017-08-25 в 11:53, admin, рубрики: C, D, dlang, Программирование, системное программированиеВ настоящее время у системных программистов практически нет выбора какой язык использовать. По хорошему все варианты сводятся или к чистому Си или к Rust, хотя как показывает опыт далеко не всем нравится его синтаксис.
Благодаря усилиями команды разработчиков языка у D теперь появилось совместимое с чистым Си подмножество обладающее не только привычным для любого программиста Си синтаксисом, но и значительно расширяющее функционал языка. Новое подмножество называется «betterC». Это подмножество позволяет перевести написание Си приложение на новый уровень.
Читать полностью »
Dlang Tour переведен на русский язык
2017-06-26 в 10:56, admin, рубрики: D, dlang, golang, ПрограммированиеDlang Tour — это интерактивное введение в язык D. Сделан по образцу Golang Tour.
В большинстве статей есть примеры кода, которые можно запустить из браузера.
Настройка Emacs для последователей Dlang
2017-04-09 в 1:39, admin, рубрики: D, emacs, метки: ac-dcd, D, d-mode, dcd, dlang, elisp, emacs, emacs-lispПродвинутому в мире программирования человеку, коим скорее всего являешься ты, хабравчанин, пояснять, что такое язык D, нет смысла — о нем, хоть краем уха, но слышать был должен.
Dlang — это настоящее благословение для бородатых мальчиков-программистов C++. И эта статья предназначена как раз им, программистам, открывшим для себя этот язык, но вставших на перепутье тернистого выбора той самой IDE, посредством которой они будут познавать как «ходить» без костылей.
Читать полностью »
Метарегулярные выражения на D
2017-03-06 в 2:05, admin, рубрики: D, ненормальное программирование, Программирование, Регулярные выраженияПробежался по хабам и не нашел ничего написанного одновременно в хабы "D" и "Ненормальное программирование". Может сложиться совершенно ложное представление что на D пишут исключительно нормальные люди, или еще хуже того — что знание D автоматически делает из любого программиста нормального человека. Спешу опровергнуть.
Хотя сам я строго говоря программистом на D не являюсь — у меня нет ни одного промышленного проекта, зато я периодически с удовольствием роюсь в чужом коде выковыривая вкусные изюминки. А еще я пишу для себя небольшие утилиты, чаще всего для обработки текстовых данных, то что обычно делается на скриптовых языках, благо D предлагает очень неслабый набор инструментов для работы со строками.
Ну а там где текстовые процессоры, там и регулярные выражения, как же без них. И здесь D снова оказывается на высоте, по легкости и удобству использования его библиотека регулярных выражений приближается к Perl. Но в Perl регулярки являются частью синтаксиса, можно сказать что сам язык выстроен в значительной мере вокруг них, а в D это вполне себе независимый модуль — std.regex из стандартной библиотеки написанный Дмитрием Ольшанским. Еще один замечательный момент — парсер выражения может быть построен во время компиляции (естественно если само выражение задано литералом), и разумеется я не мог удержаться чтобы не посмотреть как оно внутри устроено.
И вот тут то, разбираясь в деталях у меня слетела шляпа возникла мысль, а нельзя ли вызывать одно регулярное выражение изнутри другого? Не вставить литерал (как тривиально можно сделать в Perl например), а непосредственно вызвать скомпилированный код одного выражения изнутри другого. Достаточно на мой взгляд дурацкая идея чтобы с ней стоило поиграть.
Итак, чего мы хотим? Примерно вот такого (пока это псевдокод):
INT=regexp("d+");
LIST=regexp("INT(,INT)*");
Так ли быстр ваш любимый С или нативная реализация линейной алгебры на D
2016-10-03 в 6:46, admin, рубрики: C, D, Eigen, Intel MKL, LDC, machine learning, Mir GLAS, OpenBLAS, opencv, Алгербра, линейная алгебра, машинное обучениеТем, кто занимается системами машинного обучения и компьютерным зрением, хорошо знакома такая библиотека как OpenBLAS (Basic Linear Algebra Subprograms). OpenBLAS написан на C и используется повсеместно там где нужна работа с матрицами. Так же у него есть несколько альтернативных реализаций таких как Eigen и двух закрытых имплементацией от Intel и Apple. Все они написаны на СС++.
В настоящий момент OpenBLAS используется в матричных манипуляциях в таких языках как Julia и Python (NumPy). OpenBLAS крайне хорошо оптимизирована и значительная её часть вообще написана на ассемблере.
Однако так ли хорош для вычислений чистый C, как это принято считать?
Встречайте Mir GLAS! Нативная реализация библиотеки линейной алгебры на чисто D без единой вставки на ассемблере!
Читать полностью »
Свой блог на vibe-d, часть 1: простое веб приложение с использованием шифрования
2016-09-20 в 4:03, admin, рубрики: D, diet, dlang, jade, web, web-service, web-разработка, Разработка веб-сайтовДоброго времени суток! Если Вы давно хотели сделать себе, соседке или её собаке сайт, но пока не сделали, то эта статья для Вас! В этой серии статей я покажу основы работы с vibe для создания сайтов на примере простого блога.
В первой части мы разберём базовые моменты и добавим к получившемуся приложению шифрование.
REST-сервер и тонкий клиент с использованием vibe-d
2016-09-18 в 3:41, admin, рубрики: D, dlang, rest, web-клиент, Программирование, тонкий клиентДоброго времени суток!
Если Вам хотелось разделить своё приложение на сервер и клиент, если Вы хотите добавить api к своему vibe сайту или если Вам просто нечего делать
Читать полностью »
Реализация reference counting или жизнь без GC (почти)
2016-06-26 в 23:30, admin, рубрики: D, dlang, gc, memory management, RC, высокая производительность, ПрограммированиеДоброго времени суток!
Многие считают, что системный язык и сборщик мусора — не совместимые понятия. В некоторых ситуациях, действительно, сборщик может доставлять некоторые проблемы.
Как Вам, скорее всего, известно — в D сборщик мусора, отчасти, опционален. Но ручное управление памятью это прошлый век.
Поэтому сегодня я покажу как можно реализовать сборку мусора самому через «полуавтоматический» подсчёт ссылок, а так же как при этом минимизировать обращения к встроенному в runtime сборщика мусора на основе сканирования памяти.
dlang-requests — типа python-requests, только для D (часть 2)
2016-06-25 в 16:42, admin, рубрики: D, dlangДоброго времени суток!
Во второй части статьи опишу использование библиотеки dlang-requests для менее стандартных случаев.