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 社区预测道。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第5章 数据库操作

学习目标 了解数据库,能够说出数据库的概念、特点和分类 熟悉Flask-SQLAlchemy的安装,能够在Flask程序中独立安装扩展包Flask-SQLAlchemy 掌握数据库的连接方式,能够通过设置配置项SQLALCHEMY_DATABASE_URI的方式连接数据库 掌握模型的定义…

[架构之路-275]:五张图向你展现软件开发不仅仅是编码,而是一个庞大的系统工程

目录 一、软件开发是组织架构的一部分,是为业务服务的 二、软件开发是一个系统工程,需要组织各种组织内的资源 三、目标软件是一个复杂的系统 四、软件开发过程本身是一个系统工程 五、目标软件的测试验证是一个系统工程 一、软件开发是组织架构的一…

骨科器械行业分析:市场规模为360亿元

骨科器械一般指专门用于骨科手术用的专业医疗器械。按国家食品药品监督局的分类划分常分为:一类;二类和三类。按照使用用途和性能主要分为骨科用刀、骨科用剪、骨科用钳、骨科用钩、骨科用针、骨科用刮、骨科用锥、骨科用钻、骨科用锯、骨科用凿、骨科用锉/铲、骨科…

【MySQL】-12 MySQL索引(上篇MySQL索引类型前置-2-高性能的索引策略)

MySQL索引-高性能的索引策略 3 高性能的索引策略3.1 独立的列3.2 前缀索引和索引选择性3.3 多列索引3.4 选择合适的索引列顺序3.5 聚簇索引(Clustered Indexes)3.5.1 InnoDB和MyISAM的数据布局的比较3.5.2 按primary key的顺序插入行(InnoDB) 3.6 覆盖索引(Covering Indexes)3.…

linux 自动定时清理缓存

文章目录 1,查看内存占用情况:1.1、free和available的区别?1.2、交换分区的作用? 2,手动清理命令3,定时自动清理3.1,创建文件夹3.2,新建文件cleanBuffer.sh3.3,添加内容3…

Transformer的PyTorch实现之若干问题探讨(二)

在《Transformer的PyTorch实现之若干问题探讨(一)》中探讨了Transformer的训练整体流程,本文进一步探讨Transformer训练过程中teacher forcing的实现原理。 1.Transformer中decoder的流程 在论文《Attention is all you need》中&#xff0…

统一数据格式返回,统一异常处理

目录 1.统一数据格式返回 2.统一异常处理 3.接口返回String类型问题 1.统一数据格式返回 添加ControllerAdvice注解实现ResponseBodyAdvice接口重写supports方法,beforeBodyWrite方法 /*** 统一数据格式返回的保底类 对于一些非对象的数据的再统一 即非对象的封…

【资料分享】基于单片机大气压监测报警系统电路方案设计、基于飞思卡尔的无人坚守点滴监控自动控制系统设计(程序,原理图,pcb,文档)

基于单片机大气压监测报警系统电路方案设计 功能:实现的是大气压检测报警系统,可以通过传感器实时检测当前大气压值,可以设定大气压正常范围,当超过设定范围进行报警提示。 资料:protues仿真,程序&#x…

计算机二级C语言备考学习记录

一、C语言程序的结构 1.程序的构成,main函数和其他函数。 程序是由main函数和其他函数构成main作为主函数,一个C程序里只有一个main函数其他函数可以分为系统函数和用户函数,系统函数为编译系统提供,用户函数由用户自行编写 2.…

[职场] 抖音运营SOP全攻略 #微信#职场发展

抖音运营SOP全攻略 1.养号的步骤 注册一机—卡一号,在注册的前5天只看视频不发视频,单日观看视频的时长不少于30分钟。观看过程中正常评论点赞互动,关注5-10个头部大号。关注20个二三十万至百万的竟品账号。 粉丝量低于1W的账号下不要留下…

Compose之Slider全面解析

JetPack Compose系列(14)—Slider Slider,即拖动条,默认包含了一个滑块和一个滑动轨道。允许用户在一个数值范围内进行选择。 按照惯例,先观察其构造函数: Composable fun Slider(value: Float,onValueCh…

Debezium发布历史120

原文地址: https://debezium.io/blog/2022/04/07/read-only-incremental-snapshots/ 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. Read-only Incremental Snapshots for MySQL April 7, 2022 by K…

【Python中Selenium元素定位的各种方法】

1、元素定位操作: 2、创建浏览器驱动操作,导入By模块: from selenium import webdriver # 用于界面与浏览器互动 from selenium.webdriver.common.by import By # 用于元素定位 driver webdriver.Chrome() # 调用Chrome类,创…

C++ 贪心 区间问题 区间选点

给定 N 个闭区间 [ai,bi] ,请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 N ,表示区间数。 接下来 N 行,每行包含两…

.NET高级面试指南专题六【线程安全】5种方法解决线程安全问题

前言 多线程编程相对于单线程会出现一个特有的问题,就是线程安全的问题。所谓的线程安全,就是如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且…

探索未来:集成存储器计算(IMC)与深度神经网络(DNN)的机遇与挑战

开篇部分:人工智能、深度神经网络与内存计算的交汇 在当今数字化时代,人工智能(AI)已经成为科技领域的一股强大力量,而深度神经网络(DNN)则是AI的核心引擎之一。DNN是一种模仿人类神经系统运作…

视觉开发板—K210自学笔记(二)

视觉开发板—K210 一、开发之前的准备 工欲善其事必先利其器。各位同学先下载下面的手册: 1.Sipeed-Maix-Bit 资料下载:https://dl.sipeed.com/shareURL/MAIX/HDK/Sipeed-Maix-Bit/Maix-Bit_V2.0_with_MEMS_microphone 2.Sipeed-Maix-Bit 规格书下载&…

解决dockor安装nginx提示missing signature key的问题

问题描述 使用dockor安装nginx拉取nginx的时候提示key丢失问题 问题定位 由于dockor版本低导致 问题解决 卸载重新安装最新版本dockor 解决步骤 1. 卸载旧版本的Docker: sudo yum remove docker docker-common docker-selinux docker-engine 2. 安装依赖包&am…

C++入门学习(二十六)for循环

for (初始化; 条件; 递增/递减) { // 代码块 } 打印1~10&#xff1a; #include <iostream> using namespace std; int main() { for (int i 1; i < 10; i) { cout <<i<<endl; } return 0; } 打印九九乘法表&#xff1a; #include <iostream…

Git版本与分支

目录 一、Git 二、配置SSH 1.什么是SSH Key 2.配置SSH Key 三、分支 1.为什么要使用分支 2.四个环境及特点 3.实践操作 1.创建分支 2.查看分支 3.切换分支 4.合并分支 5.删除分支 6.重命名分支 7.推送远程分支 8.拉取远程分支 9.克隆指定分支 四、版本 1.什…