C#

Поделиться:

На вопросы о C# отвечали только те, кто выбрал его в качестве одного из трех основных языков программирования.

Какие версии C# вы регулярно используете?

50%

C# 10 (объявление пространства имен в пределах файла, директивы global using, структуры record, расширенные шаблоны свойств)

32%

30%

C# 9 (классы record, контекстно-типизируемый оператор new, операторы верхнего уровня)

33%

50%

C# 8 (статические локальные функции, ссылочные типы, допускающие значение null, методы интерфейса по умолчанию)

24%

39%

C# 7 (сопоставление с образцом, локальные функции, ссылочные локальные переменные и возвращаемые значения, переменные out)

16%

27%

C# 6 (операторы ? и nameof, статический импорт, фильтры исключений, Roslyn)

5%

27%

C# 5 (async/await, атрибуты сведений о вызывающей стороне)

2%

5%

Более старая версия

10%

12%

Затрудняюсь с ответом

Учитывая, что перейти с .NET Framework на .NET обычно сложнее, чем поменять таргет, интересно, что большинство разработчиков используют по крайней мере .NET (Core). Удивительно при этом, что значительная доля разработчиков до сих пор поддерживают проекты, для которых таргетом является .NET Framework 4.6 и более ранних версий. Не понимаю, что мешает им перенести проекты на 4.8.

Деннис Дитрих

Старший разработчик, Azure Storage, Microsoft

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

Крис Вудрафф

Тимлид, Rocket Homes

Какие языки программирования вы используете в своем
.NET-проекте?

99%

C#

30%

HTML/CSS

26%

JavaScript

18%

TypeScript

6%

VB.NET

3%

F#

1%

Другое

C# по-прежнему безусловно в приоритете у .NET-разработчиков. VB.NET и F# тоже используются, но чаще это C# и языки фронтенда, например JS и TS.

Мартен Бальо

Девелопер-адвокат, JetBrains

Какие среды выполнения вы регулярно используете?

49%

62%

.NET Framework

47%

.NET 6

43%

66%

.NET Core

24%

33%

.NET 5

10%

12%

Mono

5%

Затрудняюсь с ответом

По сравнению с прошлым годом C#-разработчики стали гораздо реже использовать .NET Framework и .NET Core (снижение на 13 и 23 процентных пункта соответственно).

.NET Framework по-прежнему в ходу. Что касается тех, кто выбирает более новые версии .NET, похоже, что они используют LTS-версии, но в резерве у них .NET 6, причем почти на равных с полным фреймворком.

Мартен Бальо

Девелопер-адвокат, JetBrains

Какие технологии/фреймворки вы регулярно используете?

56%

55%

ASP.NET Core

41%

42%

Entity Framework

25%

20%

Azure

24%

28%

Windows Forms

22%

19%

Unity

Ничего удивительного, что три самых распространенных технологии — ASP.NET, Entity Framework и Azure. Радует также, что некоторые «стареющие» технологии используются все реже и реже.

Джо Гуаданьо

Старший директор по технологиям, Rocket Mortgage

Какую IDE или редактор вы чаще всего используете для разработки на C#?

54%

62%

65%

Visual Studio

33%

27%

20%

JetBrains Rider

10%

9%

11%

Visual Studio Code

2%

2%

2%

Visual Studio для Mac

1%

1%

0%

Другое

За три года доля JetBrains Rider среди C#-разработчиков увеличилась с 20% до 33%.

Меня совершенно не удивляет рост популярности Rider. Сужу по своей команде: в начале прошлого года этой IDE пользовалась половина сотрудников, а сейчас — все.

Лоран Кампе

Тимлид и ведущий архитектор ПО, Innoveo

Какие плагины вы используете с Visual Studio?

36%

ReSharper

8%

CodeMaid

5%

Visual Assist

5%

ReSharper C++

4%

AWS Toolkit for Visual Studio

4%

Roslynator

3%

PostSharp

2%

CodeRush

5%

Другое

47%

Ни одного

На мой взгляд, странно, что почти половина респондентов использует стандартную конфигурацию Visual Studio, ведь с помощью плагинов можно значительно расширить возможности и повысить производительность.

Джо Гуаданьо

Старший директор по технологиям, Rocket Mortgage

Какие плагины для Visual Studio Code вы используете?

66%

Расширения C#

55%

C# for Visual Studio Code

34%

Unity Tools

33%

.NET Core Tools

23%

Менеджер зависимостей NuGet

19%

ESLint

17%

TODO Highlight

В какой операционной системе вы программируете на C#?

80%

Windows

34%

macOS

18%

Linux

Меня немного удивило, как много C#-разработчиков используют (в том числе) macOS и Linux. Кстати, о Linux: было бы интересно узнать соотношение обычных машин на Linux (в том числе виртуальных) и WSL.

Деннис Дитрих

Старший разработчик, Azure Storage, Microsoft

Какие фреймворки вы регулярно используете для юнит-тестирования?

39%

37%

xUnit

38%

37%

NUnit

14%

19%

MSTest / Фреймворк юнит-тестирования Visual Studio

9%

8%

MSTest V2

Я в прошлом инженер-тестировщик, и меня очень расстраивает, что столько C#-разработчиков вообще не пишут юнит-тесты. Я надеялся, что сейчас уже все понимают пользу юнит-тестирования. Интересно, почему так происходит. Разработчики не видят в этом пользы? Не хватает обучения или культуры разработки? Может быть, руководство отказывается от краткосрочных инвестиций, которых требует юнит-тестирование?

Деннис Дитрих

Старший разработчик, Azure Storage, Microsoft

Какие инструменты для диагностики или анализа производительности вы регулярно используете?

34%

Встроенные инструменты анализа производительности и диагностики Visual Studio

20%

dotTrace

17%

dotMemory

13%

Unity Profiler

8%

Динамический анализ программы в ReSharper или Rider

3%

Windows Performance Toolkit

2%

PerfView

Оглядываясь на свой 20-летний опыт работы и сравнивая его с приведенными данными, я прихожу к выводу, что анализ и оптимизация производительности сегодня часто оказываются в «слепой зоне», хотя так быть не должно. В каком-то смысле круг замкнулся. Когда-то проблема была в нехватке памяти и ресурсов ЦП, а сегодня код, который мы обычно пишем, запускается на мобильных устройствах с ограниченным зарядом аккумулятора или в облаке, требующем масштабирования, а значит неэффективное использование вычислительных ресурсов моментально увеличивает ежемесячные расходы на тысячи долларов.

Деннис Дитрих

Старший разработчик, Azure Storage, Microsoft

Как часто вы используете инструменты профилирования или диагностики?

74%

77%

Время от времени, когда случаются неполадки

19%

15%

Регулярно— ежедневно / еженедельно / в ходе каждого спринта для прогнозирования неполадок

6%

8%

Постоянно — это непрекращающийся фоновый процесс

1%

0%

Другое

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

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

Дилан Мунфайер

Старший разработчик, @dmoonfire

Кто на вашем проекте отвечает за профилирование или диагностику?

35%

Я и еще некоторые разработчики

28%

Только я

24%

Все разработчики, участвующие в нашем проекте

10%

Никто из участников нашего проекта

2%

Другое

Типы ПО, разрабатываемого в Visual Studio и JetBrains Rider

39%

38%

Веб-сайты

37%

35%

Утилиты (небольшие приложения для узких задач)

28%

20%

Системное ПО

25%

18%

Базы данных / хранилища данных

JetBrains Rider чаще выбирают для разработки игр (+ 18 процентных пунктов больше, чем Visual Studio), развлекательных приложений (на 4 процентных пункта больше) и приложений дополненной/виртуальной реальности (на 4 процентных пункта больше).

Спасибо, что уделили время!

Если результаты исследования показались вам интересными, поделитесь ими с друзьями и коллегами.

Если у вас есть вопросы или пожелания, свяжитесь с нами по адресу surveys@jetbrains.com.