Автоматическое добавление сеттеров и геттеров

Очень часто программисту необходимо добавить в класс сеттеры и/или геттеры. Иногда их бывает много, поэтому добавлять их вручную крайне лень! Поэтому, мы будем делать это автоматически с помощью «шаблонной магии». При этом, следует учесть, что поля класса/структуры должны быть строго типизированы, иначе ничего не получится, ну да это и к лучшему. Читать далее →

Подробнее

VBA и DLL на D

Для правильной работы проверьте путь до M2DLL.DLL в Declare VBA Excel!

Так получилось, что пришлось мне срочно заняться одной задачей на Excel. Проблема была в том, что нужно было выбирать информацию из большого текстового файла по определенным критериям и вставлять её в Excel. Сразу пришла мысль использовать VBA и при помощи него написать функцию, которая будет выдавать мне строку с информацией.

А почему бы не написать DLL, подумал я, ведь раньше я уже пытался писать DLL для VBA на C++. DLL это быстро, это интересно и позволяет отвлечься от каждодневной рутины. Но, так как я давно уже всё делаю на D, то и DLL решил писать на D. В качестве путеводителя по дебрям VBA я использовал замечательную книгу Брюса Мак-Кинни «Крепкий орешек 4 visual basic» 1996 года выпуска. Книга исключительно интересная и занимательная и ни сколько не потеряла своей актуальности. Читать далее →

Подробнее

«Мир проводов» в D

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

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

Подробнее

Добавление своей языковой конструкции в D

Существует ряд языков программирования (ЯП), синтаксис которых либо допускает введение конструкций, определяемых пользователем; либо разрешает переопределение (доопределение) существующих элементов языка. Такого рода языки делают программирование еще более приятным и интересным, позволяя реализовывать идеи из любого ЯП. Не знаю, как вам, а мне порой хочется иметь в своем любимом языке некоторые элементы, взятые из какого-то другого ЯП. Изучение других ЯП очень стимулирует, а к некоторым вещам просто возникает привычка, от которой никуда не денешься. Хотелось бы, чтобы у D была расширяемость синтаксиса, но, к сожалению, ее нет… Читать далее →

Подробнее

Слово о iota и enumerate

Может быть Вы помните о том, с чего наш блог начинался… Вначале был уникальный язык программирования под названием Icon, которым мы увлекались некоторое время назад. Он пленил нас своей простотой и продуманностью, а также своей сверхвысокоуровневостью и необычной концепцией генераторов. Чуть позже мы познакомились с D, который пошел гораздо дальше, воплотив в жизнь концепцию диапазонов.

Именно о некоторых интересных алгоритмах над диапазонами (в основном, над числовыми) сегодня и поговорим.

Читать далее →

Подробнее

Простая консольная программа для ведения списка задач (todo)

В этой статье я расскажу о том, как однажды я написал небольшую консольную программку для ведения списка задач почти полностью в функциональном стиле (за исключением использования переменных и некоторых приемов из ООП). К сожалению, в статье помимо полезных практических приемов будут и некоторые отрицательные примеры, в частности, некоторое дублирование кода и нерациональное использование функций стандартной библиотеки. Также в этой скромной публикации я покажу с чего я начал функциональное проектирование программы (будет показан пример кода на одном из функциональных языков), нестандартное использование одного файла из состава библиотеки QtE5, одну интересную библиотеку для раскрашивания сообщений в командной строке, а также я сделаю небольшое резюме о полученном в ходе работы над этой программкой todo опыте. Читать далее →

Подробнее

Добавление в класс универсального свойства

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

Читать далее →

Подробнее

Проверка любого типа на принадлежность к числовым

Иногда возникает необходимость проверить является ли некоторый тип числовым, при этом, если тип относится к числовым, то не важно целое ли это число или же с плавающей точкой. То есть решение должно быть универсальным. Читать далее →

Подробнее

Слоты и сигналы в QtE5

В Qt С++ используется два механизма обработки событий, это механизм виртуальных функций и механизм слотов и сигналов. Подробно останавливаться на этом не будем, так как в интернете очень много информации на эту тему. Главное — слот/сигнал, это имя функции с аргументами определенных типов. Мое представление об этом механизме сводится к следующим моментам Читать далее →

Подробнее