C# 夺冠,微软.NET前途光明!

本文以C# 摘得 “2023 年度编程语言“称号为背景,介绍.NET的历史、生态及发展势头,该文章是本人C#专栏的第一篇文章。

这里写目录标题

  • 1.C#摘得"2023年度编程语言"奖项
  • 2.什么是.NET?
    • 2.1.NET简史
    • 2.2.NET是用于应用程序开发的生态系统
    • 2.2.1.使用 .NET 语言和编译器在 .NET 运行时中运行应用程序
    • 2.2.2.使用 .NET 应用程序框架和库来利用预生成功能
      • .NET生态的主要应用模型
    • 2.2.3. .NET 开发工具(集成开发环境)
  • 3.何时使用.NET?
      • (1) 看重工作效率
      • (2)企业级应用开发
      • (3)原型制作、初创企业和小规模应用程序
      • (4)云和AI应用程序
      • (5)IoT 应用程序
  • 4.C#与.NET的关系
  • 5.NET生态系统发展势头

1.C#摘得"2023年度编程语言"奖项

2024 年伊始,TIOBE 最新的 1 月榜单重磅发布,C# 首次荣获年度编程语言奖。

在这里插入图片描述

对此,TIOBE 软件公司首席执行官 Paul Jansen 表示,“二十多年来,C# 一直稳居前十名,如今,它正在追赶 Python、C、C++、Java 四大语言的脚步,成为一年内涨幅最大的语言(+1.43%),赢得了当之无愧的奖项。”

2.什么是.NET?

当有人使用术语“.NET”时,其含义在很大程度上取决于上下文。换句话说,.NET 是共同创建用于生成应用程序的强大环境的许多部件和人员的集合。

2.1.NET简史

  • 最初的 .NET Framework 于 2002 年初首次发布。 从那以后,许多更新和更多功能随之推出。 经过多年的改进和新功能积聚,最初的 .NET Framework(特别是关键代码库)有了显著增长。

  • 2002 年之后,Microsoft 致力于开发具有跨平台兼容性的 .NET 版本。 其目标是允许开发人员编写一个基本代码,并可跨 macOS、Linux 和 Windows 操作系统使用它。

  • 通过不懈的努力,.NET Core 于 2014 年左右推出。 Microsoft 维护着最初的 .NET Framework,但新功能和改进是为 .NET Core 保留的。 “Core”稍后从名称中删除。 之后推出的主要版本是 .NET 5、.NET 6、.NET 7、.NET 8 等。 这些版本通常在每年 11 月发布。

2.2.NET是用于应用程序开发的生态系统

"生态系统”描述了应用程序开发环境及其周围社区的多方面领域。 这些方面共同构成了一个令人信服的理由,解释了为何要在学习 .NET 和生成.NET 应用程序方面投入精力。

2.2.1.使用 .NET 语言和编译器在 .NET 运行时中运行应用程序

当我们在喜爱的IDE中编写代码时,第一个检测我们代码的就是IDE(词法分析),然后,编译成目标文件和链接到动态/静态库或可执行文件进行再次检查(语法分析),最后一次检查是运行时检查。托管环境的共同特点是:编译器不直接编译成机器码,而是中间代码,在.NET中称为MSIL - Microsoft Intermediate Language,Java是字节码(Bytecode)

在那之后,在运行时JIT(Just In Time)编译器将MSIL翻译成机器码,这意味着我们的代码在真正使用的时候才被解析,这允许在CLR(公共语言运行时)预编译和优化我们的代码,实现程序性能的提高,但增加了程序的启动时间。

在我们运行代码之前,必须先对其进行编译。 .NET 编译器是一个将源代码(可用任何支持的编程语言)转换为可移植语言(称为中间语言 (IL))的程序。 .NET 编译器将 IL 代码保存到名为“.NET 程序集”的文件中。 通过将代码编译为中间格式,无论在哪里运行代码(Windows 或 Linux,32 位或 64 位计算机硬件),都可以使用相同的代码库。
在这里插入图片描述

.NET 运行时是编译后的 .NET 程序集的执行环境。 换句话说,当应用程序在主机操作系统上运行时,.NET 运行时执行和管理该应用程序。 稍后我们将详细讨论 .NET 运行时的功能。

2.2.2.使用 .NET 应用程序框架和库来利用预生成功能

所有软件都是分层生成的,这意味着软件在计算机的不同抽象层次上运行:

  • 在最低层,软件直接与计算机硬件通信。 它控制着主板、处理器、内存和硬盘驱动器上的数据流。
  • 在下一层,软件支持最终用户通过操作系统提供指令。
  • 在下一层,.NET 等软件提供开发和运行应用程序的方法。
  • 在下一层,可以借助应用程序框架和功能库,使用比以前更简单的开发方法,快速生成丰富的应用程序。

代码库将特定用途的功能封装到单个程序集中。 对于 .NET,可以使用数千个库。 这些库可以是第一方的,也可以是第三方的,可以是商业的,也可以是开源的。 这些库提供了一系列可在应用程序中使用的功能。 只需引用这些程序集并调用所需的方法。 作为开发人员,我们可以使用这种方法在其他软件开发人员的工作之上生成应用程序。 由于无需自己生成和维护每个功能,因此可以节省我们的时间和精力。

应用程序框架结合了几个相关的库、初学者项目、文件模板、代码生成器以及其他工具。 我们可以使用这些资源为特定目的生成整个应用程序。 这些应用程序框架称为“应用模型”。 例如,.NET 应用程序框架可用于 Web 开发、桌面和移动开发以及游戏开发等常用应用模型。

可以直接安装 .NET SDK,也可以安装 Visual Studio 2022。 .NET SDK 预安装了一组全面的库和应用程序框架,称为“基类库”。 我们可以在程序中使用此代码库,无需考虑要生成的平台或应用模型。

对于其他第三方库,我们使用 NuGet 等包管理器从包存储库(如 NuGet 库)中查找并集成代码库。

.NET生态的主要应用模型

应用模型框架说明
WebASP.NET Core用于生成服务器端逻辑的框架。
WebASP.NET Core MVC用于为网页或 Web API 生成服务器端逻辑的框架。
WebASP.NET Core Razor Pages用于生成服务器生成的 HTML 的框架。
Web 客户端BlazorBlazor 是 ASP.NET Core 的一部分。 它的两种模式允许通过套接字进行文档对象模型 (DOM) 操作,作为运行服务器端代码的通信工具,或者作为在浏览器上运行已编译 C# 的 WebAssembly 实现。
桌面.NET for Mac允许 .NET 开发人员使用本机 UI 和 API 访问生成适用于 Mac 设备的应用。
桌面WinForms用于生成“战舰灰色”Windows 风格应用程序的框架。
桌面Windows Presentation Foundation (WPF)一个框架,用于生成符合不同外形规格的动态桌面应用程序。 WPF 允许外形元素在丰富的动画库的帮助下执行移动、淡出、滑动和其他效果。
移动.NET for Android允许 .NET 开发人员使用本机 UI 和 API 访问生成适用于 Android 设备的应用。
移动.NET for iOS允许 .NET 开发人员使用本机 UI 和 API 访问生成适用于 iOS 和 iPadOS 的应用。
多平台应用 UI.NET MAUI使用本机 UI 从单个共享代码库生成适用于 iOS、Android、Mac 和 Windows 的应用以及访问本机 API 的首要方法。

.NET 还支持常用的第三方及开源游戏开发环境和 Unity 等引擎。

2.2.3. .NET 开发工具(集成开发环境)

软件开发人员依赖工具来编写代码、添加对代码库的引用、编译代码和调试代码。 本部分介绍了几种用于生成 .NET 应用程序的 .NET 工具。

  • Visual Studio 2022: Microsoft 旗舰开发环境, 数百万开发人员使用它来生成 .NET 应用程序。 包含菜单、窗口、可视化设计器、对话框和向导的图形用户界面可引导开发人员完成应用程序开发过程。 Visual Studio 2022 提供三个版本:社区版、专业版和企业版。 每个版本都包含不同的工具,并且授权用于不同的目的。

  • Visual Studio Code : Microsoft 旗舰代码编辑器,它支持多种编程语言,并且在 Windows、Mac 和 Linux 上受支持。 C# 开发工具包扩展为 Visual Studio Code 带来了改进的编辑器优先 C# 开发体验,并通过对解决方案资源管理器、项目系统、测试增强功能和资源管理器、AI 辅助开发的支持增强了 .NET 项目的处理体验,可为代码导航、重构、语义感知等同类最佳的 C# 语言功能提供强大的语言服务。

更喜欢命令行工作流的开发人员可以将 Visual Studio Code(世界上最常用的代码编辑器)与 .NET 命令行接口(也称为 .NET CLI)结合使用。

3.何时使用.NET?

(1) 看重工作效率

学会了如何基于一个应用模型来生成应用程序后,我们就可以很容易地应用所学的知识来生成其他应用程序,即使它使用不同的应用模型。 例如,学会了如何生成 Web 应用程序后,你的 .NET 技能就转化为生成移动应用。重新利用知识可以减少学习新编程模型或语言所需的时间投入。 当你应对新挑战时,我们的团队会节省时间和开销。

(2)企业级应用开发

由于多种原因,.NET 在企业中很受欢迎。 优点包括其生态系统及其与其他 Microsoft 产品(包括 Azure 云服务和本地服务器产品)的集成。 此外,.NET 是一个强类型系统,因此它可以避免在松散类型系统中出现的许多 bug。 开发人员可以选择在 C# 中使用基于对象的范例,或者在 F# 中使用基于函数的范例。 它们使用最适合其需要解决的问题类型的语言。

(3)原型制作、初创企业和小规模应用程序

由于 .NET 长期以来基于客户反馈和遥测对语言、API 和工具进行设计改进,因此它在小型项目中也很受欢迎。 借助 .NET,可以快速开发出功能齐全的软件,用于原型制作。 此外,.NET 可以在成本较低的硬件和云服务上运行。 其性能也优于其他热门平台,因此非常适合初创企业。

(4)云和AI应用程序

用于 .NET 的 Azure SDK 允许开发人员预配和管理 Azure 资源。 另外,Azure 应用服务和 Azure Functions 可以托管用 .NET 语言生成的应用程序。

ML.NET 是适用于 .NET 语言的免费机器学习库。 它支持基于模型的机器学习分析和预测功能。

(5)IoT 应用程序

可使用 .NET 生成适用于 IoT 设备和场景的 IoT 应用程序。 IoT 应用程序通常与需要使用常规用途 I/O (GPIO) 引脚、串行端口或类似硬件的传感器、显示器和输入设备交互。 例如,我们可以找到用于处理像 Raspberry Pi 和 HummingBoard 等常用板的库。

4.C#与.NET的关系

在这里插入图片描述

有时,人们认为 C# 编程语言就是 .NET。 但是,C# 和 .NET 是截然不同的。 C# 是一种编程语言语法。 作为语法,我们可以引用和调用 .NET 代码库或程序集中定义的方法。

在这里插入图片描述

根据 JetBrains 发布的《2023 开发者生态系统现状》报告显示,79% 的 C# 开发人员使用 Windows。.NET 项目中使用 C# 的用户数高达 99%。

5.NET生态系统发展势头

  • .NET重要部分通过开源方式开发,87% 的参与者都不属于 Microsoft
  • 有超过 500 万的 .NET 开发人员!
  • Stack Overflow 投票结果一直表明,.NET Core 和 .NET 是最受欢迎的框架。
  • 学生群体喜欢使用 .NET,在刚接触 .NET 开发的人员中,有 40% 都是学生。
  • 适用于 .NET 和 ASP.NET 的 GitHub 存储库位列成长速度最快的前 30 名开源软件 (OSS) 项目之中。
  • GitHub 将 C# 列为五大热门编程语言之一,根据 2023 年的 TIOBE 编程社区指数,该语言越来越受欢迎。
  • 根据 TechEmpower 基准(一组独立的开源 Web 性能基准测试集,可以测量几十种语言和应用程序框架),.NET 拥有世界上最快的 Web 框架。

“C# 将继续存在,甚至可能很快超过 Java”, TIOBE 社区预测道。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/463383.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络协议、网络传输认识

目录 网络协议概念 网络协议具象化理解 协议分层 TCP/IP模型 网络传输基本流程 网络协议概念 网络协议是计算机网络中用于在通信设备之间传输数据的规则集合。这些规则定义了数据的格式、传输方式、错误检测和纠正方法等,以确保不同设备之间的通信能够正确进行…

EasyExcel操作Excel表格

一、EasyExcel介绍 1.1 介绍 EasyExcel 是一个基于 Java 的简单易用的 Excel 文件读写工具,它提供了一种简单而又高效的方式来读取、写入和操作 Excel 文件。EasyExcel 是阿里巴巴开源的项目,它旨在简化开发人员处理 Excel 文件的流程,使得…

java实现栈功能

1.使用数组方式 public static void main(String[] args) throws Exception {BufferedReader br new BufferedReader(new InputStreamReader(System.in));int operateNum Integer.parseInt(br.readLine());//操作次数String inputInfo;//输入信息StringBuilder outputSb new…

WWW 2024 | 时间序列(Time Series)和时空数据(Spatial-Temporal)论文总结

WWW 2024已经放榜,本次会议共提交了2008篇文章,research tracks共录用约400多篇论文,录用率为20.2%。本次会议将于2024年5月13日-17日在新加坡举办。 本文总结了WWW 2024有关时间序列(Time Series)和时空数据&#xf…

【OrangePi Zero2 智能家居】阿里云人脸识别方案

一、接入阿里云 二、C语言调用阿里云人脸识别接口 三、System V消息队列和POSIX 消息队列 一、接入阿里云 在之前树莓派的人脸识别方案采用了翔云平台的方案去1V1上传比对两张人脸比对,这种方案是可行,可 以继续采用。但为了接触更多了云平台方案&…

ios设备解锁 --Apeaksoft iOS Unlocker

Apeaksoft iOS Unlocker是一款针对iOS系统的密码解锁工具。其主要功能包括解锁多种锁屏类型,包括数字密码、Touch ID、Face ID和自定义密码。此外,它还可以帮助用户删除iPhone密码以进入锁屏设备,忘记的Apple ID并将iPhone激活为新的&#xf…

蓝桥杯每日一题------背包问题(一)

背包问题 阅读小提示:这篇文章稍微有点长,希望可以对背包问题进行系统详细的讲解,在看的过程中如果有任何疑问请在评论区里指出。因为篇幅过长也可以进行选择性阅读,读取自己想要的那一部分即可。 前言 背包问题可以看作动态规…

再识C语言 DAY17 【什么是原码、反码和补码】

文章目录 前言本文总结于此文章 一、知识补充二、原码三、反码四,补码 总结如果您发现文章有错误请与我留言,感谢 前言 本文总结于此文章 一、知识补充 通常,1字节包含8位。C语言用字节(byte)表示储存系统字符集所需…

跟着pink老师前端入门教程-day23

苏宁网首页案例制作 设置视口标签以及引入初始化样式 <meta name"viewport" content"widthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, minimum-scale1.0"> <link rel"stylesheet" href"css/normaliz…

Tkinter教程22:DataFrame数据加入到treeview树视图(含横纵滚动条+正反排序)

------------★Tkinter系列教程★------------ Tkinter教程21&#xff1a;Listbox列表框OptionMenu选项菜单Combobox下拉列表框控件的使用绑定事件 Tkinter教程20&#xff1a;treeview树视图组件&#xff0c;表格数据的插入与表头排序 Python教程57&#xff1a;tkinter中如何…

刘谦魔术我用代码还原了,魔术尽头是数学,数学尽头是神学!

刘谦在春晚让两个半张扑克牌合在一起的时候&#xff0c;我就知道其中必然有数学的奥妙。 假设我们初始卡牌为1&#xff0c;2&#xff0c;3&#xff0c;4。对半撕开后我们定义扑克牌为&#xff1a; 1(1) 2(1) 3(1) 4(1) 1(2) 2(2) 3(2) 4(2)按照刘谦的魔术&#xff0c;你需要…

C语言之:编译和链接

目录 1. 翻译环境和运行环境翻译环境 2. 翻译环境&#xff1a;预编译编译汇编链接预处理&#xff08;预编译&#xff09;编译词法分析语法分析语义分析汇编链接运行环境 1. 翻译环境和运行环境 在ANSI C的任何一种实现中&#xff0c;存在两个不同的环境。 第一种是翻译环境&a…