Итоги 2011 года

Сейчас блоггеры усиленно подводят итоги уходящего года, и я тут подумал – а чем я хуже? Мне тоже есть что рассказать! Рассказывать я буду конечно про технические вещи, с которыми успел “поиграться” в 2011 году. Поехали…

ПО, которое удалось зарелизить:

  • JetBrains ReSharper SDK, включая онлайн документацию. Также получилось добавить одну фичу непосредственно в ReSharper.

  • ActiveMesa R2P — обновления для ReSharper 6.0 и 6.1, также несколько фич по запросам пользователей (что особенно приятно). Появилось много классных вещей, без которых я и сам уже жить не могу. Впрочем, пишется в основном для себя, так что это понятно.

  • ActiveMesa MathSharp — нужно иметь много наглости чтобы просить почти 100 долларов за приложение, которое писалось максимум неделю. И покупают ведь! Первое приложение которое я выпускаю по ClickOnce, и не без факапов конечно же, но тем не менее… теперь точно понятно, что пользователи готовы качать 100-мегабайтный инсталлятор .Net 4 и их это не особо напрягает.

Языки и их использование:

  • D — открытие года для меня. Уже успел купить и прочитать книжку Александреску а также попробовать пописать на нем. Впечатления крайне позитивные, несмотря на отсутствие 64-битной поддержки а также явную “недопиленность” стандартной библиотеки Phobos. D – это язык на котором хочется писать и шипить ПО, в том числе и кросс-платформенное. Настоятельно рекомендую!

  • C# — продолжаю пользоваться, всем в принципе доволен. Обрастаю библиотеками с методами расширений, т.к. в любом проекте одно и то же, снова и снова. Также активно использую монаду Maybe для R2P.

  • C++ — продолжаю пользоваться, нововведения меня не очень затронули, в основном использую “хорошо забытое старое” а также типичный стэк – Intel TBB, OpenMP, SIMD.

  • F# — пришел к выводу что он очень хорош для определенного круга задач, и не очень хорош для всего что требует серьезного использования ООП. При написании MathSharp, да и вообще парсеров, он очень полезен. Для математики тоже весьма неплох, хотя тут уже его приемущества чисто психологические (т.е. это приемущества для математиков, но не для меня).

  • JavaScript — практически не использую напрямую, пишу все на C# и транскомпилирую через SharpKit (см. ниже). За пределами $.getJSON() стараюсь вообще не трогать.

Программы и компоненты, которые продолжают давать ощутимые бенефиты:

  • Контролы DevExpress (WinForms) — использую их с 2006 года и в целом доволен, особенно доволен стилизацией, до которой конкурентам далеко. Контролы DX продолжают лидировать в плане красивости UI, а это важно для пользователей.

  • Intel Parallel Studio — до черного пояса Intel мне как до луны, но инструментарием я продолжаю пользоваться, причем весьма успешно. Как ни странно, мне намного больше импонирует использование связки C# & IntelCPP чем связки C# & C++/CLI.

  • TypograFix продолжает развиваться, улучшаться, и этот пост я пишу, конечно же, на нем. (Через RDC, сидя на Mac’е.)

Программы и компоненты которые понравились и стали частью процесса:

  • Innovasys Document!X — теперь это моя стандартная тула для генерирования документации (CHM и Web) как для коммерческих, так и для OSS проектов. Действительно хороший продукт, который стоит своих денег.

  • Red Gate SmartAssembly — все любят ругать Red Gate за Reflector, но продукт SmartAssembly они выкупили у другой компании, и продукт это неплохой. SA – это обфускатор, ILMerge и репортилка исключений в одном флаконе. Да, ценник “зашкаливает”, но мне очень нравится функционал и UI. Нет, я не страдаю любовью к обфускаторам т.к. считаю эту затею бессмысленной, но вот красивый exception reporting многого стоит.

  • WiX — да-да, бесплатный пакет для создания инсталляторов существует уже давно, но “распробовал” его я только в этом году. Теперь все инсталляторы которые не используют ClickOnce делаются именно на WiX. Единственное, чего не хватает – это фич автообновления. Правда автообновление уже давно перестало быть большой проблемой. Но все равно хочется иметь его “из коробки”.

  • ActiPro Syntax Editor (WinForms) — казалось бы, что особенного в контроле-редакторе который показывает подсветку синтаксиса и code completion для C#? А то, что процесс динамического прототипирования можно сделать более “цивильным”. А динамическое прототипирование дает настолько серьезный прирост производительности, что не делать его уже кажется грехом. Впрочем, мне кажется я никогда не смогу объяснить людям все его бенефиты. Что же, это не критично.

  • SharpKit — транскомпилятор из C# в JavaScript. Чтобы не писать JS, который есть зло и должен умереть, хотя кто-то и соглашается на нем писать. Тулкит имеет завязки на разные фреймворки вроде jQuery, да и свои байндинги писать на так уж сложно.

Программы, которые я больше не планирую использовать:

  • SQL Server и другие RDBMS, а также такие ORM-фреймворки как Telerik OpenAccess. MongoDB хватает “за глаза”, и подход NOSQL идеален для большинства задач. Единственное исключение пока это embeddability, и тут я пожалуй продолжу пользоваться SQL CE (например в том же R2P), т.к. хороших альтернатив мало.

  • IIS и ASP.NET MVC — с момента моего перехода на подход JS+REST, эти технологии оказались нерелевантными. Хотя, по правде сказать, я по-прежнему использую IIS 6 для хостинга WCF REST приложений, но по крайней мере клиентскую часть я писать на ASP.NET больше не намерен.

  • NDepend — в нем есть полезные фичи, но они запрятаны под слоями академичного анализа который, если честно, не очень-то полезен для анализа моего кода. Гораздо полезнее обычные механизмы статического анализа.

  • Typemock Isolator — я на самом деле давно забросил использование такой “тяжелой артиллерии”, но недавно попробовал снова и был разочарован: оказалось что в VS Ultimate Typemock генерит много багов, и умеет работать только при определенно выставленной конфигурации, которая меня не устраивает.

  • Telerik MVC поскольку его больше не существует :) не говоря уже о том что я больше не буду писать под ASP.NET.

Технологии, которые удивили или порадовали:

  • Kindle DX — пожалуй лучшее мое приобретение года. Вопрос о покупке iPad’а даже не стоял, а KDX я прикупил после долгих раздумий и не сожалею – уже прочитал на нем уйму книг. Глаза он щадит, размер вменяемый для чтения “почти А4”. Есть конечно фейлы – бесплатный 3G не работает в России и Латвии (в Скандинавии – на ура), браузер допотопный, WiFi нету, и книжки которые продает Amazon (типа ‘Kindle Edition’) покупать нельзя т.к. все листинги кода в них – битмапы, оптимизированные под “маленький” киндл. Что просто чудовищно. PDF FTW.

  • Windows Phone 7 — честно скажу: я ожидал увидеть очередное мертворожденное детище. А получилась операционка с уникальным, красивым user experience. Ведь могут когда захотят! Теперь остается ждать планшетов, хотя скажу сразу: если iPad 3 будет выпущен с Retina Display, куплю не задумываясь, ибо хочется, наконец-то, вменяемого разрешения. Если оно будет, можно будет и PDFы попробовать читать, и travel guides всякие, комиксы, и так далее…

  • Qt Creator — не совсем “моё”, конечно, но Qt Creator порадовал тем что он, во-первых, работает, а во-вторых даже более-менее понятен. В принципе, если приложение действительно нужно сделать кросс-платформенным, то я бы скорее смотрел на Qt чем на Java или AIR. И все это в очередной раз подчеркивает, что если хочешь чтобы твой алгоритм был кросс-платформенным, пиши его на С++. Ну или на С, это тоже сработает.

Что технологического я ожидаю в 2012 году:

  • Запуск Visual Studio 2012, в комплекте с поддержкой Metro-style apps, AMP и отладкой на GPU, C#5 и так далее. Запуск новой Студии в Петербурге буду проводить лично, если только Microsoft не передумает и не снимет снова Прибалтийскую для эвента на 500 человек как на запуск 2010й. Впрочем, я не против, так и так.

  • Разработческая конференция на пароме, курсирующем по скандинавии. С последующими туристическими ответвлениями. Будет весело.

  • Смерть и/или перерождение RIM. Серьезно, что же с ними будет? Кто-нибудь может себе представить WP7 на Blackberry?

Ну и наконец:

  • В 2012м я окончательно уеду из России (куда – пока секрет, скажу лишь что это не Англия и не Швеция). Впрочем, произойдет это небыстро – переезд это дело мутное, нужно сделать 1000 дел, все проверить-перепроверить, совершить несколько плановых полетов. Главное что это произойдет – понимание этого уже радует.

P.S.: С Новым Годом!!!

16 responses to “Итоги 2011 года”

  1. Подскажите, вы пишите что JS должен умереть, но тут же пишите что будете использовать REST подход. Не находите ли здесь противоречий?

    1. Нет, не нахожу. JS+REST подход использую потому, что нет других вариантов. Появятся варианты, будет XYZ+REST. А пока пишу JavaScript на C# :)

      1. Спасибо за ответ, статья вышла очень хорошей, перечитывал несколько раз. Серверную часть на каком языке вы пишите/планируете писать?

      2. Серверная часть пишется на C# с использованием новомодного WCF WebAPI. В принципе back-end можно писать на чем угодно, т.к. обычто это просто data access плюс стейт-машина, которая определяет в какой точке что можно выдавать и соответственно делает HATEOAS.

  2. Спасибо за поздравление, Дмитрий!
    И Вас тоже с Новым Годом!!!
    Надеюсь, что переезд не заберет все свободное время и Вы продолжите радовать читателей и слушателей новым и, как всегда, очень качественным контентом.
    P.S Kindle прекрасен, но выбирая между ним и Onyx Boox M92, остановался на поделке китайский товарищей. Если будете брать вторую читалку (для дома/дачи :) – рекомендую обратить внимание.
    P.S.S WP7, Kinect – трудно поверить, что эти продукты вышли из недр MS. Поэтому приятно удивляемся вдвойне.

    1. Boox интересный, конечно, но слишком незнакомый бренд и это как-то рискованно. Хотя все равно дисплеи делаются в одном месте. Да и маркетплейс у Амазона бессмысленный. Что ж, подумаю. Но мысль про iPad остается.

      К сожалению, из меня получился плохой пользователь как Kinect так и мобильных телефонов. Мобильный у меня вообще перманентно выключен, т.к. везде есть wifi/skype, Мобильный мне нужен обязательно с клавиатурой, а покупать Blackberry как-то не хочется, если учесть как плохи в RIM дела. Дилемма, одним словом.

      Время свободное быть должно. Переезд – это в основном бюрократия и бухгалтерия, так что в перерывах буду стараться что-то писать.

      1. Я так и не смог до конца 2011ого догадаться зачем Вам хардварная клавиатура :) Правда Кэп подсказывает – чтобы много текста набирать. Я сам использую смартфоны для звонков, навигации, фотографии, чтения новостей, ну и конечно как плеер для подкастов. А вот на почту отвечать – не получается, достаю ноутбук.
        Смотрел в свое время на Nokia E7, но у нокии дела еще хуже, чем у RIM. Может у Андроида есть модели с клавиатурой?

      2. Юз-кейс такой: хочется чатиться в скайпе, например когда плыву на пароме. Соответственно нужно что-то на чем можно быстро печатать. Сейчас для этих целей используется Lenovo x100e, также пробую использовать iPod Touch но на нем просто нереально печатать, как собственно на всех тачфонах. Так что Blackberry на WP8 мне как раз подойдет ,)

      3. Больше смартфонов – хороших и разных. Будем ждать Blackberry на WinPhone в 2012ом :)

  3. Проходимец Avatar
    Проходимец

    И я вас поздравляю с Новым Годом! (:
    Желаю таки переехать в этом году! (;

    1. Спасибо, постараюсь…

  4. >Единственное исключение пока это embeddability,
    >и тут я пожалуй продолжу пользоваться SQL CE
    >(например в том же R2P), т.к. хороших альтернатив мало.

    было бы интересно узнать Вашу оценку (сравнение) вот этой альтернативы http://www.sterlingdatabase.com/

    и тогда сразу второй вопрос о языке D – не успели разобраться на сколько естественно вызывать из него готовые библиотеки на C/C++ ? в первую очередь интересует работа в среде windows, есть готовые библиотеки MPIR (может даже сам GMP), CIF (http://code.google.com/p/chromiumembedded/), есть опыт программирования на C#, а хочется и бинарный код, и язык с родственным базовым синтаксисом и компиляцию в машинный код. опять же хорошие .net обертки далеко не всегда доступны

    спасибо!

    ну и с наступившим конечно же!!!

    1. Я если честно из embeddable систем помимо СЕ смотрел на две – VistaDB и db4o. VistaDB имеет ряд весьма существенных приемуществ – например, всего одна библиотечка независимо от битности (но в СЕ 4.0 это уже не проблема), поддержка хранимых процедур, и так далее. Но мне как-то все это не потребовалось т.к. я знаю, что если у пользователя стоит Студия, то и СЕ 3.5 там тоже есть. А если нет, то инсталлятор проставит.

      Что же касается db4o (чисто OODB), то там основная проблема в том, что запросы мои выполнялись в 3-10 раз медленнее. Поэтому решил ее не трогать ибо функционал достаточно критичный по перформансу – итак заставляю пользователя ждать минуту-две.

      На другие базы пока не смотрел. Как время будет, может гляну, но подозреваю что R2P для VS11 будет использовать SQL CE 4.

      Что касается языка D, то тут все не очень – то есть на уровне С все сработает, и будет аналогично тому что делает P/Invoke, а вот классы всякие использовать – сомневаюсь. Если вы хотите использовать C# и C++ вместе то я рекоммендовал бы разобраться с P/Invoke т.к. этого механизма порой достаточно для вызова функций “верхнего уровня”.

      Кстати… если нужно полноценное ООП, то не забывайте про мощнейший функционал в C++/CLI. Так можно взять библиотеку написанную на С++ и, путем манипуляций, “добавить” к ней поддержку .Net. А потом естественно вызывать ее из C#-а без каких-либо проблем.

      Удачи и С Новым Годом!

  5. Вы купили DX для себя, раз продаете программу? И как оно, окупилось?

    1. DX мне сам дал все свое ПО как MVP, так что вопрос окупаемости не стоит.

  6. Дмитрий, вы пишете, что отказались от использования RDBMS. Но потянут ли NoSQL СУБД сложные бизнес-системы? К примеру, банковские, где необходим строгий ACID и сложные транзакции?

Оставить комментарий