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.mzph.cn/news/671625.shtml

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

相关文章

2024:AI 大冒险

2024:AI 大冒险 2023 年就像一场疯狂的过山车,现在让我们一起系好安全带,来预测一下 2024 年的五大惊心动魄事件吧! 一、AI 惹祸升级 嘿,2024 年可要小心了!AI 这家伙可能会变得更调皮捣蛋。人们可能会用…

Ubuntu下anaconda的常用操作

Ubuntu下anaconda的安装及常用操作 安装Anaconda 下载Anaconda:在Anaconda官网下载适合你系统的Anaconda安装包(通常是64位的Linux版本)。 安装Anaconda 在终端中导航到你下载Anaconda安装包的目录,然后运行以下命令安装Anacon…

git 使用 (备查)

git忽略清单 添加忽略清单 SSH免登录 ssh协议可以实现免登录操作,身份验证通过密钥实现。 跨团队写作 解决冲突 拉取 克隆 拉取最新版本 推送 远程仓库别名 直接使用git push推送 多人协作开发 分支命令 合并分支命令在主分支使用,将develop分支合并到…

大型装备制造企业案例分享——通过CRM系统管理全球业务

本期,小Z为大家带来的CRM管理系统客户案例是某大型装备制造企业运用Zoho CRM管理全球业务的过程分享。该企业是创业板上市公司,业务遍及100多个国家和地区,合作伙伴超百位,拥有覆盖全球的销售和服务网络。截止目前,相继…

7.electron之渲染线程发送事件,主进程监听事件

如果可以实现记得点赞分享,谢谢老铁~ Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 将 Chromium 和 Node.js 嵌入到了一个二进制文件中,因此它允许你仅需一个代码仓库,就可以撰写支持 Windows、…

【漏洞复现】电信网关配置管理系统SQL注入漏洞

Nx01 产品简介 电信网关配置管理系统是一个用于管理和配置电信网络中网关设备的软件系统。它可以帮助网络管理员实现对网关设备的远程监控、配置、升级和故障排除等功能,从而确保网络的正常运行和高效性能。 Nx02 漏洞描述 电信网关配置管理系统存在SQL注入漏洞,攻…

jmeter二次开发函数-生成身份证号

代码参考这个 java 随机生成身份证代码 Java的身份证号码工具类 pom文件添加 <dependency><groupId>org.apache.jmeter</groupId><artifactId>ApacheJMeter_core</artifactId><version>5.4.1</version></dependency><d…

annaconda如何切换当前python环境

annaconda默认的python环境是base&#xff1a; 把各种项目的依赖都安装到base环境中不是一个好的习惯&#xff0c;比如说我们做爬虫项目和做自动化测试项目等所需要的依赖是不一样的&#xff0c;我们可以将为每个项目创建自己的环境&#xff0c;在各自的环境中安装自己的依赖&…

Android 11 访问 Android/data/或者getExternalCacheDir() 非root方式

前言&#xff1a; 需求要求安装三方应用ExternalCacheDir()下载下来的apk文件。 getExternalCacheDir() : /storage/emulated/0/Android/data/com../cache/ 获取访问权限 如果手机安卓版本为Android10的时候,可以在AndroidManifest.xml中添加下列代码 android:requestLegacyExt…

Leetcode 30天高效刷数据结构和算法 Day1 两数之和 —— 无序数组

两数之和 —— 无序数组 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现…

JAVA原型模式详解

原型模式 1 原型模式介绍 定义: 原型模式(Prototype Design Pattern)用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型对象相同的新对象。 西游记中的孙悟空 拔毛变小猴,孙悟空这种根据自己的形状复制出多个身外化身的技巧,在面向对象软件设计领…

【Transformer-Hugging Face 06/10】 数据预处理实例

目录 一、说明二、自然语言处理2.1 Pad2.2 截断2.3 构建张量 三、TensorFlow四、处理语音五、计算机视觉六、填充七、Multimodal 一、说明 在数据集上训练模型之前&#xff0c;需要将其预处理为预期的模型输入格式。无论您的数据是文本、图像还是音频&#xff0c;都需要将它们…

Leetcode第383场周赛

Leetcode第383场周赛 本人水平有限&#xff0c;只做前3道。 一、边界上的蚂蚁 边界上有一只蚂蚁&#xff0c;它有时向 左 走&#xff0c;有时向 右 走。 给你一个 非零 整数数组 nums 。蚂蚁会按顺序读取 nums 中的元素&#xff0c;从第一个元素开始直到结束。每一步&#…

C#中实现串口通讯(使用SerialPort类)

仅作自己学习使用 1 准备部份 需要两个调试软件commix和Virtual Serial Port Driver&#xff0c;分别用于监视串口和创造虚拟串口。 第一个软件是这样的&#xff1a; 资源在这里&#xff1a;免费下载&#xff1a;Commix 也可以前往官网下载&#xff1a;Bwsensing— Attitude…

CSS综合案例4

CSS综合案例4 1. 综合案例 我们来做一个静态的轮播图。 2. 分析思路 首先需要加载一张背景图进去需要4个小圆点&#xff0c;设置样式&#xff0c;并用定位和平移调整位置添加两个箭头&#xff0c;也是需要用定位和位移进行调整位置 3. 代码演示 html文件 <!DOCTYPE htm…

几个好用的 iphone 手机模板贴图样机

整理了几个好用的 iphone 手机模板贴图&#xff0c;分享一下。 关注订阅号「设计师工作日常」&#xff0c;发送关键词 iphone mockup ,获取下载链接。 [1] 原文阅读 我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;求点赞求关注&#xff01;

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(1)-后端项目框架搭建

前言&#xff1a; 前面的四个章节我们主要讲解了MongoDB的相关基础知识&#xff0c;接下来我们就开始进入使用.NET7操作MongoDB开发一个ToDoList系统实战教程。本章节主要介绍的是如何快熟搭建一个简单明了的后端项目框架。 MongoDB从入门到实战的相关教程 MongoDB从入门到实战…

RBAC权限控制系统-手撸RBAC

手撸RBAC 一、概述 1、什么是RBAC RBAC&#xff08;Role-Based Access Control&#xff09;是一种访问控制机制&#xff0c;它基于角色的概念&#xff0c;将权限授予特定的角色&#xff0c;而不是直接授予个体用户。 这种模型允许管理员根据用户的角色来管理他们的权限&…

服务器出现问题该怎么办?

在我们日常使用服务器的过程中&#xff0c;经常会有遇到服务器出现各种各样问题&#xff0c;服务器出错的原因有很多种&#xff0c;常见的包括系统问题、软件问题、硬件问题和网络问题。今天德迅云安全就来介绍几种比较常见的情况。 一、 服务器出现蓝屏、死机可能的原因&#…

Arcgis使用过程中常见问题解决方法

Arcgis无法连接数据库/数据库连接或创建失败解决方法 最近在使用arcgis过程中出现无法连接数据库或者是无法创建数据库。连接到数据库失败&#xff1b;无法创建新的数据库&#xff0c;权限被拒绝&#xff08;如下图&#xff09;。 出现这个原因是你所用的电脑系统文件dao360.…