Рубрика «compile-time»
Такого «Посетителя» вы ещё не видели — Visitor.NET
2025-05-01 в 9:01, admin, рубрики: acyclic dependencies principle, compile-time, csharp, dotnet, patterns, ruvds_статьи, typesafety, visitor
«Посетитель» (visitor) — один из самых сложных паттернов Банды Четырёх.
На языке C# для него можно создать множество реализаций, однако все они так или иначе имеют ограничения из-за возникающего динамического приведения типов.
В рамках статьи вы погрузитесь в проблематику мультиметодов и увидите новую реализацию паттерна, лишённую озвученных недостатков и открывающую возможность к написанию по-настоящему гибкого и типобезопасного кода!Читать полностью »
Работа со строками на этапе компиляции в современном C++
2018-11-06 в 3:12, admin, рубрики: c++, compile-time, strings, templates, высокая производительность, ненормальное программирование, Программирование, С++, С++14
Если вы программируете на C++, то наверняка задавались вопросом почему нельзя сравнить два строковых литерала или выполнить их конкатенацию:
auto str = "hello" + "world"; // ошибка компиляции
if ("hello" < "world") { // компилируется, но работает не так, как ожидалось
// ...
}
Впрочем, как говорится, "нельзя, но если очень хочется, то можно". Ломать стереотипы будем под катом, причем прямо на этапе компиляции.
Борьба за время сборки iOS-приложений
2017-06-19 в 8:12, admin, рубрики: compile-time, ios development, iOS разработка, objective-c, swift, xcode, Блог компании Tinkoff.ru, время компиляции, разработка под iOSЧуть больше месяца назад мы выпустили iOS-приложение «Тинькофф Инвестиции». Приложение полностью написано на языке Swift, но имеет некоторые Objective-C-зависимости. Продукт быстро начал обрастать новой функциональностью, а вместе с тем время сборки проекта существенно увеличивалось. Когда мы пришли к тому, что после clean или значительных правок проект собирался дольше шести минут, мы осознали, что перемены необходимы.

На просторах интернета было найдено много действенных и не очень способов ускорить время сборки проекта. Особенно нас интересовало время сборки debug-версии, потому что работать становилось всё сложнее. Ниже я расскажу о методах, которые мы опробовали в рамках решения задачи, и результатах, которых мы добились. Хочу отметить, что долгое время сборки может зависеть от разных факторов, поэтому и методы для каждого проекта используются разные.Читать полностью »
Message dispatching на D
2012-08-18 в 14:09, admin, рубрики: compile-time, dlang, game development, Gamedev, Программирование, метки: compile-time, dlang, Gamedev Многие разработчики игр сталкиваются с проблемой описания и реализации протокола общения клиента и сервера, особенно если пишут свои велосипеды для работы с сокетами. Ниже я расскажу о моей попытке решить задачу как можно элегантнее и удобнее для дальнейшего использования и масштабирования приложения. Будет много compile-time'a с автоматической кодогенерацией, нежно приправленный щепоткой run-time'a.
Читать полностью »
Вычисление CRC32 строк в compile-time
2012-05-16 в 15:30, admin, рубрики: c++, compile-time, inline, mail.ru агент, локализация, метки: compile-time, inline, mail.ru агент, локализация 
По своей программистской природе я очень не люблю неоптимальность и избыточность в коде. И вот, читая в очередной раз на работе исходный код Mail.Ru Агента, вновь наткнулся на одну раздражающую особенность в способе реализации перевода строк продукта на разные языки.
Локализация здесь выполняется довольно нехитро. Все строки, требующие перевода, оборачиваются в макрос _TR():
wprintf(L"%sn", _TR("Some hashing string"));
Макрос возвращает нужную версию текста в зависимости от текущего используемого языка. Определён он следующим образом:
#define _TR(x) g_Translator.Translate(x)
Здесь происходит обращение к глобальному объекту g_Translator, который в функции Translate() считает crc32 от указанной строки и ищет в своей xml-базе перевод с совпадающей контрольной суммой.
Не буду судить насколько такое решение оправдано, но оно проверено временем и показало себя достаточно надёжным. И всё бы ничего, но такое решение не лишено недостатков: по сути, функция делает лишнюю работу — контрольные суммы можно было бы подсчитать один раз на этапе компиляции, и использовать в дальнейшем уже готовые числовые значения. Это также избавило бы от необходимости хранить в исполняемом образе дублирующиеся строки, ведь они уже есть во внешнем xml-файле с переводами.
Немного погуглив по запросу «compile-time crc32» я быстро понял, что задача это не самая тривиальная, а готовых решений мне найти так и не удалось.
Читать полностью »

