суббота, 27 февраля 2010 г.

Твой путь

Данную статью я посвящаю трем категориям людей: евангелистам Microsoft, работодателям и специалистам, связавшим свою деятельность с платформой dotNet (далее будем подразумевать язык C#). На написание данного опуса меня вдохновило очередное перечитывание книги «CLR via C#» Джеффри Рихтера. Сейчас объясню почему.

На данном историческом этапе людям, позиционирующим себя как dotNet разработчики, зачастую приходится отвечать на вопросы подобные этим:

- почему вы выбрали C#, а не C++?
- чем C# лучше C++?
- а вы знаете, что C# медленнее C++? (очередной «капитан очевидность»)

Работодателей выделю в отдельный абзац, по причине существования тенденции непонимания ими основополагающих факторов. В моей практике не так давно был веселый случай, когда перспективный работодатель, зная мое владение C++, предложил работу, которая подразумевала бы мой абсолютный переход обратно на C++. На что, получив мой отрицательный ответ, мотивированный нежеланием делать шаг назад, начал дискуссию в лучших традициях “Holy wars C++ vs C#”. Но война не сложилась. Видимо сказалось мое накопленное к тому моменту недовольство с оплатой предыдущих проектов, в итоге гражданин дуется на меня до сих пор, так и не поняв мотивов и побуждений движущих мною. По этому, уважаемые работодатели, на подобные предложения я хотел бы ответить Вам цитированием слов абсолютного авторитета в нашей области Джеффри Рихтера (цитата приведена далее по тексту и выделена курсивом, особенно ценное выражение выделено жирным курсивом). И если в ответе на ваше предложение вы нашли ссылку на данную статью, то мой ответ скорее отрицательный, чем положительный.

Так же постоянно находятся желающие, хотите вы этого или нет, поспорить с вами, развязать священную войну и доказать что именно C++ есть единственный и ничего кроме него. От серьезного человека Вы вряд ли такое услышите и скорее всего найдутся более интересные темы для беседы с ним. Разработчики с такими ситуациями сталкиваются в своей повседневной деятельности, в разговорах с коллегами, желающими выделится на вашем фоне, и т.д., евангелисты на встречах, семинарах, выступлениях, докладах. У каждого из нас есть свой багаж аргументов и оборонительных тактик, что является естественным. Не всегда выгодно игнорировать человека. Иногда обстоятельства складываются так, что остается только два пути пасовать или побеждать. Для победы, желательно не затягивая дебаты, нужны веские и достаточные аргументы. Какими же эти аргументы должны быть? Возьмем за основу три принципа:

1. Козьма Прутков: «Зри в корень» -> определи - что для оппонента является точкой опоры.
2. Основополагающее правило РРБ: «Лишить противника равновесия максимально эффективно и быстро» -> соответственно выбить почву из под ног, лишив опоры.
3. Геометрический метод: «Доказательство от обратного» -> все действия нужно провернуть с позитивом, не стандартно и оригинально.

Исходя из выше сказанного и того, что ваш оппонент ярко выраженный фанат С++, а так же человек не желающий развиваться дальше достигнутой ступеньки. Возьмем за основу нашей тактики следующую последовательность вопросов:

1. Какая книга и какого автора является для вас библией в вашей профессиональной деятельности как C++ программиста? – естественно автор будет Джеффри Рихтер или вы общаетесь не с программистом.
2. Что из себя представляет Джеффри Рихтер как специалист и кем он является: например по отношению к таким компаниям как Intel, DreamWorks и Microsoft? – нужно понимать, что данным вопросом мы преследуем сразу несколько целей. Во-первых: он подготавливает ситуацию к финальному ходу. Во-вторых: есть возможность заработать бонусные балы себе в глазах свидетелей (в зале например), если человек не владеет информацией глубже литературной деятельности автора. В-третьих: мы получаем добровольное признание оппонента в том, что данный автор является для него авторитетом с абсолютной степенью значимости. «… кто его тронет, он же памятник! …» - Рихтер выступал в роли консультанта для таких компаний как Intel, DreamWorks и Microsoft.
3. И контрольный вопрос: Как вы относитесь к высказыванию Джеффри Рихтера в одной из относительно недавних его книг? А конкретно:

«…Уже несколько лет я использую .NET Framework и должен сказать с уверенностью, что ни за что не вернусь к устаревшим технологиям абстрагирования и способам разработки ПО. И, если меня заставят, я предпочту сменить профессию! Вот как трудно отвыкать от хорошего. Честно говоря, вспоминая, чего стоило создавать приложения с использованием старых технологий, я просто не могу представить, как разработчикам вообще удавалось так долго создавать работающее ПО.»
Джеффри Рихтер, книга «CLR via C# программирование на платформе .NET FRAMEWORK на языке С#» 2-е издание, Введение, страница XIV.

За сим прощаюсь с вами. Вешаю на свой щит, как икону, фото и цитату Рихтера и со словами «изыйдите нечистые» продолжу свой путь.

P.S. Данная статья является результатом стечения обстоятельств и соответствующего настроения )

P.S.S. За статьей последовала переписка с Джеффри Рихтером, которую я привожу с его на то разрешения (Разговорный английский ни когда не был моей сильной стороной):

- Good day Jeffrey. I'm Russian developer and I adore Your books, that has directed me on writing the following article: «Твой путь». This article writing on Russian language. I be very happy if see You comment, if You have possibility.
- Добрый день Джеффри. Я являюсь русским разработчиком и достаточно сильно уважаю ваши книги, что вдохновило меня на написание следующей статьи: «Твой путь». Данная статья написана на русском языке. Я был бы очень счастлив увидеть Ваши комментарии, если Вас это не обременит.
-- Dmitry Timofeev

- I read your post via a translator which didn't do a great job of translating the text but I think I get the general gist idea of what you are trying to say. I have to say that C# is a much more programmer-friendly environment than C++ is. But, I also have to say that C++ can do some things that C# cannot do: more control over your system, better error recovery and, in some cases, better performance. I don't want to give the impression that C# is the solution for every problem. There are some problems that C++ is better suited for: operating systems and database servers come immediately to mind. Personally, I'm in a position where I would not go back to C++ development but there is still a needs for C++ developers as C# can't do everything.
- Я прочитал Ваш пост через переводчик, который не делал большой работы по переводу текста, но думаю, что понял то, что Вы пытаетесь сказать. Должен сказать, что C# является намного более благоприятной для программиста средой, чем C++. Но также должен сказать, что C++ может сделать некоторые вещи лучше, чем C# : возможен больший контроль над системой, лучшее восстановление после ошибок и, в некоторых случаях, лучшая производительность.
Я не хочу создать впечатление, что C# - решение для каждой проблемы. Есть некоторые задачи, для решения которых лучше подходит С++: на ум сразу приходят операционные системы и серверы баз данных. Лично я не хотел бы вернуться назад к разработке на C++, но есть все еще потребность в C++ разработчиках, поскольку C# не может сделать всего.
-- Jeffrey Richter (http://Wintellect.com)

- Thank's from comments. Your words once again emphasize true meaning my article. My opinion comply with You. I have attitude to programing in old school style. Including programming on periods: assembler Z80 (XZ Spectrum), c++, c++ and OpenGL, and in present time C#, particularly pay own attention XNA, it's explain my relation with quoting You words. I ask You permit publication in my blog from You mail comments.
- Спасибо за комментарий. Ваши слова еще раз подтверждают мысль моей статьи. Наши мнения совпадают. Я отношусь к программистам которых относят к старой школе (old school). Прохождение через периоды программирования на: ассемблере Z80 (ZX Spectrum), c++, c++ и OpenGL, и в настоящее время C #, особенно много уделяя собственное внимание XNA, может объяснить мое отношении к цитированию Ваших слов. Я прошу Вашего разрешения публикации Ваших комментариев в моем блоге.
-- Dmitry Timofeev

- Yes you may post what i sent you.
- Да Вы можете опубликовать то, что я послал Вам.
-- Jeffrey Richter (http://Wintellect.com)

воскресенье, 21 февраля 2010 г.

#1 XnaDevRuEngine - 3d Max Export Plugin

Заработал мой плагин экспорта из 3d Max. Были сложности с взаимодействием костей, но упорство, блокнот и карандаш все решили.

четверг, 4 февраля 2010 г.

#0 XnaDevRuEngine

Мои коллеги, с которыми меня объединяет деятельность в рамках ресурса xnadev.ru, и я, начали работу над 3D движком XnaDevRuEngine. Если не брать в расчет наработки по модулю интерфейса (forms), которые ранее существовали как самостоятельный проект, то следующее видео можно считать первым, демонстрирующим XnaDevRuEngine:

Сейчас частично готовы модули SceneTree и прототип ResorceManager.