C# станет королем языков программирования в 2023 году!
C# станет королем языков программирования в 2023 году!

👉Введение

2023 TIOBE Официально объявлен язык программирования года — C# Эту честь завоевал впервые после многолетней работы с ним. TIOBE сказал, что C# Web Такие области, как серверная часть приложений и игры, продолжают становиться популярными и начинают вторгаться Java доля рынка. Однако в стране уровень осведомленности о C# невысок. Сообщество разработчиков облачных технологий Tencent специально приглашает отечественных .Net Эту статью написал эксперт по разработке платформ Чжан Шанью. C# Статья-интерпретация победы в чемпионате,Давайте узнаем!Прочитав всю статью, вы также можете принять участие в розыгрыше красной обложки конверта Года Дракона в конце статьи!

👉Содержание

1 Введение

2 Взгляд на прошлую и настоящую жизнь с точки зрения особенностей языка C#

3. Взгляд на будущее развитие на основе сценариев применения C#

4 Заключение

01. Введение

Официально объявлено, что язык программирования 2023 года по версии TIOBE C# впервые завоевал ежегодную награду за язык программирования после более чем 20 лет пребывания в десятке лучших. Данные TIOBE показывают, что C# вырастет на 1,43% в 2023 году, что намного превысит 0,83% конкурентов Scratch и 0,64% Fortran.

TIOBE также сообщил, что C# в настоящее время постепенно отнимает долю рынка Java и становится все более популярным в таких областях, как серверные части веб-приложений и игры. Будучи новым, инновационным, кроссплатформенным, объектно-ориентированным языком программирования с открытым исходным кодом, C# может обеспечить поддержку всех сценариев, включая, помимо прочего, настольные компьютеры, мобильные устройства, Интернет вещей, игры, Интернет, облачные технологии, мобильные устройства и искусственный интеллект.

Почему C# внезапно набирает популярность? Какова история развития языка C#? Каковы его основные сценарии применения? Почему C# не очень популярен в Китае? Сообщество разработчиков Tencent Cloud специально пригласило Чжан Шанью, Tencent Cloud TVP и эксперта по разработке платформ .Net, написать эту статью по этим ключевым вопросам для читателей.

PS: Следующий контент отражает только личное мнение автора.

0Посмотрите на прошлую и настоящую жизнь с помощью особенностей языка C#

2.1 Рождение C#

Фактически, рождение C# можно отнести к концу 1990-х годов. В то время в Microsoft осознали, что быстрое развитие Интернета и растущая сложность программного обеспечения ставят перед разработчиками новые задачи. Традиционные языки программирования не могут удовлетворить растущие потребности, и разработчикам нужен более мощный и современный язык для решения этих задач, поэтому на свет появился C#.

C# разработан для обеспечения большей производительности, более сильной объектно-ориентированной поддержки и более высокой производительности. Он черпал вдохновение из таких языков, как C++, Java и Delphi, в сочетании с собственными инновациями Microsoft и был впервые выпущен в 2000 году. Со временем C# превратился в один из основных языков программирования для платформы .NET, предоставляющий разработчикам мощные и гибкие инструменты для создания различных типов приложений.

2.2 Цели проектирования и концепции разработки C#

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

Основная цель разработки C# — простота и удобство использования. Он использует синтаксис, аналогичный C++ и Java, что позволяет разработчикам быстро приступить к работе и писать понятный и лаконичный код. Более того, это чистый объектно-ориентированный язык программирования, который поддерживает объектно-ориентированные функции, такие как инкапсуляция, наследование и полиморфизм, поэтому он очень полезен в организации кода и управлении им, а также в улучшении удобства сопровождения и масштабируемости кода. Конечно, безопасность также находится в центре внимания C#, который вводит такие механизмы, как проверки безопасности типов, проверки нулевых ссылок и обработку исключений, чтобы предотвратить распространенные ошибки программирования и уязвимости безопасности, а также повысить надежность и стабильность кода. В то же время C# стремится обеспечить высокопроизводительное выполнение кода. Благодаря технологии JIT-компиляции код C# можно преобразовать в машинный код и оптимизировать во время выполнения, тем самым повышая производительность программы.

Кроме того, C# также занимается кросс-платформенной разработкой, внедряя платформу .NET Core и, наконец, превращаясь в единую платформу .NET, позволяющую C# работать в различных операционных системах, включая Windows, Linux, macOS и т. д., расширяя возможности развертывания. области применения. Поддержка интегрированной среды разработки (IDE) является частью целей разработки C#. С помощью мощных инструментов IDE (таких как Microsoft Visual Studio/Visual Studio Code и Rider) мы можем выполнять операции редактирования кода, отладки, автоматического завершения и рефакторинга, эффективно повышая эффективность разработки.

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

2.3 Текущий статус разработки C#

Стоит отметить, что C# в настоящее время находится в крайне недооцененном состоянии. Это главным образом связано с прошлой политикой Microsoft в отношении закрытого исходного кода. 12 ноября 2014 года Microsoft объявила, что весь технологический стек платформы .NET будет иметь открытый исходный код и размещаться на нем. .NET Foundation позволит .NET работать в Linux и MacOS и будет тесно сотрудничать с сообществом через .NET Foundation для улучшения .NET в будущем. В настоящее время мы можем найти проекты с открытым исходным кодом для всех компонентов платформы .NET на GitHub, включая компилятор C#.

Среди ряда основных инженерных языков с GC и приемлемой производительностью C# является первым, поддерживающим AOT для создания динамических библиотек. Таким образом, любой сценарий C++, разработка для настольных компьютеров, WebAssembly и большинство мобильных терминалов (включая). Android, iOS), C# AOT — все могут участвовать (не полностью заменять, но участвовать), и у каждого языка есть свои сильные стороны, и простое участие может привести к множеству изменений.

Последняя версия C# уже является современным языком программирования. Революционная особенность C#, выпущенная в 2022 и 2023 годах, — это повторное использование кода, независимое от языка. Будь то разработка на Java, Python, JS или Rust, мы можем использовать библиотеку кода C#, которая является легкой и не требует введения других зависимостей среды выполнения и сборки. Это в полной мере использует элегантность кода C# и позволяет программистам приложения верхнего уровня делают то же самое.

Конечно, помимо того, что C# является современным языком программирования, он также имеет следующие особенности:

  • Кросс-платформенный:.NET 8Поддержка всех современных настольных и мобильных платформ. С# 12 можно сравнить gcc/g++。
  • Высокоуровневая поддержка GC, скрывающая основные детали: .NET имеет настраиваемый GC. Хотя реализация .NET GC не так хороша, как многие реализации JVM GC, она пережила сотни сражений и прошла испытание на высокий уровень параллелизма.
  • Межъязыковое повторное использование, полностью превосходящее языки того же поколения. программирования: по сравнению с верхним местом в списке из Java、Python、JavaScript Эти языки, C# поддерживать AOT Вывод одной динамической библиотеки позволяет определять и экспортировать символы функций C, поэтому независимо от того, какой язык использует поставщик, мы можем использовать C# для работы. И мы также можем переключиться на bflat Цепочка для инструментов, установка не требуется .NET SDK для быстрой компиляции.
  • поддерживатьтип значения,Пусть развитие возьмет полный контроль C Взаимодействие: благодаря преимуществам динамических библиотек и собственных типов значений, C# Определение C API Интерфейс также чрезвычайно прост. Типы значений могут реализовывать независимую от времени выполнения структуру памяти. При экспорте динамических библиотек их можно использовать непосредственно при экспорте спецификаций передачи параметров функции. C Соглашение о вызовах, во время этого процесса нам нужно обратить внимание на то, чтобы размер возвращаемого значения не превышал intptr_t Вот и все.
  • Объявление экспортируемой функции простое: используйте UnmanagedCallersOnly Особенности могут быть C# Экспорт функций предоставляется для C Позвони, если зайдёшь оценить C/C++ из DLL_EXPORT Существует 400 миллионов способов написания, и каждый проект имеет собственное эргономичное пространство имен, а у других требования ниже. Этот момент и Java Похоже на, намного лучше, чем C++ хороший.
  • Хорошая совместимость: API стандартной библиотеки относительно стабилен и удобен для трансплантации кода.
  • Полнофункциональная стандартная библиотека: .NET. Стандартная библиотека очень полная и очень высокого качества. C# существование из приложения открывает путь к различным сценариям применения. Я часто слышу, как многие люди в обществе говорят, что существуют C# Мало библиотек, просто войдите GitHub Вы можете проверить его подлинность, языков не так много. программированияспособныйи C# Существует так много библиотек Pin, и невозможно, чтобы языковая библиотека, которая использовала так много Годов, всегда входила в число лучших языковых библиотек. Особенно если учесть широту охвата библиотеки, библиотек, которые могут сравниться с из, еще меньше. По той же причине, что и выше, здесь много хаязыков. программирования похоже на Кудо, но это повторение из.
  • Верхний предел производительности достаточно высок: было дано множество обзоров верхнего предела производительности, последний из которых .NET 8 В некоторых тестах он может даже немного превысить С++. Даже если посмотреть на это комплексно, C/C++, Rust Это первый эшелон слов C#. Это также второй эшелон ниже, Go и Java Его можно рассматривать только как уровень третьего эшелона, хотя многие считают его Java и C# Мы часто сравниваем их вместе, но в настоящее время с точки зрения верхнего предела производительности C# и Java В разрыве между уровнями снаряжения уже существует разрыв.
  • Нижний предел использования достаточно низок: по сути, если вы изучили программирование, вы можете быстро приступить к работе и выполнить базовые функции. С точки зрения простоты использования, Golang Это действительно первый эшелон C#. и Java Считается вторым эшелоном, и C++ и Rust Изсистему очень сложно освоить новичкам.

03. Взгляд на будущее развитие на основе сценариев применения C#

Будучи полнофункциональной платформой разработки приложений, C# можно быстро применить к аппаратным устройствам в различных облачных и периферийных сценариях, включая облачные серверы, мобильные терминалы, устройства Интернета вещей и т. д., обеспечивая эффективную работу и эффективное сотрудничество. В настоящее время C# является относительно зрелым в облачных приложениях, полнофункциональных веб-приложениях, настольных приложениях, мобильных приложениях, играх, Интернете вещей (IoT), искусственном интеллекте (ИИ) и других сценариях. В будущем этому будет уделяться пристальное внимание, особенно с учетом нынешнего бурного развития искусственного интеллекта.

3.1 Искусственный интеллект

Нет сомнений в том, что применение сценариев искусственного интеллекта является направлением с наибольшим потенциалом развития для C#. Оглядываясь назад на развитие алгоритмов за последние 10 лет, можно сказать, что оно в основном прошло три этапа: этап традиционного алгоритма с использованием математических и статистических методов. знания, проектирование функций, обработка и суждение, а также внедрение глубокой нейронной сети, аннотирование данных для обучения, автоматическое извлечение функций, обработка и оценка этапа алгоритма глубокого обучения на основе больших моделей, обработки с нулевой выборкой (Zero-Shot) или использования небольшое количество образцов для точной настройки этапа разработки приложений для больших моделей. На первых двух этапах в C# имеется библиотека ML.NET, которую можно использовать для разработки приложений в этой области. Характеристики Zero-Shot и универсальность больших моделей позволяют выполнить одну задачу без необходимости проходить весь процесс. сбора данных, маркировки, обучения и оптимизации. Вам нужно только понять процесс разработки прикладного уровня.

Некоторые функции языка C#, в том числе дружественность к неструктурированным данным, поддержка Native AOT, кроссплатформенность и Blazor, особенно подходят для приложений искусственного интеллекта, что делает его очень подходящим для разработки продуктов искусственного интеллекта. Например, при разработке прикладного уровня семантическое ядро ​​Microsoft с открытым исходным кодом в марте 2023 года официально выпустило версию 1.0 20 декабря 2023 года. Появление Semantic Kernel открыло двери для AGI в C#.

3.2 Облачный вариант

Развитие облачных и контейнерных технологий привело к прогрессу в общей индустриализации и экологии серверной части. Мы также можем построить распределенную архитектуру на основе собственных сервисов k8s и совместно использовать промежуточное программное обеспечение на всех языках. Например: вы можете использовать любое промежуточное программное обеспечение на любом языке, основанном на Dapr, и C# оказывается первым языком, поддерживаемым Dapr.

.NET 8 меняет подход к созданию интеллектуальных облачных приложений и сервисов с высоким трафиком, которые масштабируются по требованию. Независимо от того, развертываемся ли мы в Linux или Windows, используя контейнеры или выбранную нами модель облачных приложений, .NET 8 упрощает создание этих приложений. Он включает в себя набор проверенных библиотек, которые в настоящее время используются многими крупномасштабными службами Microsoft, чтобы помочь нам решить фундаментальные проблемы, связанные с наблюдаемостью, отказоустойчивостью, масштабируемостью, управляемостью и многим другим.

.NET 8 позволяет .NET-приложениям компилироваться в собственный код, использовать меньше памяти и запускаться немедленно, не дожидаясь, пока JIT-компилятор (точно вовремя) скомпилирует код во время выполнения, а также без необходимости развертывания JIT-компилятора и IL. код. Приложения AOT развертывают только код, необходимый приложению. Теперь наше приложение может работать в ограниченной среде, где нельзя использовать JIT-компилятор.

3.3 Игры

Стоит отметить, что C# также имеет очень хорошую репутацию в сфере разработки игр. В частности, он очень сбалансирован с точки зрения обучения и начала работы, набора талантов, стандартов программирования и операционной производительности, без явных недостатков. Разработчики игр используют Unity для создания игр. Типичным представителем является национальная игра Tencent King of Glory, которая в основном создана с использованием Unity и имеет более 100 миллионов активных пользователей. C# легко интегрируется с движком Unity. Кроме того, некоторые новые игровые движки также используют язык C#, например движок Godot с открытым исходным кодом.

Помимо игровых интерфейсов, технологии C# и .NET также все чаще используются в игровых серверах (игровые серверы могут без проблем работать на Linux).

3.4 Полнофункциональный Интернет

Blazor в .NET 8 может удовлетворить все потребности нашего веб-интерфейса, используя как серверную, так и клиентскую сторону. Благодаря множеству новых улучшений, направленных на оптимизацию времени загрузки страниц, масштабируемость и улучшение пользовательского опыта, разработчики теперь могут использовать Blazor Server и Blazor WebAssembly в одном приложении, автоматически перемещая пользователей с сервера на клиент в конце выполнения. Сравнивая эти два кода, становится ясно, что код .NET работает быстрее на WebAssembly, главным образом благодаря новой среде выполнения на основе «Jiterpreter» и новым встроенным компонентам.

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

3.5 Настольное приложение

Фактически, применение C# в среде разработки настольных компьютеров также является ярким моментом. Помимо традиционных платформ разработки настольных компьютеров Windows WPF и Winforms на платформе .NET, существует также множество кроссплатформенных платформ с открытым исходным кодом, таких как Avalonia UI и UNO Platform. В частности, Avalonia UI — это кроссплатформенная среда разработки пользовательского интерфейса для настольных компьютеров (WINDOWS, LINUX, MAC), основанная на .NET и XAML. Нет проблем с тем, что одна платформа использует WINUI, а другая — собственный, что приводит к разным рендерингам. Бывает, все платформы используют SkiaSharp для рендеринга.

В частности, в Китае в сообществе openKylin была создана Avalonia SIG для продвижения поддержки Avalonia UI экосистемы openKylin и связанного с ней экологического построения Avalonia UI. Поскольку отечественный настольный компьютер Linux проникает в традиционные отрасли, такие как промышленность и здравоохранение, пользовательский интерфейс Avalonia становится полностью конкурентоспособным на этом рынке. Все больше и больше пользователей переходят от традиционного QT к бесплатному пользовательскому интерфейсу Avalonia.

Помимо пользовательского интерфейса Avalonia, существует еще Blazor, который одинаково хорошо работает с клиентскими приложениями. Blazor Hybird, поддерживаемый начиная с .NET7, использует Blazor Hybrid для объединения собственных клиентских платформ для настольных компьютеров и мобильных устройств с .NET и Blazor. В гибридных приложениях Blazor компоненты Razor работают на устройстве изначально. Компоненты отображаются во встроенных элементах управления веб-представления через собственный канал взаимодействия. Компонент не запускается в браузере и не задействует WebAssembly. Компоненты Razor быстро загружают и выполняют код, а компоненты имеют полный доступ к собственным функциям устройства через платформу .NET.

3.6 Мобильные приложения

Пользовательский интерфейс многоплатформенного приложения .NET (.NET MAUI) — это кроссплатформенная платформа для создания собственных мобильных и настольных приложений с использованием C# и XAML. Используя .NET MAUI, вы можете разрабатывать приложения, которые работают на Android, iOS, macOS, Windows и других платформах. приложения, работающие на единой общей базе кода. .NET MAUI включает элемент управления BlazorWebView, который отображает компоненты Razor во встроенном веб-представлении. Используя .NET MAUI с Blazor, мы можем повторно использовать набор компонентов веб-интерфейса на мобильных устройствах, настольных компьютерах и в Интернете.

3.7 Интернет вещей (Интернет вещей)

Помимо настольных и мобильных приложений, C# также широко используется в Интернете вещей (IoT). .NET работает на различных платформах и архитектурах. Он поддерживает распространенные подключаемые платы Интернета вещей (IoT), такие как Raspberry Pi и Hummingboard. Приложения Интернета вещей часто взаимодействуют со специализированным оборудованием, таким как датчики, аналого-цифровые преобразователи и ЖК-устройства.

Требования к промышленным сетям растут с невероятной скоростью, будь то с точки зрения сетевых технологий, стандартизации или кибербезопасности. В этих проблемных областях быстро развивается стандарт связи OPC UA (Open Platform Communications – Unified Architecture, Open Platform Communications – Unified Architecture) на базе Ethernet. Стандартная библиотека OPC UA UA-.NETStandard, созданная OPC Foundation. Реализация C#, которая позволяет нечленам использовать OPC UA в качестве пробной спецификации, прототипа или исследовательского проекта.

Фактически, серверная система Интернета вещей, использующая .NET и C#, также находит все более широкое применение, а встроенная серверная система сервисов может без каких-либо препятствий работать в Linux.

04. Заключение

На мой взгляд, объективная реальность не статична, а постоянно развивается и меняется. C# всегда входил в пятерку лучших пользователей в мире, но многие считают, что сценарии его использования в Китае кажутся относительно скудными, главным образом потому, что большинство людей по-прежнему смотрят на проблемы со старой точки зрения, а не смотрят на проблемы с другой точки зрения. развития и изменения. Последняя версия C# 12 — это язык программирования, сочетающий в себе эффективность разработки Python с производительностью C/C++/Rust.

На рынке настольных компьютеров Linux AvaloniaUI C# дополняет кроссплатформенные требования Window Forms и WPF и постепенно становится сильным конкурентом QT. В сценарии искусственного интеллекта, поддерживаемом GenAI, новая парадигма разработки, основанная на проекте семантического ядра, получит больше последователей в 2024 году.

Об авторе

Чжан Шанью, технический директор Исследовательского института приложений искусственного интеллекта Чжиюн, TVP Tencent Cloud, окончил математический факультет Университета Ланьчжоу, специализируется на разработке облачных технологий, выступает за культуру открытого исходного кода, использует программное обеспечение с открытым исходным кодом для создания собственных облачных программных систем и управляет общедоступной учетной записью WeChat «кроссплатформенный dotNet» и «интеллектуальными приложениями нового поколения» для продвижения и популяризации применения облачных технологий в развитии корпоративного бизнеса. Я занимаюсь разработкой платформ .NET уже 20 лет. Писательство для меня является хобби. Я написал большое количество технических статей в своем личном технологическом блоге и открыл колонку в сообществе разработчиков Tencent Cloud.

-End-

Автор оригинала|Чжан Шанью

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода