Просмотров: 8705

Новости о R# из первых рук: интервью с Сергеем Шкредовым


Уверен очень многие .Net-разработчики знают и уважают известное расширение для MS Visual Studio — ReSharper (R#). Этот продукт, созданный питерской софтверной фирмой JetBrains, сумел получить воистину мировое признание. В конце минувшего года вышла его седьмая версия, которая помимо всего прочего обеспечивает полную поддержку новой Visual Studio 2012, при этом сохраняя совместимость со старыми версиями VS. Второй важной особенностью нового ReSharper 7 стала поддержка приложений для Windows 8 и WinRT.

Вслед за 7-мой версией вскоре последовало обновление 7.1, которое привнесло огромное количество улучшений и доработок (более подробно с которыми лучше ознакомиться отдельно здесь и здесь). В связи с выходом этого важного мажорного релиза ReSharper мы решили побеседовать с Сергеем Шкредовым, product manager’ом JetBrains, чтобы из «первых рук» узнать все последние новости и ближайшие перспективы в развитии этого сверхпопулярного отечественного инструмента.

Куырфкзук Resharper Решарпер jetbrains скриншоты

Несмотря на то, что большинство наших читателей не только знают что такое ReSharper, но и активно используют его в своей работе, давайте кратко поясним всем остальным, что же такое ReSharper сегодня? Очень кратко — каковы его основные возможности?

Никогда не мог дать короткий ответ на такой вопрос.

Если утверждать, что ReSharper — это просто плагин к Microsoft Visual Studio, то это не совсем так, так как на платформе ReSharper построен декомпилятор dotPeek, также как существует ReSharper command line tool для запуска анализа кода на сервере (сейчас только на TeamCity).

С другой стороны рассматривать ReSharper как полноценную IDE тоже пока нельзя, так как у нас нет, например, дебаггера или поддержки систем контроля версий. Из основных возможностей ReSharper я бы выделил прежде всего: анализ кода, рефакторинги, интеллисенс, навигацию и поддержку unit testing, и все это — для более 12 языков.

Сергей Шкредов Куырфкзук Resharper Решарпер jetbrains скриншоты
Сергей Шкредов, JetBrains

Я знаю, что недавно у вас вышел новый мажорный релиз, в котором сделано очень много нового. Что, по вашему мнению, будет наиболее интересным и важным в нём для типичного .Net-программиста?

Для нас в новом ReSharper 7 было несколько вещей, которые мы не могли оставить без внимания. Для поддержки асинхронной загрузки проектов, нам пришлось переработать асинхронную инициализацию самого нашего продукта, и результат меня лично радует. Мы полностью стартуем нашу модель кода еще до того, как все проекты (а у нас их более 300) успевают загрузиться. Так же хочу отметить огромную работу по поддержке новых цветовых схем. Только иконок прошлось перерисовать более 800.

С новой платформой WinRT тоже все было непросто. Первое, с чем пришлось столкнуться — это ссылки из проектов на SDK. Теперь в зависимостях проекта могут оказаться не только другие проекты и сборки, но и, например, файлы на языке JavaScript. Эти файлы необходимо индексировать и открывать в редакторе при навигации. Несмотря на то, что формат метаданных WinRT-сборок такой же, как и для CLR-сборок, для обращения к ним из .Net необходимо проецировать типы (например, Vector в IList ). А при обращении к WinRT-компоненте, написанной на C# из WinJS-приложения, конвертировать всё надо в обратную сторону и строить проекции имен (в JavaScript вызываемые методы будут начинаться с маленькой буквы).

Конечно, перечислить все новшества здесь просто невозможно, но именно для .Net программистов я бы в первую очередь порекомендовал почитать про наши новые контрактные аннотации. Это обобщение nullness и assertion -аннотаций, которые позволяют, например, описать зависимость значения out-параметра метода TryGetValue (key, out value) от возвращаемого значения. Очень сильная вещь, посмотреть можно здесь.

Кстати говоря, насколько я понял, в последний ReSharper вы интегрировали свой самый последний dotTrace из 5-ой ветки, можно немного рассказать о его возможностях и новшествах?

Сейчас в последнем ReSharper 7 интегрируются два наших продукта — это dotTrace и dotCover. Интеграция dotTrace заключается в возможности профилировать тесты и start-up проект, а вот интеграция dotCover гораздо более глубокая, он может использовать ReSharper’s Unit tests runner и обладает знаниями о код-модели.

Куырфкзук Resharper Решарпер jetbrains скриншоты

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

Можете поделиться с нами, каких успехов достиг Resharper (в том числе и коммерческих)? Какова динамика его развития?

Об успехах ReSharper я мог бы говорить бесконечно. Главный успех, или даже ключ к успеху ReSharper  — это команда, которая над ним работает, команда профессиональных, неординарных и заинтересованных людей, с которой можно не сомневаться в успехе.

ReSharper покупают активно и много. И с каждым годом покупают все больше. Мы работаем над тем, чтобы программирование с ReSharper было доступно каждому. Например, для выявления performance-проблем мы встроили в ReSharper профилятор, и наши пользователи одной кнопкой могут сделать снэпшот того, что происходит с производительностью именно на их конфигурации.

Также не могу не отметить, что у нас очень сильная команда тестирования. Конечно, EAP-программа по-прежнему очень важна для нас, но мы работает над тем, чтобы даже EAP-пользователи получали продукт очень высокого качества. Могу поделиться, что в EAP-программе для последнего ReSharper 7 участвовало более 10 тысяч пользователей. В ReSharper сейчас более 35 тысяч unit-тестов и более 600 integration-тестов, запускающих фичи в живой Visual Studio. Сейчас мы работаем над автоматизацией тестирования производительности, и я надеюсь, что когда-нибудь мы сможем поделиться наработками в этой области с нашими пользователями.

Существует мнение, что 90 процентов пользователей используют лишь 10 процентов функциональности ReSharper. Отчасти это подтверждается нашими данными из статистики использования ReSharper. Увеличение discoverability является сейчас одним из приоритетов развития продукта. Мы действительно хотим, чтобы наши пользователи использовали ReSharper на 100%.

Куырфкзук Resharper Решарпер jetbrains скриншоты

В ReSharper только для C# больше 1000 контекстных подсказок и предложений по улучшению и автоматическому рефакторингу кода. ReSharper может составить конкуренцию компилятору C# в соответствии спецификации. Ну и для всех проблем, с которыми мы сталкиваемся в процессе разработки мы придумываем решения, которые закладываем в продукт, так что в итоге и работа идет и удовольствие получается.

Я знаю, что вы очень плотно взаимодействуете в своей работе с Microsoft, можете рассказать про ваше сотрудничество?

Не могу рассказать тут много в силу NDA, но с Microsoft мы работаем. В процессе разработки ReSharper 7 мы взаимодействовали очень тесно. Конечно, мы сталкиваемся с проблемами во многих аспектах взаимодействия с Visual Studio. Основная проблема тут, наверное, в том, что extensibility-интерфейсы в VS в основном ориентированы на рост IDE именно вширь.

Сейчас в VS всё сделано так, что здесь легко завести новую проектную систему или реализовывать Language Service для нового языка. Нам же, напротив, часто надо перекрывать существующую функциональность. Иногда простых способов это сделать — просто нет. В качестве примера приведу такой факт: функциональность, отключающая IntelliSense VS когда активен наш, реализована с помощью более 50 классов.

Если говорить откровенно, несмотря на объективно очень интересный продукт, самое больное место ReSharper по моему мнению — это его тормоза. Чтобы не казаться голословным, позвольте несколько типичных примеров.

Чаще всего тормоза VS с активированным ReSharper проявляются при большом количестве открытых вкладок (утечки памяти, вероятно), также иногда выскакивает «ошибка компиляции проекта», которая почти всегда исчезает после банального перезапуска всей Студии. И, кстати говоря, по моему субъективному мнению именно у 7 версии «ошибка компиляции» стала весьма навязчивой. Что вы может сказать по этой острой теме, что предпринимается для устранения этих багов и повышения надежности работы?

Тут Вы совершенно правы, производительность традиционно является причиной номер один по которой пользователи отказываются от ReSharper. Точнее, я бы говорил не про производительность вообще, а именно про тормоза, долгое открытие файлов и проектов, задержки при быстрой печати или зависание UI при построении проекта.

Тут можно долго рассуждать о природе этих задержек. Первый большой источник проблем — это архитектура самой Visual Studio, построенная на COM-объектах работающих только в UI-потоке. Например, нам приходится полностью дублировать всю проектную модель Студии, чтобы иметь возможность обращаться к ней из разных потоков. На каждом старте нам все равно приходится производить синхронизацию.

Кроме того мы разбиваем долгие активности в UI-потоке, чтобы не блокировать пользовательский ввод. Есть много проблем связанных со сборкой мусора во 2-ом поколении. Этот процесс может быть довольно долгим, особенно если объем занятой managed-памяти приближается к гигабайту. Тут единственное решение — это создавать меньше объектов, и мы постоянно занимаемся мониторингом memory traffic. Бывает, что совершенно безобидные конструкции языка C# могут порождать буквально сотни мегабайт объектов замыкания или boxed-структур.

Куырфкзук Resharper Решарпер jetbrains скриншоты

Что касается общего объема потребляемой памяти, то, несмотря на то, что студия остается 32-битным процессом, реальный объем адресуемой памяти для нашего процесса в Windows 7 достигает 3 гигабайт и проблема «Out Of Memory», которую помнят, наверное, все наши пользователи с XP, постепенно уходит в прошлое. Но в любом случае, оптимизация потребления памяти приоритетна для нас, прямо сейчас мы работаем над тем, чтобы не держать в памяти большинство индексов нашей код-модели. Что касается ошибок компиляции, то мы обязательно исправляем все проблемы, о которых наши пользователи сообщают нам. Разве что кроме тех, которые мы не можем исправить из-за принципиальных проблем архитектуры.

Кстати, одну из таких проблем мы сейчас и решаем, она связана с разным подходом к резолву ссылок на сборки у ReSharper и у компилятора и проявляется при наличии проектов с разными версиями рантайма.

Завершая эту тему порцией здоровой самокритики — какие самые слабые стороны вы сами видите в  ReSharper, какие вызовы беспокоят вас прямо сейчас?

Одна из самых слабых сторон — это то, что нам уже почти 10 лет. И проект уже становится несколько неповоротлив, нам приходится значительную часть времени уделять рефакторингу подсистем в которых, с течением времени, накопилось много скрытых зависимостей, переписывать и переосмысливать такие модули для того, чтобы иметь возможность быстро делать там изменения, когда этого потребует очередная версия Visual Studio.

Есть у нас проблемы и с изменениями API, которые не очень просто переживают наши уже не такие редкие, как несколько лет назад, плагинописатели. Несмотря на то, что ReSharper изначально создавался расширяемым, практически все подсистемы были созданы для поддержки CLR-языков, а общая функциональность ядра во многом ориентирована на решение сложностей взаимодействия с Visual Studio и поэтому подвергается частым изменениям. Сейчас мы уделяем особое внимание консистентности API, что должно позволить большему числу пользователей использовать ReSharper как платформу для решения своих бизнес задач.

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

В первую очередь, я бы хотел упомянуть про персональные лицензии, как наиболее распространенный и доступный тип лицензий. Если Вы используете ReSharper как индивидуальный разработчик, или просто хотите на свои деньги купить лицензию и индивидуально использовать ее на своей работе, то персональная лицензия Вам подходит идеально, причем ее стоимость начинается от 150$ за C# edition, который ограничен лишь отсутствием поддержки VB.Net.

И конечно, если вы MVP, студент, тренер или занимаетесь OpenSource-проектом, то получить такую лицензию Вы можете бесплатно. Кроме того, практически круглый год (где-то 8 из 12 месяцев) у нас открыта программа EAP для очередной версии ReSharper. EAP-билд также можно использовать совершенно бесплатно в течение месяца, после чего необходимо просто скачать и установить новый билд.

Иногда мы проводим акции. В частности совсем недавно, в конце декабря, у нас была совершенно фееричная распродажа, и я поздравляю всех, кто успел купить ReSharper и другие наши продукты по чисто символической цене!

dev.by, 2013

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter
Теги: , , ,
Эта запись опубликована: Пятница, 25 января 2013 в рубрике ПрограммированиеИнтервью.

1 комментарий

Следите за комментариями по RSS
  1. What Are Installment Loans

    If one needs ready money at the moment, the most trustworthy solution to get it is to address to installment loans which have historically been known as the most working and well-timed for impressive buyings. Installment loan passes for a limited borrowing, supposing a stable timeframe for beginning and ending that must be identified within the process of application. You can select how often you must pay back. As an example, everyone might count on the type of the loan, being divided as a monthly payment with 36 the same portions for two years.

    Taking into consideration installment loan varieties, you may take out between that secured and unsecured one. Unsecured kind constitutes signature loan as it may be secured only with contract signing and verification of your wish hence. Secured type of the loan should be substantiated by collateral which should be changed in the event of emergency. As an example, car loan is often substantiated by the car you take money for. That's why bad credit installment loans in IL serve as a true solution to receive ready money at profitable rates.

    Methods to Apply for Installment Loans with Not Ideal Credit

    Frankly speaking, you have only two alternates. The first one means to pay a visit to a banking institution. Nevertheless, take into account that the causes for taking installment loans are rather constrained: mortgage, vehicle, student, and personal loans. Furthermore, banks feature exact requirements for these loans, especially when you want an unsecured type. Customers with marginal form of credit should provide a co-signer that has to be creditworthy and trustworthy. What's more, banking establishments need a long-lasting and tedious application process that won't work when you hurry.

    A good variant and efficient decision in this situation is to make use of our client-oriented services and have installment loans without bad consequences. We ensure the best conditions for your certain case, granting imposing advantages and privileges. You can check it!

    The Best Solution to Apply for Installment Loan

    Owing to us, you could rely on these advantages:

    Easy and swift|Quick and simple. Our portal respects your time and intends to save it by rendering convenient online application process. Because you can't lose long weeks on getting an approval and receiving your cash in hand , we provide opportune answers and solutions from direct creditors.

    Cash at hand. Our requirements are easy-to-comprehend; for this reason, we dispose a upright scheme of work with no hidden payments, supposing that we grant money aid in case if you need it above all without any questions.

    Creditors for your state of affairs. We cooperate with reliable and revised lenders from the United States, who are ready to help you!|

    Bad score is not a final sentence. When many banking establishments and creditors tell you 'no' and deny loan, we will do our best to select the most suitable variant for you. We appreciate all our clients and desire to offer an individual approach!

    Payments you will afford. Do you remember these enormous charges by examining rivals' portals? We are aware of them too! Therefore, we prefer to care for customers than to earn fast money on their troubles.

    No checks of your credits. We apprehend why you have ask us for aid; furthermore, we don't evaluate your score by rendering you a chance not only to dispose cash but form your credit score for the future, demonstrating what a reliable debtor you are!

    Think about Installment Loans?

    Don't have doubts and stay in contact with us to find more details about installment loans and conditions https://maybeloan.com/installment-loans/ma-usa-il . Our consultants are available on twenty-four-hour basis and always ready to help you, that's why you will get an answer within the shortest timeframes. Don't try to wait for the better times to dispose cash, assume them straight away with our company!


⇑ Наверх
⇓ Вниз