Если вы, вдруг не знали, то помимо всякой ерунды, публикуемой на
своем блоге, я еще и занимаюсь переводом блога Эрика Липперта (Eric Lippert)
Fabulous Adventures in Coding на русский язык. В русскоязычном варианте этот блог носит название
Невероятные приключения в коде.
Занимаюсь я этим делом вот уже
полтора года и не разу не пожалел потраченного времени. Я надеюсь, что чтение статей Эрика на русском языке доставляет хоть малую толику того удовольствия, которое я получаю при переводе!
Но сегодня я не об этом. Точнее не совсем об этом. Мы начали публиковать переводы, датированные апрелем 2009-го года, но, как это ни удивительно, до этого Эрик писал не менее часто и не менее интересно. Посему я предлагаю вернуться к его старым хитам и восстановить, так сказать, справедливость и перевести на русский язык и их.
Я сделал небольшой список того, что я думаю перевести, но, вполне возможно, что я что-то упустил (а я точно что-то упустил), поэтому я всецело открыт для предложений (*). Итак, вот сам список:
The Stack Is An Implementation Detail, Part One (2009-04-27)
The Stack Is An Implementation Detail, Part Two (2009-04-05)
Пара весьма интересных и популярных статей, в которых рассматривается разница между значимыми и ссылочными типами с точки зрения расположениях их экземпляров в памяти. Эта тема рассматривается, наверное, в сотне различных статей, да и сам Эрик пишет об этом весьма часто. Тем не менее, это одна из лучших заметок в этой теме.
Events and Races (2009-04-29)
Одним из классических вопросов правильного “зажигания” событий является вопрос многопоточности. В этой заметке речь идет именно об этом.
Representation and Identity (2009-03-19)
Отличная заметка о том, почему при распаковке упакованного байта в int мы получаем исключение InvalidCastException.
Locks and exceptions do not mix (2009-03-06)
В статье рассматриваются изменения, внесенные в реализацию метода Monitor.Enter в .Net 4.0 для предотвращения возможных deadlock-ов, которые были вполне возможны в более ранних версиях .Net Framework.
References are not addresses (2009-02-17)
Рассматривается разница между ссылками и указателями в языке C#, ну и, как говорит название, Эрик показывает, почему ссылки некорректно рассматривать, как адрес в памяти.
Why no var on fields? (2009-01-26)
И правда, почему? На часть этих вопросов я уже ответил совсем недавно в своей заметке, ну а все сложности реализации компилятора лучше почитать у Эрика
Vexing exceptions (2008-09-10)
Очень полезная статья, в которой рассматриваются три «семантических» типа исключений. Все это помогает устаканить в голове некоторые вопросы обработки исключений и таки понять, как их обрабатывать.
High maintenance (2008-09-08)
Отличное ревью всего лишь одной функции, в 6-ти строках которой показаны 5 разных code smells. Много интересных мыслей, начиная от контракта функции заканчивая проблемами предварительного обобщения (premature generialization).
Reading Code Over the Telephone (2008-05-16)
Не rocket science, но, тем не менее, очень полезно знать, как читаются различные лямбда-выражение.
Subtleties of C# IL codegen (2007-08-17)
Интересная заметка, в которой показывается почему, например, lock(expression) statement не является потокобезопасными в случае возникновения асинхронных исключений, а также рассмотрена разница между инструкциями call и callvirt.
Еще раз напомню, что это не полный список, а лишь то, что было у меня в закладках, так что никакой претензии на полноту. А посему, жду ваших преложений!
----------------
(*) Я надеюсь на разумную аргументацию предложений. Мы просто не в состоянии перевести и опубликовать все старые посты, да и необходимости в этом, откровенно говоря, нет. Поэтому, если вы предлагаете к переводу некоторую статью, то разумно как минимум привести краткое содержание (парой предложений), ну и если возможно, то рассказать, чем же она такая выдающаяся.