Невероятные приключения в коде
Перевод блога Эрика Липперта
Бесконечный как звезды
Сегодня не будет ничего о компьютерах. Недавно умер Мартин Гарднер (Martin Gardner) – писатель,...
Author: Russian MSDN Date: 08/24/2010
Операторы преобразования не подчиняются дистрибутивному закону
Еще один интересный вопрос со StackOverflow. Давайте рассмотрим следующую неприятную ситуацию:...
Author: Russian MSDN Date: 08/23/2010
Все существующие программы. Часть 9
Мы здесь, кажется, столкнулись с некоторой проблемой с производительностью. Мы можем...
Author: Russian MSDN Date: 08/05/2010
Все существующие программы. Часть 8
Хорошо, давайте начнем с начала. Предположим, что у нас есть строка, которая содержит...
Author: Russian MSDN Date: 08/04/2010
Все существующие программы. Часть 7
Все, вроде бы идет нормально. У нас есть каркас рекурсивного решения для перебора всех строк...
Author: Russian MSDN Date: 08/03/2010
Все существующие программы. Часть 6
Работая над механизмом перечисления результатов работы различных грамматик мы столкнулись с...
Author: Russian MSDN Date: 08/02/2010
Все существующие программы. Часть 5
В прошлый раз: Мы явно уменьшили задачу размером k, к нескольким задачам размера, меньшего, чем k-1,...
Author: Russian MSDN Date: 08/01/2010
Все существующие программы. Часть 4
Напомню, что цель этого упражнения заключается в создании инструмента, который бы помогал мне...
Author: Russian MSDN Date: 07/31/2010
Все существующие программы. Часть 3
Предположим, мы хотим написать грамматику для упрощенного объявления классов языка C#....
Author: Russian MSDN Date: 07/30/2010
Все существующие программы. Часть 2
Предположим мы хотим найти CFG для чисел и суммирования. Рассмотрим очень простую грамматику только...
Author: Russian MSDN Date: 07/29/2010
Все существующие программы. Часть 1
Теперь мы умеем перечислять все двоичные и все произвольные деревья определенного размера, и,...
Author: Russian MSDN Date: 07/28/2010
Все существующие деревья
В прошлый раз мы говорили о том, что количество двоичных деревьев с количеством узлов, равным n...
Author: Russian MSDN Date: 07/27/2010
Все существующие двоичные деревья
Недавно я написал небольшой алгоритм, который выполняет некоторые операции c двоичными деревьями. Я...
Author: Russian MSDN Date: 07/27/2010
Это важно[1]!
Я только что получил свою копию книги “Essential C# 4.0” (“Сущность языка C# 4.0”), и...
Author: Russian MSDN Date: 07/26/2010
Игнорирование скобок
Еще один забавный вопрос на StackOverflow: существует ли в C# разница между “return something;” и...
Author: Russian MSDN Date: 07/26/2010
Точность и погрешность DateTime
Структура DateTime представляет дату в виде 64-разрядного значения, которое содержит...
Author: Russian MSDN Date: 07/24/2010
Превращаем баг в фичу
Меня очень повеселил этот пост о том, что арифметическая ошибка превратилась в особенность...
Author: Russian MSDN Date: 07/23/2010
Некоторые новые возможности C# 4.0
Я надеюсь, вы уже знаете, что мы завершили реализацию C# 4. Была добавлена поддержка взаимодействия...
Author: Russian MSDN Date: 07/22/2010
Базовый класс в середине иерархии
Дополнение: Я переписал этот пост на основе новой информации, которую только что узнал. Вначале мне...
Author: Russian MSDN Date: 07/21/2010
Рыцари, жулики, Protected и Internal
При переопределении виртуального метода в C# вы требуете гарантий, что указанный...
Author: Russian MSDN Date: 07/20/2010
Носки, дни рождения и коллизии хэш-функций
Предположим у вас есть огромная куча, в которой смешаны белые, черные, зеленые и красные...
Author: Anton Belousov - MSFT Date: 07/04/2010
Не давайте классам и пространствам имен одинаковые имена. Часть 4
Часть 4. Делаем проблему еще серьезнее Как я уже сказал ранее, фундаментальная задача пространств...
Author: Anton Belousov - MSFT Date: 07/03/2010
Не давайте классам и пространствам имен одинаковые названия. Часть 3
Часть 3: Проектирование неудачных иерархий Причина, по которой люди изобретают иерархии,...
Author: Anton Belousov - MSFT Date: 07/02/2010
Не давайте классам и пространствам имен одинаковые названия. Часть 2
Часть 2: Автоматически сгенерированный код Вы написали namespace Foo { public sealed class...
Author: Anton Belousov - MSFT Date: 03/11/2010
Не давайте классам и пространствам имен одинаковые названия. Часть 1
В книге “Framework Design Guidelines” в разделе 3.4 сказано «не используйте одинаковые названия для...
Author: Anton Belousov - MSFT Date: 03/09/2010
Перебор с повторным использованием
Недавно один пользователь задал такой вопрос: У меня есть код, который обслуживает очередь рабочих...
Author: Anton Belousov - MSFT Date: 03/04/2010
Привлечение талантов
Сегодня мне потребуются ваши мысли, мнения и советы. В любой крупной организации с течением времени...
Author: Anton Belousov - MSFT Date: 03/01/2010
Поаккуратнее с топором. Часть 2. А как насчет исключений?
Предположим, вы завершаете выполнение рабочего потока, о чем мы говорили в прошлый раз, и поток...
Author: Anton Belousov - MSFT Date: 02/25/2010
Поаккуратнее с топором. Часть 1: Нужно ли мне указывать таймаут?
Не так давно, примерно шесть лет назад, я рассказывал немного о том, как решить, стоит ли продолжать...
Author: Anton Belousov - MSFT Date: 02/22/2010
В чем разница между тернарным и третичным?
Условный оператор (условие ? следствие : альтернатива) часто называют «тернарным оператором»...
Author: Anton Belousov - MSFT Date: 02/18/2010
Лимонный завиток
Недавно я рылся в архиве проектных записей ранних дней работы над языком C#. Видимо у того, кто их...
Author: Anton Belousov - MSFT Date: 02/15/2010
Цепочки вызовов простых операторов присваивания не такие уж и простые
Дополнение: Я прерываю этот эпизод «Невероятных приключений» в коде просьбой моего друга и коллеги...
Author: Anton Belousov - MSFT Date: 02/11/2010
Пишите код, который читается как спецификация
Как я уже упоминал немного ранее, существует несколько ошибок в коде компилятора, который...
Author: Anton Belousov - MSFT Date: 02/08/2010
Сколько проходов?
В огромном объеме кода, написанном на языках C/C++, обычно происходит разделение кода на...
Author: Anton Belousov - MSFT Date: 02/03/2010
Стиль отвечает семантике
Какой стиль лучше? bool abc; if (Foo()) abc = Bar(); else abc = false; или bool abc =...
Author: Anton Belousov - MSFT Date: 02/01/2010
Вызовы конструкторов в произвольных местах
В C# вы можете вызвать один конструктор из другого, но только перед выполнением тела вызывающего...
Author: Anton Belousov - MSFT Date: 01/28/2010
Почему не выдаются предупреждения на неиспользуемые директивы using?
Как я уже говорил ранее, мы пытаемся использовать предупреждения только тогда, когда можем с...
Author: Anton Belousov - MSFT Date: 01/25/2010
В чем разница между деструктором и методом завершения?
Сегодня будет еще один диалог и еще один эпизод из моей постоянной рубрики «в чем разница?». В чем...
Author: Anton Belousov - MSFT Date: 01/21/2010
Аномалия инициализации
Дополнение: Я выяснил, что эта проблема значительно более загадочна, чем изначально думал исходя из...
Author: Anton Belousov - MSFT Date: 01/18/2010
Почему я не могу получить доступ к защищенному члену из производного класса? Часть 6
Читатель Джес Макгрю (Jesse McGrew) задал отличный дополнительный вопрос к моему сообщению 2005 года...
Author: Anton Belousov - MSFT Date: 01/14/2010
Продолжение выполнения внешнего цикла
Когда у вас есть вложенный цикл, иногда возникает желание перейти к следующей итерации внешнего...
Author: Anton Belousov - MSFT Date: 01/11/2010
Существует ли такое понятие, как чрезмерная точность?
Так, хватит пустой болтовни, возвращаемся к проектированию языков программирования. Предположим, вы...
Author: Anton Belousov - MSFT Date: 01/07/2010
Двоюродный племянник
Всех с новым годом и добро пожаловать в 2010 год, или, как предпочитает мой друг профессор Орбифолд...
Author: Anton Belousov - MSFT Date: 01/04/2010
Это самое прекрасное время года
Вот небольшое праздничное приветствие для всех вас. Ну, или, по крайней мере, для жителей стран...
Author: Anton Belousov - MSFT Date: 12/26/2009
Используйте правильные инструменты
Рассмотрим следующую схему: У меня есть клиентское приложение, которое я продаю. При первом запуске...
Author: Anton Belousov - MSFT Date: 12/14/2009
Ограничения не являются частью сигнатуры метода
Что произойдет в этом случае? class Animal { } class Mammal : Animal { } class Giraffe : Mammal {...
Author: Anton Belousov - MSFT Date: 12/10/2009
Преобразования запросов являются синтаксическими
Как вы, вероятно, знаете, в C# существует два варианта написания LINQ-запросов. Лично я предпочитаю...
Author: Anton Belousov - MSFT Date: 12/07/2009
Четкие правила корректности вариантности
Думаю, всем вам будет интересно узнать точное описание того, как именно мы определяем допустимость...
Author: Anton Belousov - MSFT Date: 12/03/2009