Мэдс Торгерсен (Mads Torgersen), занимающийся больше 11 лет развитием .NET-языков в Microsoft, поделился описанием принципов, которыми руководствуется его команда, принимая решения о развитии каждого языка. Передаю слово Мэдсу.



Вот уже более одиннадцати лет я занимаюсь языками программирования .NET в компании Microsoft, и все это время, развивая языки, мы старались в первую очередь учитывать интересы разработчиков. Благодаря революции открытого исходного кода (в отношении не только языков программирования .NET, но и всего стека .NET) был кардинально улучшен диалог с разработчиками, и это, на мой взгляд, помогло нам осуществлять более правильный выбор. Однако не всегда нам удавалось поделиться с вами тем, как именно мы принимали эти решения. Речь идет о нашей стратегии развития языков программирования: концепции каждого языка .NET и планах его развития.

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

C#


C# используют миллионы людей.

Согласно проведенному опросу разработчиков на Stack Overflow, C# был признан одним из самых популярных языков программирования в 2016 году. По популярности его обошли лишь Java и, конечно же, JavaScript (SQL не рассматривается в качестве языка программирования, но не будем спорить об этом). На эти результаты мог повлиять уровень популярности сайта Stack Overflow в разных языковых сообществах, но без сомнений, С# однин из самых распространенных языков программирования. Он широко используется в различных направлениях: игры на движке Unity, мобильные приложения в Xamarin, веб-приложения в ASP.NET, бизнес-приложения в Windows, микрослужбы .NET Core в Linux на платформах Azure и Amazon Web Services (AWS) и многое другое.

Также интересен факт, что в другом опросе на Stack Overflow про 10 самых любимых языков и технологий из предыдущего опроса вошли только С# и Python.

После стольких лет люди продолжают любить C#! Почему? Всё это время мы развивали его с прагматичностью и своим стилем, решая новые задачи и не меняя при этом саму суть языка. C# считается мощным, эффективным и простым в использовании языком. Он и обычно ассоциируется с .NET, поскольку друг без друга у них нет будущего.

Стратегия развития C#


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

Каждая следующая версия C# содержит существенные улучшения: универсальные шаблоны в C# 2.0, LINQ и большое количество функциональных улучшений в C# 3.0, тип dynamic в C# 4.0, async в C# 5.0 и целый набор небольших, но полезных функций в C# 6.0. Многие возможности добавлялись для адаптации к новым вариантам использования, а начиная с версии C# 5.0 особое внимание уделяется подключенным устройствам и службам, скорости таких подключений и обработке потоков данных, идущих через них. Не будет исключением и новая версия C# 7.0, основными нововведениями которой являются кортежи и сопоставление шаблонов, позволяющие преобразовать и упростить работу с потоком данных и управление в коде.

Начиная с версии C# 6.0 мы начали делиться заметками разработчиков языка на GitHub. Всё чаще новые фичи появляются в диалоге с сообществом, иногда доходит до того, что Microsoft воспринимается как один из «contributors».

Описание процесса разработки языка C# опубликовано на GitHub в разделе dotnet/csharplang, а обсуждение происходит в рассылке csharplang.

Visual Basic


Visual Basic используют сотни тысяч людей.

Большинство из них используют WinForms для создания бизнес-приложений для Windows, а некоторые весьма умело пользуются возможностями веб-форм ASP.NET для создания веб-сайтов. Большинство из них также используют C#. Для многих разработчиков это обусловлено требованиями к языку в различных проектах, над которыми они работают. Однако, выходя за рамки основных вариантов использования Visual Basic, многие не раздумывая переходят на C#, даже если можно использовать Visual Basic. Экосистема, примеры и сообщество для C# зачастую оказываются обширнее.

В Visual Studio мы видим интересную тенденцию: процент использования Visual Basic среди новых разработчиков вдвое больше, чем среди всех разработчиков. Это говорит о том, что Visual Basic продолжает играть роль качественного и доступного языка для знакомства с программированием и подходит для тех, кто осваивает как платформу, так и разработку вообще.

Респонденты на Stack Overflow отнеслись к Visual Basic неблагосклонно: он получил первое место в списке языков, которым пользователи предпочли бы найти замену. Считаю, что к этому стоит отнестись с некоторой долей скептицизма. Во-первых, в число этих людей могут входить разработчики VB6, которых нельзя винить в желании двигаться вперед. Кроме того, Stack Overflow — это не основная среда обитания разработчиков Visual Basic, так что если вы решили принять участие в опросе, то это, скорее всего, потому что вы уже посещали Stack Overflow, будучи поклонником другого языка программирования. Наконец, более глубокий взгляд на эти результаты показывает, что большинство разработчиков Visual Basic предпочли бы перейти на C#, что может свидетельствовать скорее об их желании сфокусировать свое развитие в области .NET на одном языке, чем о том, чтобы просто отказаться от Visual Basic.

С учётом всего вышесказанного такая статистика заставляет задуматься. Похоже, что многие из тех, кто использует Visual Basic, чувствуют себя отстающими или сомневаются в будущем языка. Давайте воспользуемся представившейся возможностью разобраться с данным вопросом!

Стратегия развития Visual Basic


Мы будем поддерживать Visual Basic как простой и доступный язык. Мы сделаем всё необходимое, чтобы он оставался одним из основных языков среды .NET: например, если при добавлении новых возможностей в C# изменяется какой-либо API, то использование этого API в Visual Basic должно выглядеть так же естественно. С учётом того, что многие разработчики используют и Visual Basic, и C#, мы сохраним принцип использования кросс-языкового инструментария. Мы сосредоточим выпуск обновлений в популярных для Visual Basic областях и сценариях использования.

Это отступление от той стратегии совместного развития, которой мы придерживались в 2010 году, когда C# и Visual Basic следовали общему курсу. Следование за стремительно эволюционирующим C# не только является проигрышной стратегией для Visual Basic, но и отрицательно сказывается на простоте и доступности, которые являются его ключевыми преимуществами.

В Visual Studio 2015 Visual Basic 14 и C# 6.0 в основном продолжали развиваться совместно и имели много общих усовершенствований: операторы с условием NULL (?.), NameOf и так далее. При этом в обоих языках были устранены некоторые специфические для каждого из них недостатки. Например, в Visual Basic появились многострочные строковые литералы, комментарии после неявного продолжения строки и многое другое. В это же время в C# появились функции и свойства в теле выражений (expression-bodied members), а также другие возможности, которым нет места в Visual Basic.

В VB 15 появятся некоторые из новых возможностей C# 7.0. Кортежи полезны не только сами по себе, но и благодаря тому, что обеспечивают совместимость, так как они будут использоваться в подписях API. Тем не менее в Visual Basic 15 не будет таких возможностей, как выражение is, выходные переменные (out-variable) и локальные функции, которые принесут больше вреда, например, ухудшат читабельность языка.

Описание процесса разработки языка Visual Basic опубликовано на GitHub в разделе dotnet/vblang, f обсуждение происходит в рассылки vblang.

Более подробно стратегия развития Visual Basic описана в этой статье.

F#


Язык F# используют десятки тысяч людей.

Он стремительно развивается и демонстрирует перспективы дальнейшего роста. Являясь универсальным языком, он имеет довольно широкое применение, но особенно актуально его использование в облачных и веб-сервисах, инструментах и утилитах, аналитических рабочих нагрузках и обработке данных.

F# занял высокую позицию в рейтинге любимых языков программирования: люди просто любят работать в нём! Несмотря на то, что F# имеет фантастический инструментарий по сравнению с большинством других языков в этом списке, он всё же имеет меньший опыт применения, чем C# и Visual Basic. Многие нововведения значительно способствуют прогрессу языка. Всё больше разработчиков для среды .NET (как внутри, так и за пределами Microsoft) считают F# языком программирования, который нужно учитывать и осваивать.

У F# невероятно заинтересованное сообщество, которое играет очень важную роль в его развитии и постоянном совершенствовании, не в последнюю очередь благодаря полностью открытому процессу разработки языка. Это абсолютный лидер среди языков .NET с открытым исходным кодом, существенный вклад в его разработку осуществляется за пределами Microsoft.

Стратегия развития F#


Мы будем поддерживать и поощрять активное участие сообщества в разработке F#, продолжая создавать необходимую инфраструктуру и инструментарий для дальнейших вкладов сообщества разработчиков. Мы сделаем F# функциональным языком программирования с лучшим инструментарием на рынке, будем совершенствовать сам язык и возможности инструментария, устранять препятствия для участия сообщества и решать проблемные вопросы, чтобы уменьшить отрыв от C# и Visual Basic. По мере появления новых возможностей языка C# мы будем обеспечивать их совместимость с F#. F# будет по-прежнему нацелен на платформы, имеющие важное значение для его сообщества.

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

F# 4.1 содержит значительное улучшение инструментария в Visual Studio за счет интеграции с абстракцией рабочего пространства редактора Roslyn, направленности на .NET Core и .NET Standard, а также улучшенных сообщений компилятора об ошибках. Значительная часть оптимизации инструментария Visual Studio (в том числе улучшенные сообщения об ошибках) является результатом активного участия сообщества F#. В будущем мы намерены работать как с сообществом F#, так и c другими специалистами в Microsoft, чтобы обеспечить F# лучшим в своем классе инструментарием и сделать его функциональным языком программирования с лучшим инструментарием на рынке.

Описание языка F# можно найти в репозитории с предложениями на GitHub и RFC.

Заключение


Надеюсь, что мне удалось пролить свет на нашу систему принятия решений для языков программирования .NET. Мне бы хотелось, чтобы всякий раз, когда мы осуществляем определенный выбор, вы понимали, в чём причина такого решения. Когда есть недопонимание, возникают неоправданное опасение или спекуляции. Кроме того, вам необходимо принимать бизнес-решения, которые сильно зависят от того, насколько хорошо вы понимаете наши намерения.

Удачи в разработке!


Если вы увидели неточность перевода, сообщите, пожалуйста, об этом в личные сообщения.
Поделиться с друзьями
-->

Комментарии (29)


  1. vba
    22.03.2017 19:52

    F# имеет фантастический инструментарий по сравнению с большинством других языков в этом списке, он всё же не может сравниться с богатством возможностей C# и Visual Basic.

    Че вообще за бред? Record types, Discriminated unions, Pattern matching, Type providers, Крутая ситема типов, офигенно мощный компилятор, итд итп. Да в F# асинхронизм появился когда C# еще пешком под стол ходил. Не стыдно вам такую феерическую охинею писать(или переводить) ?


    1. Atreides07
      22.03.2017 20:06
      +3

      Если честно меня тоже очень сильно удивило — ведь F# всегда по возможностям опережал C#. Я даже не знаю чем именно C# богаче. Собственно именно поэтому у F# всегда были такие ярые фанаты.


      Но все равно так резго и грубо отзываться тоже не стоит — автор оригинала статьи не какой то левый человек c улицы, а человек который отвечает за развитие .net. Надо понять почему у него такая точка зрения. Статья старая, я читал оригинал примерно пару месяцев назад, и еще тогда остался в замешательстве. А автору статьи спасибо, просто и понятно доносит стратегию которая видит Microsoft на понятном русском языке, (иначе Вы бы не смогли узнать вообще об этой стратегии и так бурно возмутиться).


      1. vba
        22.03.2017 20:13

        Да вы правы, я вспылил. Не ожидал конечно такой неосведомленности. Насколько я понимаю F# до сих пор пилится MS Research и этот человек ничего особо не мог и не может знать о продукте другой команды.


        1. Atreides07
          22.03.2017 20:19
          +4

          Я полез в оригинал еще раз. Там все таки скорее всего не об этом говорится.
          "it doesn’t quite measure up to the rich and polished experience of C# and VB."
          Ну т.е. можно перевести как очень большой опыт работы с C# и VB. С этим трудно не согласиться. Практически все самые лучшие книги по разработке в срезе .NET — все исключительно на C#. Если дело доходит до практической реализации (ASP.NET, WPF, Xamarin, Unity и т.д.) — все книги на C#.


          В этом плане "опыт" F# просто не сранится с опытом на C#. Так что можно просто списать на неточность перевода.


          Я сам хочу в следующем году написать книгу о применении F# на практике. А то большинство книг по F# о самом языке F# а не о его применении в практике.


          1. vba
            22.03.2017 20:32
            +2

            Да я тоже после заметил, я бы сказал что тут речь шла об опыте применения, тогда конечно C# используют миллионы по всему миру.


            1. Schvepsss
              22.03.2017 20:43

              Спасибо за то, что обратили внимание на эту неточность. :) Исправила в материале.


          1. Femistoklov
            23.03.2017 04:17

            Я сам хочу в следующем году написать книгу о применении F# на практике. А то большинство книг по F# о самом языке F# а не о его применении в практике.
            Книги есть, но их, к сожалению, никто не спешит переводить.

            Мне F# понравился, хелловорлды пописал, а дальше… Вакансий по F# нет даже в России, не то что в регионе. Глубже изучать и негде, и незачем.


    1. Leonq
      22.03.2017 20:38
      +7

      Просто перевод не очень точный. Тут речь идет именно про тулинг, у f# он все-таки слабее.


  1. vba
    22.03.2017 19:56

    Респонденты на Stack Overflow отнеслись к Visual Basic неблагосклонно: он получил первое место в списке языков, которым пользователи предпочли бы найти замену.

    Все нормально язык это заслужил, напомнить вам, как минимум 3 различных вида назначения скобок в этом чудном языке?


  1. netpilgrim
    22.03.2017 21:58
    +3

    Интересный у вас ник)


    1. vba
      22.03.2017 23:01

      Это триграмма ничего общего не имеет с языком, уж поверьте. Это как MSI может быть Must Sign In.


  1. enabokov
    22.03.2017 23:08
    +2

    Что-то о стратегии C# так ничего и не было сказано. Перечислено появление фич по версиям и всё.


  1. ElectroGuard
    22.03.2017 23:21
    -2

    Сишарп, увы, уже не тот:

    https://www.tiobe.com/tiobe-index/csharp/

    и это не взирая на то, что отрыли код.


    1. Free_ze
      23.03.2017 10:44
      +1

  1. SL_RU
    22.03.2017 23:27

    Сделайте WPF на Linux. Использую C# только ради этого прекрасного фрэймворка. И очень не хватает его на других платформах.


    1. Razaz
      22.03.2017 23:41
      +2

      Вы можете помочь проекту AvaloniaUI. Например товарищ kekekeks там принимает участие :)


      1. kekekeks
        23.03.2017 01:36
        +4

        А что кекекекс. Кекекекс сегодня поддержку вывода через /dev/fb0 и ввода через evdev прикрутил.


        1. Vehfl
          23.03.2017 10:51

          kekekeks
          Подскажите AvaloniaUI совместима с Mono?


          1. kekekeks
            23.03.2017 10:56
            -1

            Собрать её xbuild-ом не получится, а через нугет к моно подключить можно, да.


            1. KvanTTT
              23.03.2017 12:44
              +1

              Не хватает подробного мануала как все же нормально использовать Skia в связке с mono.


              1. kekekeks
                23.03.2017 14:55

                Потому что у M0И0 ущербно сделана поддержка распространения нативных бинарников. Вернее, она отсутствует и предлагается использовать костыль в виде dllmap, который не умеет работать с файлами в произвольных директориях.
                А вообще берётся вот этот пакет, из него распаковывается libSkiaSharp.so и кладётся куда-нибудь в /usr/local/lib, где библиотеку самостоятельно находит dlopen. Ну или через LD_LIBRARY_PATH.


          1. KvanTTT
            23.03.2017 12:43

            Не очень прозрачно) skia бекэнд у меня не работает, а cairo — глючный.


  1. iwqn
    23.03.2017 09:32
    +2

    Эх в своё время мне очень VB6 нравился — а как на .NET перешли так Visual Basic я забросил.
    Сейчас на мой взгляд C# однозначно лучше.


  1. Magnetic_Air
    23.03.2017 09:32
    +1

    Откуда такая ненависть к старичку VB? Читабельный и удобный синтаксис, куча возможностей от платформы. Просто белый и пушистый кролик, пнуть которого считает своим долгом каждый мимо проходивший…


    1. vba
      23.03.2017 12:16
      +2

      Этому языку место в музее, тогда его пинать не будет каждый мимо проходящий. Каждому конечно свое, но я не знаю где вы в нем читабельность и удобный синтаксис узрели. А чего стоит explicit mode/option, которая кстати по умолчанию. Хотя если сравнивать с коболом то вб наверное лучше будет.


      1. Magnetic_Air
        23.03.2017 12:33

        В музей пора отправлять те вещи, которые не соответствует современности, что и проделали с VB6. А VB.NET не стоит на месте и развивается вместе с платформой. Читабельность я вижу в наглядности завершения блоков кода словами, а не скобками, особенно если их много. Ну а опция explicit дана вам на выбор — хотите включите, хотите отключите. Так что претензия была бы обоснована в том случае, если если бы этого выбора не было…


        1. vba
          23.03.2017 12:44

          А VB.NET не стоит на месте и развивается вместе с платформой.
          Со стороны это конечно выглядит как, вб тщательно стараются растягивать и натягивать на платформу всякий раз когда появляются новые фичи. Вспомните дженерики со скобками.


          1. Magnetic_Air
            23.03.2017 13:00

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


  1. Schvepsss
    24.03.2017 13:30

    Кстати, появился опрос за 2017 год.