C#7 — интервью с Jesse Liberty и Андреем Акиньшиным

в 11:20, , рубрики: .net, C#, dotnext, Jesse Liberty, Андрей Акиньшин, Блог компании JUG.ru Group

C#7 — интервью с Jesse Liberty и Андреем Акиньшиным - 1

Jesse Liberty известен как автор многочисленных книг. Кроме того, он является автором множества курсов на Pluralsight, сертифицированным Xamarin Developer, а также Microsoft и Xamarin MVP. В последнее время в область его внимания попали Xamarin, Angular 2 и ASP.NET Core. Джесси ведет подкаст под названием Yet Another Podcast, в котором общается с интересными персонами из мира разработки ПО и игр.

Нам удалось поговорить с ним о будущем релизе C# 7.0 и о его выступлении на DotNext в Москве. Кроме того, на эту е тему нам удалось задать несколько неожиданных вопросов и Андрею Акиньшину, разработчику новой С# IDE Rider в JetBrains.

C#7 — интервью с Jesse Liberty и Андреем Акиньшиным - 2

Андрей Акиньшин

.NET MVP, к.ф.-м.н., серебряный призёр ACM ICPC, один из разработчиков Rider в JetBrains.
Увлекается микрооптимизациями. Мейнтейнер проекта BenchmarkDotNet.
В свободное время любит разбираться во внутренностях .NET и делиться находками с сообществом.

– Когда наконец-то планируется релиз 7-ой версии языка?

– Сложно сказать, когда. Работа над 7-кой ведется уже давно. Более или менее известен список фич, которые должны войти в 7-ку. Есть разные фичи, которые еще обсуждаются, и непонятно, будут они доступны или нет. В случае с Microsoft предсказать какие-то реальные сроки достаточно сложно. Работа все еще ведется, команда разработчиков постоянно вносит какие-то изменения. От каких-то решений отказываются, вводят некоторые новые интересные вещи. Но очень надеюсь, что в обозримом будущем версия будет выпущена.

– Но что-то уже доступно?

– Да, если вы установите preview следующей версии студии под кодовым названием Visual Studio ’15 (не путать с 2015-ой), то там есть превьюшка, с которой уже можно поиграться, но, памятуя о том, как разрабатывалась 6-ка, я этим не занимался и жду официального релиза, чтобы развлекаться со стабильной версией.

Можно оставить фидбэк команде разработчиков. Что мне очень нравится в новой политике Microsoft – это то, что сейчас они очень активно взаимодействуют с community. Если раньше вся разработка шла за закрытыми дверями и мы узнавали о новых фичах языка после его выхода, то сейчас реально ведется работа с community. Разработчикам интересно мнение обычных людей, которые будут пользоваться этим языком. Какие фичи более удобны, какие менее. Что лучше включить в язык.

И дальше уже на основе того, что тяжело добавить, что легко добавить, они принимают решение о том, как язык будет выглядеть. Поэтому, если есть энтузиасты, которые очень любят развлекаться с превьюшками и которым хочется повлиять на финальную версию C# 7, то можно скачать превью, посмотреть и оставить на github-е feedback.

– Это вы предвидели второй вопрос. Как можно узнать о новых возможностях заранее? Может быть, существуют какие-то секретные ресурсы или программы? Я смог найти только ветку дискуссии на github.

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

Более или менее понятно, чего хочет народ, осталось только понять, как это правильно реализовать, чтобы всем было удобно. И реализовать.

Потому что многие фичи достаточно сложны именно с точки зрения имплементации в компиляторе Roslyn.

А так никаких секретов нет, все полностью открыто. Пожалуйста – любой может принять участие в обсуждении.

Jesse Liberty

C#7 — интервью с Jesse Liberty и Андреем Акиньшиным - 3– Когда будет релиз C# 7-ой версии?

– C# 7.0 будет выпущен с тем, что сейчас называется Visual Studio 15. Пока что прямой даты релиза нигде нет. Но он в превью 4 прямо сейчас.

Примечание: Разговор происходил буквально за пару дней до релиза VS 15 preview 5.

– Как многое уже доступно для ознакомления?

– Что ж, в превью 4 доступно уже достаточно, но некоторые фичи пока реализованы лишь частично

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

– Есть очень хороший пост в блоге, который написал Mads Torgersen. Это то, на чем я основываю свою презентацию. Я неоднократно говорил с Мэдсом, у меня есть и подкаст с ним, это будет, пожалуй, хорошей отправной точкой.

– Спасибо! У меня в копилке уже есть эта ссылка. И мой следующий вопрос об этом топике в блоге. Если я ее прочитаю (и что немаловажно, пойму), то смогу ли я услышать много нового на вашем докладе? Или, может быть, мне наоборот желательно почитать и вникнуть заранее, иначе я не смогу понять, о чем вы будете рассказывать?

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

– ОК. Спасибо. Я тоже думаю, что в презентации будет что-то новое.
– Ага.

– Я знаю, что вы используете C#, начиная с первой версии этого языка.

– Да, я перешел на C# в 2000-ом.

Отличия 7-й версии

– Может быть, вы можете как-то сравнить версию 7 и предыдущие версии? У 7-ой больше возможностей или, возможно, они более важны?

– С 6-ой до 7-ой есть несколько очень важных добавлений. Паттерны и tuples, наверное, два самых важных из них. Кроме того, есть несколько удобных дополнений, но tuples и паттерны вносят в язык весьма значительные изменения.

Паттерны позволяют колоссально сократить сам способ программирования, разрешая нам, помимо всего прочего, совпадения по типу, такие же как в if или switch конструкциях.
Другая ключевая фича C# 7 это tuples – возможность вернуть больше, чем одно значение из метода. Мы всегда могли это сделать ранее с помощью out-араметра, но tuples:

  • более понятны
  • вы можете декларировать их как типы
  • более гибкие и высокоэффективные

Еще вы можете разделить tuples с помощью процесса, называемого Deconstruction, который позволяет вам разделить tuple или какое-то другое значение на составные части.

– Я слушал ваш подкаст и пример по поводу использования tuples. Сейчас tuples стали мне гораздо понятнее. Обычно какие-то функции гораздо проще понять с помощью «use case-ов». Может быть, вы собираетесь рассказать о каких-то примерах во время выступления в Москве?

– Да. Безусловно.

– В C# 6 возможность использования await была добавлена в блок catch. В 7 она будет добавлена в метод Main?

– Я не видел этого в планах на 7, но может быть.

Новые возможности

Есть еще одна новинка в 7-ке – функции внутри функций.

– Это замечательно. Так же, как и в Javascript, верно?

– Да.

– Какая фича вам нравится больше всего из этого релиза или, возможно, из следующего?

– Я думаю, что те две, которые я уже упомянул, наиболее значительные и интересные – добавление tuples и добавление паттернов. Эти две, я думаю, изменят сам стиль нашего программирования на манеру, которая более интересна, в отличие от множества других дополнений. Например, out-параметры удобны, но они не изменят стиля программирования.

Улучшения литералов будут довольно хорошей фичей, но на стиле программирования тоже не отразятся. Deconstruction, как я уже упоминал. Deconstruction относится к tuples.

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

– Для поиска информации я использовал эту github-ссылку

Насколько я понял, автор – Мэдс Торгерсен. И это дискуссия по поводу новых фич.

– Это еще от июня, да. Но некоторые фичи, которые там обсуждаются, не будут представлены в 7-ой версии. Давайте посмотрим: должны сделать локальные функции, tuples хотят сделать, паттерны сделают, reference locals и reference returns – не уверен, replace/original (part of generators) – не уверен даже, что в курсе, что это такое. Посмотрим, что там ещё: digital separators – полагаю, сделают, и out переменные сделают. И я не знаю, что насчет асинхронного Main и “адресация статичного метода для небезопасного interop кода” – не думаю, что это в 7-ке.

Wildcards

– В тексте, что вы упомянули, некоторые пункты рассматриваются только мельком. Например, мне не совсем понятно, что такое «wildcards» в качестве out-параметров.

– Идея в том, чтобы вставить символ звездочки, что позволит вам игнорировать любой out-параметр, о котором вы не хотите тревожиться. Еще не ясно, будут ли wildcards в C# 7 или нет.

– Есть ли (планируются ли) какие-либо изменения или новые фичи в C#, необходимые по причине того, что язык стал кроссплатформенным (я имею в виду, после выхода .NET Core и приобретения Xamarin)?

– Я думаю, нет. C# уже работает идентично на MacOS. Вы можете видеть это в Xamarin Studio для Mac. По моему мнению, ключевое изменение, которое необходимо, это перенос Visual Studio на Mac.

– Новым функциям всегда рады, но изменения языка могут иногда замутить воду. Я знаю, что в конструкции switch порядок выполнения был изменен. Если ли какие-то еще изменения в C#, которые могут запутать?

– Порядок выполнения в конструкции case не был изменен в конструкции switch, но он стал важен при использовании условий when. Это не критическое изменение.

И, да, есть новые функции. И люди должны решать, будут ли они использовать новые функции или подождут.

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

– Выходит, что никаких новых багов не будет по причине изменений?

– Нет, нет. Это никак не поломает код. Никаких критических изменений нет.

– Большое вам спасибо! Был рад с вами поговорить.

– Thank you. Спасибо.


Если вы хотите услышать только проверенную информацию с объяснениями и примерами о нововведениях, которые точно будут в новой версии C#, тогда приходите на конференцию DotNext, которая будет проходить в Москве 9 декабря.

Список докладов:

.NET Core: State of the art
Squeezing the Hardware to Make Performance Juice
Интеллектуальные чатботы и когнитивные сервисы
Stack Overflow — It's all about performance!
Advanced Xamarin.Forms
C++ через C#
Продолжаем говорить про арифметику
ASP.NET SignalR: Why It's Getting Really Crucial for Web Development
Exceptional Exceptions in .NET
Модификация кода .NET в рантайме
End-to-end JIT
Performance tuning Stack Overflow tags
C# Scripting — why and how you can use your C# in places you never thought of before!
Multithreading Deep Dive
Собрать всё, или Знакомимся с Cake (C# Make)
WinDbg Superpowers for .NET Developers
Overview of the new .NET Core and .NET Platform Standard
Какие уязвимости находят в .NET платформе и как не повторить их в своих приложениях
What's new in C# 7?
ETW — Monitor Anything, Anytime, Anywhere

Автор: JUG.ru Group

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js