среда, 30 марта 2011 г.

[ANN]ounce книг 3’2011

Уже прошло достаточно времени с момента последнего книжного анонса, так что за это время накопилось достаточно новинок, о которых мне бы хотелось рассказать, а широкой общественности, надеюсь, об этом услышать. Формат анонса остается неизменным, я подобрал несколько книг, выпущенных отечественными и иностранными издательствами за последнее время, с которыми я немного познакомился. Степень моего знакомства с этими книгами, как обычно может отличаться в значительных пределах, от «я редактировал перевод этой книги на русский язык, так что я знаком с ней очень хорошо» до, «вот блин, классная тема книги и отзывы отличные, обязательно добавлю в свой бесконечный список книг, которые я хочу прочитать». Так что по каждой конкретной книге принимать решение вам самим, но можно с уверенностью сказать, что каждая из приведенных ниже книг, как минимум, достойна вашего внимания.

Фриман и др. Паттерны проектирования. Питер 2011

untitled

(Оригинал: Freeman et al. Head First Design Patterns. O’Reilly Media, 2004)

понедельник, 28 марта 2011 г.

Проблемы запуска .Net приложений под 64-битными ОС

Я уже второй раз за последнее время сталкиваюсь с разными проблемами запуска «управляемых» приложений под 64-битным операционками, так что думаю, пришло время немного об этом рассказать.

Итак, программирование на платформе .Net делает еще один шаг по отделению прикладного программиста от всяких низкоуровневых платформенно-зависимых вещей типа размеров указателя, выравнивания, размеров целочисленных типов данных и других проблем, характерных для программирования на неуправляемых С/С++. Теперь все становится значительно проще и компиляторы таких языков программирования как C# или VB.Net не генерируют ассемблерные инструкции напрямую (хотя такая возможность и присутствует), вместо этого, результатом компиляции является код на промежуточном языке программирования, который затем компилируется во время выполнения JIT-компилятором в набор инструкций для конкретной платформы.

понедельник, 21 марта 2011 г.

Визуализация деревьев выражений с помощью TeX

Для затравки. Хотите узнать, как из вот такого выражения на языке C#:

Expression<Func<double>> bondPriceValueExpression = 
    () => C * ((1 - Math.Pow(1 + i, -n)) / i) + M / Math.Pow(1 + i, n);

Получить вот такую картинку:

BondPrice

Если это так, то милости прошу под кат.

понедельник, 14 марта 2011 г.

Частичные классы

Частичные классы (partial classes) (*) – это весьма простая конструкция языка C#, которая позволяет определить один класс в нескольких файлах (**). Это далеко не rocket science, но существует пара интересных сценариев их применения, которые являются не столь очевидными с первого взгляда. Но об этом позже, а начнем мы лучше с простого объяснения, что это такое и с чем его едят.

Общие сведения

Давайте вспомним старые добрые дни C# 1.0, когда спецификация языка была вдвое тоньше, возможностей языка было на порядок меньше, да и не было никаких LINQ-ов и всех остальных dynamic-ов (и вопросов на собеседовании, соответственно, тоже). Но даже тогда компилятор языка старался скрасить наши с вами серые будни и усердно выполнял всякую унылую работу, но делал он это не втихаря, путем генерации всяких там анонимных классов или методов, а путем генерации C# кода с помощь дизайнеров. И все бы ничего, но с этим подходом зачастую приходили и некоторые проблемы, которые, в основном сводились к ярому желанию разработчика расширить этот код и к ярому сопротивлению этого кода от подобного ручного вмешательства. Другими словами, внесение любых изменений в автосгенерированный код всегда вели к беде, ибо тут же прибивались компилятором при повторной генерации.