All streams
Search
Write a publication
Pull to refresh
69
0
Александр Фомин @Sane

User

Send message
Имхо, это самый реалистичный пример, который я нашел. Не могу вспомнить другие распространенные примеры, где нужен precomputing.
Та часть компилятора, которая отвечает за шаблоны и константы. :)
Ты выбрал не самый эффективный способ. Перебор можно ограничить до sqrt(N), уменьшишь количество шаблонов.
Твои примеры — это страшно. В продакшн-коде такое увидеть — не дай бог.
Естественно упала. На пару-тройку секунд.
Это да. Такие вещи, серпя сердце, можно применять только в хорошо известных алгоритмах — как в данном случае. Сам бы за такое давал по пальцам. Но эти знания, почерпнутые из книги Александреску, подвигли меня на изучение хотя бы основ функционального программирования, и эти знания мне очень пригодились при переходе на C# 3.5, LINQ, лямбды и иже с ними.
У меня при попытке открыть Параметры вылетает с unhandled win32 exception. Windows XP x64.
Эти темплейты закрываются внутри пространства имен и снаружи не видны. Вообще говоря это — proof of concept, ничего более.
Ну, на написание данной вещи действительно ушло много времени. Но теперь есть навык, такое же можно писать очень быстро. Но, как вы правильно замтеили, это же блог «Ненормальное программирование».
Нехорошее предчувствие, что появится нечто платное…
Рефлексия — это медленно, это ран-тайм проверки, это запутанная архитектура. Любую задачу, которая решается через рефлекшн, можно решить без него. Рефлекшн — это как универсальная тригономтерическая подстановка, вроде и решает проблему, но через такие места…
Нудновато немного. Начиная с определенных, задачи становятся «на знание», такие, которые не решишь, не зная матаппарата, который лежит под задачей.
Типун вам на язык. Рефлексия должна быть последней инстанцией. Если решение проблемы подразумевает рефлексию — вы неправильно ее решаете. Имхо, рефлексия оправдана только для сериализации, любое другое ее использование — это ошибки проектирования и программирования (отельно следует оговрить, конечно Reflection Emit, однако, опять-таки, только для сериализации и, возможно, перформанса.)
Это парсер хабра так код портит.
Поправил, спасибо. Хотелось бы все-таки избегать мешанины русского и английского, и так на работе уши вянут от «Засабмитай баг на Кью-Эй», «Заэстимировал реквайрмент — эффорт ларджь».
Это как раз тот случай, которого хотелось бы избежать. К тому же, правилами хорошего тона, надо делать автопроперти, плюс ко всему,

var a = new Person {Name=«Иван», Surname=«Иванов»};
var b = new Person {Name=«Иван», Surname=«Иванов»};

a.GetHashCode() != b.GetHashCode();
a != b;

То есть, придется еще реализовывать две функции для работы с Dictionary.
Да, но опять-таки вы описываете тип внутри вашей новой функции. Да и extension method для object как-то чересчур.
Спасибо, поправил.
Хм. Да, возможно, вы правы. Но, думаю, анонимные типы в качестве ключей hash-based коллекций вполне имеют право на существование. Например, чтобы посчитать количество Tuple'ов — заполнять ими HashSet.
Языки вполне себе экзотичные. Brainfuck — эзотерический

Information

Rating
Does not participate
Location
Минская обл., Беларусь
Date of birth
Registered
Activity