Продолжаю серию публикаций Fil по CppCon 2017. В докладе представлены ранние наработки по добавлению рефлексии и кодогенерации в C++, а также по метаклассам, которые позволят генерировать части классов C++. В стандарт эти новшества попадут не ранее, чем в C++23.
Рубрика «кодогенерация» - 4
Пишем Guard
2017-06-13 в 8:34, admin, рубрики: .net, check, contracts, copy paster, exceptions, github, guard, java, nuget, open source, opensource, validation, исключения, кодогенерация, проверки, разработка
Привет!
Есть несколько способов проверять аргументы на правильность. Например, для проверки на null можно использовать:
- if (!ReferenceEquals(arg, null)) throw…
- Code Contracts: Contract.Requires(!ReferenceEquals(arg, null))
- Guard.IsNotNull(arg, nameof(arg))
В статье я рассмотрю только третий вариант (все примеры кода — для C#, однако некоторые из них будут полезны и в Java).
Советские «Эльбрусы» — обзор архитектуры
2016-10-25 в 4:43, admin, рубрики: superscalr stack processor, Анализ и проектирование систем, архитектура, кодогенерация, Компиляторы, Параллелизм, Проектирование и рефакторинг, реверс-инжиниринг, стек, стековые машины, суперскаляр, Эльбрус
Про предмет статьи ходит много домыслов — от «русский Барроуз» до «не имеющий аналогов». Вызвано это в немалой степени отсутствием (доступной) полноценной документации, немногочисленным кругом лиц, имевших с ними дело да и немалым временем, прошедшим с тех пор. «Эльбрус» превратился в один из мифов ушедшей эпохи.
С другой стороны, вычислительный комплекс несомненно существовал и показывал отличные для своего времени результаты. Возможно, благодаря скудости элементной базы, которая принуждала разработчиков к выдумыванию разного рода архитектурных трюков. Многие из этих трюков сейчас выглядят архаично, а некоторые достаточно актуальны.
Так что автор из свойственной ему любознательности попытался разобраться с доступной документацией и составить более — менее цельную картину. Если читателю это интересно — добро пожаловать под кат.
Читать полностью »
Кодогенерация в языке Go
2016-07-29 в 7:14, admin, рубрики: Go, golang, кодогенерация, ПрограммированиеВ данной статье хотелось бы рассмотреть некоторые возможности кодогенарации в рамках языка Go, которые могут частично заменить встроенную рефлексию и не потерять типобезопасность на этапе компиляции.
Язык программирования Go предоставляет мощные инструменты для кодогенерации. Очень часто Go ругают за отсутствие обобщений (generics) и это в самом деле может стать проблемой. И вот тут на помощь приходит кодогенерация которая на первый взгляд довольно трудна для небольших рутинных операций, но тем не менее является достаточно гибким инструментом. Уже существует некоторое количество готовых библиотек кодогенерации покрывающих базовые потребности в обобщениях. Это и «эталонный» stringer и более полезные jsonenums с ffjson А мощный gen и вовсе позволяет добавить в Go немного функциональщины, в том числе добавляет аналог так не хватаемого многим forEach для пользовательских типов. Ко всему прочему gen довольно легко расширяется собственными генераторами. К сожалению gen ограничен кодогенерацией методов для конкретных типов.
Собственно тему кодогенерации я решил затронуть не от хорошей жизни, а из за того, что столкнулся с небольшой задачей для которой не смог найти другого подходящего решения.
Читать полностью »
Хорошие инстинкты кодировщика в конечном итоге «ударят вас по зубам»
2016-07-11 в 5:42, admin, рубрики: gtd, баги, Блог компании TESTutor, жизненный опыт, код, кодирование, кодогенерация, разработка, советы бывалых, советы для разработчиков, советы разработчику, тестирование, тестирование по, управление разработкой
Я написал свои первые несколько строчек кода почти 32 года назад, когда мне было 6. Я развил очень сильные инстинкты программирования и мог смотреть на любую проблему, сразу зная, как ее решить — просто интуитивно.
К тому времени, когда я стал писать программы, чтобы зарабатывать себе на жизнь, я чувствовал себя рок-звездой. Я находил и исправлял ошибки быстрее, чем кто-либо из моих коллег. Моя команда отдавала мне самые незаметные и запутанные баги. Они даже стали называть меня мастером.
Но одной интуиции недостаточно. Я столкнулся со стеной. И никакой инстинкт кодировщика не помогал мне сквозь нее пробиться. Далее Bill Sourour поделится с нами информацией о том, как не останавливаться на достигнутом. Кому-то эти рассуждения, безусловно, покажутся очевидными. Ну, а кому-то — пригодятся.Читать полностью »
Генератор музыки на базе кодогенератора
2016-06-30 в 14:38, admin, рубрики: python, Алгоритмы, искусственный интеллект, искусство, кодогенерация, Компиляторы, музыка, ненормальное программированиеПривет, читатель! В этом топике я расскажу о своей идее генерации музыкальных композиций. Создадим язык описания ритма музыки на базе python, напишем компилятор этого языка в wave файлы и получим довольно нехилую электронную композицию.
Добро пожаловать под кат.
Читать полностью »
Суперскалярный стековый процессор: оптимизация
2016-04-12 в 5:02, admin, рубрики: C, cisc, clang, RISC, superscalr stack processor, Анализ и проектирование систем, архитектура, кодогенерация, Компиляторы, компиляция, масштабируемость, Параллелизм, стек, стековые машины, суперскаляр 
Продолжение серии статей, разбирающих идею суперскалярного процессора с
OoO и фронтендом стековой машины. Тема данной статьи — оптимизация обращений к памяти.
Предыдущие статьи:
1 — описание работы на линейном куске
2 — вызов функций, сохраняем регистры
3 — вызов функций, взгляд изнутри
Читать полностью »
Миллион файлов и один ноутбук
2016-03-29 в 7:48, admin, рубрики: Блог компании ua-hosting.company, ит-инфраструктура, кодогенерация, набор данных, файлы, хранение данныхРассмотрим на примере он-лайн магазина, как с помощью ноутбука проанализировать миллион файлов.

При наличии достаточно современного компьютера, обрабатывать данные «среднего размера» возможно с помощью разумного использования утилиты GNU Parallel и обработки потоков.
Суперскалярный стековый процессор: подробности
2016-03-28 в 5:02, admin, рубрики: C, cisc, RISC, superscalr stack processor, Анализ и проектирование систем, архитектура, кодогенерация, Компиляторы, компиляция, масштабируемость, Параллелизм, стек, стековые машины, суперскаляр 
Продолжение серии статей, разбирающих идею суперскалярного процессора с
OoO и фронтендом стековой машины.
Тема данной статьи — вызов функций, вид изнутри.
Читать полностью »
Суперскалярный стековый процессор: продолжаем скрещивать ужа и ежа
2016-03-22 в 5:02, admin, рубрики: C, cisc, RISC, Анализ и проектирование систем, архитектура, кодогенерация, Компиляторы, компиляция, масштабируемость, Параллелизм, стек, стековые машины, суперскаляр 
Продолжение статьи, где удалось продемонстрировать, что фронтенд стековой машины вполне позволяет спрятать за ним суперскалярный процессор с OoO.
Тема данной статьи — вызов функций.
Читать полностью »
