<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      C# 成為2023年度編程語言之王

      原文發(fā)表在公眾號 騰訊云開發(fā)者:https://mp.weixin.qq.com/s/5owE5hmJVkwOLJrKMXfR6Q

      導(dǎo)讀

      2023 TIOBE 年度編程語言正式揭曉,C# 在陪跑多年后首次斬獲這一殊榮。TIOBE表示,C#在 Web 應(yīng)用后端和游戲等領(lǐng)域變得持續(xù)流行,并開始蠶食 Java 的市場份額。然而在國內(nèi),C#的認(rèn)知度卻并不高。騰訊云開發(fā)者社區(qū)特邀國內(nèi) .Net 平臺開發(fā)專家張善友,創(chuàng)作了這篇 C# 奪魁背后的解讀文章,讓我們一探究竟!讀完全文還可以參加文末龍年紅包封面抽獎(jiǎng)活動(dòng)哦!

      目錄

      1 引言

      2 從 C# 的語言特性看前世今生

      3 從 C# 的應(yīng)用場景看未來發(fā)展

      4 結(jié)語


      01


      引言

      2023 年 TIOBE 年度編程語言已經(jīng)正式公布,C# 在穩(wěn)居前10名20多年之久后,首次摘下年度編程語言桂冠。TIOBE 數(shù)據(jù)顯示,C# 在2023年的漲幅達(dá)1.43%,遠(yuǎn)超過競爭對手 Scratch 的0.83%和 Fortran 的0.64%。

      image

      TIOBE 還表示,C# 目前正在逐步蠶食 Java 的市場份額,并且在 Web 應(yīng)用后端和游戲等領(lǐng)域變得越來越流行。C# 作為一種新式、創(chuàng)新、開放源代碼、跨平臺,面向?qū)ο蟮木幊陶Z言,可以開發(fā)包括但不限于桌面、移動(dòng)、IoT、游戲、Web、云原生、移動(dòng)和 AI 全場景支持。

      為什么 C# 能突然獲得流行?C# 語言的發(fā)展歷程是怎樣的?它有哪些核心應(yīng)用場景?為什么國內(nèi) C# 的流行度并不高?騰訊云開發(fā)者社區(qū)特邀騰訊云 TVP、.Net 平臺開發(fā)專家張善友,針對這些關(guān)鍵問題創(chuàng)作了本篇文章,以饗讀者。

      ps:以下內(nèi)容僅代表作者個(gè)人觀點(diǎn)。

      image

      02


      從 C# 的語言特性看前世今生
      2.1 C# 的誕生之路

      其實(shí),C# 的誕生可以追溯到20世紀(jì)90年代末。當(dāng)時(shí),微軟公司意識到互聯(lián)網(wǎng)的迅速發(fā)展和軟件復(fù)雜性的增加對開發(fā)者提出了新的挑戰(zhàn)。傳統(tǒng)的編程語言無法滿足日益增長的需求,開發(fā)者需要一種更強(qiáng)大、更現(xiàn)代化的語言來應(yīng)對這些挑戰(zhàn),因此 C# 應(yīng)運(yùn)而生。

      C# 旨在提供更好的生產(chǎn)力、更強(qiáng)大的面向?qū)ο笾С趾透叩男阅堋K鼜?C++、Java 和 Delphi 等語言中吸取了靈感,并結(jié)合了微軟自身的創(chuàng)新,于2000年首次發(fā)布。隨著時(shí)間的推移,C# 逐漸發(fā)展成為 .NET 平臺的主要編程語言之一,為開發(fā)者提供了強(qiáng)大而靈活的工具來構(gòu)建各種類型的應(yīng)用程序。

      2.2 C# 的設(shè)計(jì)目標(biāo)和發(fā)展理念

      在我看來,C# 的設(shè)計(jì)目標(biāo)和理念是為了提供一種強(qiáng)大、現(xiàn)代化的編程語言,以提高開發(fā)者的生產(chǎn)力和代碼質(zhì)量。

      C# 的首要設(shè)計(jì)目標(biāo)是簡單易用。它采用了類似于 C++ 和 Java 的語法,使得開發(fā)者能夠迅速上手,并編寫清晰、簡潔的代碼。而且它還是一種純面向?qū)ο蟮木幊陶Z言,支持封裝、繼承和多態(tài)等面向?qū)ο蟮奶匦裕蚨钟兄诮M織和管理代碼,提高代碼的可維護(hù)性和可擴(kuò)展性。當(dāng)然,安全性也是 C# 的關(guān)注重點(diǎn),它引入了類型安全檢查、空引用檢查和異常處理等機(jī)制,以防止常見的編程錯(cuò)誤和安全漏洞,提高代碼的可靠性和穩(wěn)定性。同時(shí) C# 致力于提供高性能的代碼執(zhí)行。通過即時(shí)編譯(Just-In-Time Compilation)技術(shù),C# 代碼可以被轉(zhuǎn)換為機(jī)器碼,并在運(yùn)行時(shí)進(jìn)行優(yōu)化,從而提高程序的性能。

      此外,C# 還追求跨平臺開發(fā),引入了 .NET Core 平臺,最后演化成一個(gè)統(tǒng)一平臺 .NET,使得 C# 可以在不同的操作系統(tǒng)上運(yùn)行,包括 Windows、Linux 和 macOS 等,擴(kuò)展了應(yīng)用程序的部署范圍。并且集成開發(fā)環(huán)境(IDE)支持也是 C# 設(shè)計(jì)目標(biāo)的一部分。借助強(qiáng)大的IDE工具(如Microsoft Visual Studio/Visual Studio Code 和 Rider),我們可以進(jìn)行代碼編輯、調(diào)試、自動(dòng)完成和重構(gòu)等操作,有效提高開發(fā)效率。

      綜上所述,C# 基于簡單易用、面向?qū)ο蟆踩浴⒏咝阅堋⒖缙脚_和 IDE 支持等特點(diǎn)使得其成為廣泛應(yīng)用于各個(gè)領(lǐng)域的強(qiáng)大編程語言之一。

      2.3 C# 的發(fā)展現(xiàn)狀

      值得注意的是,C# 目前處于極度被低估的狀態(tài),這主要是和微軟公司過去的閉源政策有很大關(guān)系,在2014年11月12日,微軟宣布 .NET 平臺全技術(shù)棧開源并且托管到 .NET 基金會(huì),將讓 .NET 運(yùn)行在 Linux 和 MacOS 上,并且會(huì)通過 .NET Foundation(.NET 基金會(huì))來與社區(qū)密切合作在未來改進(jìn) .NET。目前我們可以在 GitHub 上找到所有 .NET 平臺組件的開源項(xiàng)目,包括 C# 的編譯器。

      在帶 GC 和性能尚可的系列主流工程語言里,C# 率先支持 AOT 創(chuàng)建動(dòng)態(tài)庫,這樣一來,C++的任何場景,所有桌面端開發(fā)、WebAssembly、大部分移動(dòng)端(包括安卓、iOS),C# AOT 都能參與 (不是完全替代,而是參與),而語言各有所長,只是參與就能帶來很多改變。

      最新版本的 C# 已經(jīng)是一個(gè)現(xiàn)代化的編程語言,C# 在2022年和2023年發(fā)布了改變游戲規(guī)則的特性是上下游語言無關(guān)的代碼復(fù)用。無論是 Java、Python、JS 還是 Rust 開發(fā),我們都可以使用 C# 代碼庫,輕量、無需引入其他運(yùn)行時(shí)和構(gòu)建依賴,這充分發(fā)揮了 C# 代碼優(yōu)雅的優(yōu)勢,讓上層應(yīng)用的程序員也能做底層的東西。

      當(dāng)然,C# 除了是現(xiàn)代的編程語言,還有以下亮點(diǎn):

      • 跨平臺:.NET 8支持跨當(dāng)前所有主流的桌面、移動(dòng)平臺。C# 12可以對標(biāo) gcc/g++。

      • 高層級 GC 支持,屏蔽底層細(xì)節(jié):.NET 有可配置的 GC,.NET GC 的實(shí)現(xiàn)雖然不如很多 JVM 的 GC 實(shí)現(xiàn),但也是身經(jīng)百戰(zhàn),經(jīng)過了高并發(fā)的考驗(yàn)。

      • 跨語言復(fù)用性,全面超越同時(shí)代的編程語言:相比榜單上靠前的 Java、Python、JavaScript 這些語言,C# 支持 AOT 輸出單個(gè)動(dòng)態(tài)鏈接庫,能定義導(dǎo)出C函數(shù)符號,那么交付方不管使用什么語言,我們都可以用C#進(jìn)行操作。并且我們還可以切換到 bflat 工具鏈,不用安裝 .NET SDK,實(shí)現(xiàn)快速編譯。

      • 支持值類型,讓開發(fā)者完全掌控與 C 的互操作:有了動(dòng)態(tài)庫的優(yōu)勢,加上具有原生的值類型,在 C# 里定義 C API 接口也是極簡單的。值類型能實(shí)現(xiàn)運(yùn)行時(shí)無關(guān)的內(nèi)存布局,在導(dǎo)出動(dòng)態(tài)庫時(shí),導(dǎo)出函數(shù)的傳參規(guī)范時(shí)可直接使用 C 調(diào)用約定,在這過程中我們需要注意返回值大小不要超過 intptr_t 即可。

      • 導(dǎo)出函數(shù)聲明簡單:使用 UnmanagedCallersOnly 特性可以將 C# 函數(shù)導(dǎo)出提供給 C 調(diào)用,如果你去領(lǐng)略 C/C++ 的 DLL_EXPORT 四億種寫法,各個(gè)項(xiàng)目各有千秋符合人體工學(xué)的命名空間設(shè)計(jì),對開發(fā)者的要求更低。這點(diǎn)和 Java 類似,遠(yuǎn)比 C++ 好。

      • 兼容性好:標(biāo)準(zhǔn)庫 API 比較穩(wěn)定,方便代碼移植。

      • 功能全面的標(biāo)準(zhǔn)庫:.NET 標(biāo)準(zhǔn)庫很全,質(zhì)量非常高,為 C# 在各個(gè)應(yīng)用場景下的應(yīng)用鋪平了道路。社區(qū)里經(jīng)常聽到很多人在說 C# 庫少,只需登錄 GitHub 便可驗(yàn)證其真假,沒有幾個(gè)編程語言能和 C# 拼庫多,一個(gè)用了這么多年一直排名前幾的語言庫不可能少。尤其是再考慮庫的覆蓋廣度上就更少有能相比的了,和上面同樣的原因,有很多編程語言看似庫多,但都是重復(fù)的。

      • 性能上限足夠高:性能上限很多評測已經(jīng)給出了,最新的 .NET 8 在少數(shù)測試中甚至可以略微超過 C++。就算綜合來看,C/C++,Rust 是第一梯隊(duì)的話,C# 也是之下第二梯隊(duì)了,Go 和 Java 只能算是第三梯隊(duì)級,雖然很多人把 Java 和 C# 經(jīng)常一起對比,但是目前在性能上限來說,C# 和 Java 已經(jīng)有了斷檔級別的差距。

      • 使用下限足夠低:基本上只要學(xué)過編程就能很快上手,可以完成基本功能。在易用性來說,Golang 確實(shí)是第一梯隊(duì),C# 和 Java 算是第二梯隊(duì),而 C++ 和 Rust 的系統(tǒng)對于新手而言則難于上青天。

      03


      從 C# 的應(yīng)用場景看未來發(fā)展

      C# 作為全場景應(yīng)用開發(fā)平臺,可以快速應(yīng)用在云邊端不同場景下的硬件設(shè)備上,包括云服務(wù)器、移動(dòng)終端以及 IoT 設(shè)備等等,高效運(yùn)行并能有效協(xié)同。目前 C# 在云原生、全棧 Web 應(yīng)用、桌面應(yīng)用、移動(dòng)應(yīng)用、游戲、物聯(lián)網(wǎng) IoT、人工智能 AI 等場景的應(yīng)用已較為成熟。尤其當(dāng)前人工智能爆火,這將是未來的一大矚目方向。

      3.1 人工智能

      毋庸置疑,人工智能場景應(yīng)用是 C# 最有發(fā)展?jié)摿Φ姆较颍仡櫧?0年的算法發(fā)展,主要經(jīng)歷了3個(gè)階段:利用數(shù)學(xué)及統(tǒng)計(jì)知識,設(shè)計(jì)特征,進(jìn)行處理和判別的傳統(tǒng)算法階段,采用深度神經(jīng)網(wǎng)絡(luò),標(biāo)注數(shù)據(jù)進(jìn)行訓(xùn)練,自動(dòng)提取特征,進(jìn)行處理和判別的深度學(xué)習(xí)算法階段,基于大模型,零樣本(Zero-Shot)處理,或采用少量樣本微調(diào)的大模型應(yīng)用開發(fā)階段。前兩個(gè)階段 C# 有 ML.NET 庫可以做這方面的應(yīng)用開發(fā),大模型的 Zero-Shot 特點(diǎn)和泛用性,使得完成一件事情,不再需要經(jīng)歷收集數(shù)據(jù)、標(biāo)注、訓(xùn)練、優(yōu)化這個(gè)完整的過程,只需要理解,即可進(jìn)行應(yīng)用層開發(fā)。

      C# 語言的某些特性,包括對非結(jié)構(gòu)化數(shù)據(jù)友好,支持 Native AOT,跨平臺,Blazor 等特別適合人工智能類應(yīng)用,使得它十分適合開發(fā)人工智能產(chǎn)品。例如,在應(yīng)用層的開發(fā)上,微軟2023年3月份開源的 Semantic Kernel,在2023年12月 20日正式發(fā)布了1.0 版本。Semantic Kernel 的出現(xiàn),直接打開了 C# 通向 AGI 的大門。

      3.2 云原生

      云原生、容器技術(shù)發(fā)展帶來整體后端工業(yè)化、生態(tài)的進(jìn)步,我們也可以基于 k8s 本身服務(wù)構(gòu)建分布式架構(gòu),共享所有語言的中間件。比如:你可以基于 Dapr 使用任何語言的任何中間件,C# 正好是 Dapr 支持的第一語言。

      .NET 8 重塑了我們構(gòu)建可按需擴(kuò)展的智能、云原生應(yīng)用程序和高流量服務(wù)的方式。無論我們是部署到 Linux 還是 Windows,使用容器還是我們選擇的云應(yīng)用程序模型,.NET 8 都可以讓我們更輕松地構(gòu)建這些應(yīng)用程序。它包括一組經(jīng)過驗(yàn)證的庫,目前 Microsoft 的許多大規(guī)模服務(wù)都在使用這些庫,可以幫助我們應(yīng)對可觀察性、彈性、可擴(kuò)展性、可管理性等方面的基本挑戰(zhàn)。

      .NET 8 支持將 .NET 應(yīng)用程序編譯為本機(jī)代碼,使用更少的內(nèi)存并立即啟動(dòng),無需等待 JIT(即時(shí))編譯器在運(yùn)行時(shí)編譯代碼,也無需部署 JIT 編譯器和 IL 代碼。AOT 應(yīng)用程序只部署應(yīng)用程序所需的代碼。我們的應(yīng)用程序現(xiàn)在可以在無法使用 JIT 編譯器的受限環(huán)境中運(yùn)行。

      3.3 游戲

      值得一提的是,C# 在游戲開發(fā)領(lǐng)域口碑也非常不錯(cuò),具體主要在學(xué)習(xí)上手、招聘人才、編程規(guī)范、運(yùn)行性能方面都表現(xiàn)十分平衡,沒有明顯缺陷。游戲開發(fā)人員使用 Unity 構(gòu)建游戲,典型代表便是騰訊的國民游戲王者榮耀,它主要使用 Unity 打造,已經(jīng)擁有超過上億的活躍用戶。C# 與 Unity 引擎無縫集成,此外,還有一些新興的游戲引擎也采用了 C# 語言,例如開源 godot 引擎。

      除游戲前端,C# 和 .NET 技術(shù)在游戲后端(游戲服務(wù)器)也獲得了越來越廣泛的應(yīng)用,C# 的服務(wù)器可以無障礙在 Linux 上運(yùn)行。

      3.4 全棧 Web

      .NET 8 中的 Blazor 可以同時(shí)使用服務(wù)器和客戶端來處理我們的所有 Web UI 需求。它通過專注于優(yōu)化頁面加載時(shí)間、可擴(kuò)展性和提升用戶體驗(yàn)的多項(xiàng)新增強(qiáng)功能,開發(fā)人員現(xiàn)在可以在同一應(yīng)用程序中使用 Blazor Server 和 Blazor WebAssembly,在運(yùn)行時(shí)自動(dòng)將用戶從服務(wù)器轉(zhuǎn)移到客戶端。兩者對比之下,顯然 .NET 代碼在 WebAssembly 上的運(yùn)行速度更快,這主要?dú)w功于新的基于“Jiterpreter”的運(yùn)行時(shí)和新的內(nèi)置組件。

      總之,Blazor 填補(bǔ)了欠缺的一環(huán),C# 開發(fā)人員可以直接在用戶瀏覽器中共享代碼和業(yè)務(wù)邏輯,對于 C# 開發(fā)人員來說,這無疑是一項(xiàng)十分強(qiáng)大的功能,有效提升我們的工作效率。

      3.5 桌面應(yīng)用

      其實(shí),C# 在桌面開發(fā)框架上的應(yīng)用也是一大亮點(diǎn)。在 .NET 平臺上傳統(tǒng)的 Windows 桌面開發(fā)框架WPF 和 Winforms 之外,還有很多跨平臺的開源框架,比如 Avalonia UI、UNO Platform。 特別Avalonia UI 是一個(gè)基于 .NET  和 XAML 的偏桌面端的跨平臺(WINDOWS、LINUX、MAC)UI 開發(fā)框架,不存在某個(gè)平臺用 WINUI,某個(gè)平臺用原生,導(dǎo)致不同平臺渲染會(huì)出現(xiàn)差別的問題發(fā)生,所有平臺都使用 SkiaSharp 來渲染。

      特別是在國內(nèi),在 openKylin 社區(qū)成立了 Avalonia SIG,推進(jìn) Avalonia UI 對 openKylin 生態(tài)的支持,及 Avalonia UI 的相關(guān)生態(tài)建設(shè)。隨著國內(nèi)的 Linux 桌面向工業(yè)、醫(yī)療等傳統(tǒng)行業(yè)滲透,Avalonia UI 在這個(gè)市場上有著充分的競爭力,有越來越多的用戶從傳統(tǒng)的 QT 轉(zhuǎn)移到開源免費(fèi)的 Avalonia UI。

      除了 Avalonia UI 之外,還有 Blazor 在客戶端應(yīng)用上表現(xiàn)同樣出色。從 .NET7 版本開始支持的 Blazor Hybird,使用 Blazor Hybrid 將桌面和移動(dòng)本機(jī)客戶端框架與 .NET 和 Blazor 結(jié)合使用。在 Blazor Hybrid 應(yīng)用中,Razor 組件在設(shè)備上本機(jī)運(yùn)行。組件通過本地互操作通道呈現(xiàn)到嵌入式 Web View 控件。組件不在瀏覽器中運(yùn)行,并且不涉及 WebAssembly。Razor 組件可快速加載和執(zhí)行代碼,組件可通過 .NET 平臺完全訪問設(shè)備的本機(jī)功能。

      3.6 移動(dòng)應(yīng)用

      .NET 多平臺應(yīng)用程序 UI (.NET MAUI) 是一個(gè)跨平臺框架,用于使用 C# 和 XAML 創(chuàng)建本機(jī)移動(dòng)和桌面應(yīng)用程序, 使用 .NET MAUI,可以開發(fā)可在 Android、iOS、macOS 上運(yùn)行的應(yīng)用,Windows 以及從單個(gè)共享代碼庫運(yùn)行的應(yīng)用。.NET MAUI 包含 BlazorWebView 控件,該控件運(yùn)行將 Razor 組件呈現(xiàn)到嵌入式 Web View 中。通過結(jié)合使用 .NET MAUI 和 Blazor,我們可以跨移動(dòng)設(shè)備、桌面設(shè)備和 Web 重復(fù)使用一組 Web UI 組件。

      3.7 物聯(lián)網(wǎng) IoT

      除桌面和移動(dòng)應(yīng)用外,C# 在物聯(lián)網(wǎng) IoT 的應(yīng)用在當(dāng)前也較為普遍。.NET 可在各種平臺和體系結(jié)構(gòu)上運(yùn)行。它支持 Raspberry Pi 和 Hummingboard 等常見物聯(lián)網(wǎng) (IoT) 插件板。IoT 應(yīng)用通常與專用的硬件(例如傳感器、模數(shù)轉(zhuǎn)換器和 LCD 設(shè)備)交互。

      在網(wǎng)絡(luò)化、標(biāo)準(zhǔn)化或網(wǎng)絡(luò)安全方面,對工業(yè)網(wǎng)絡(luò)的要求正以非凡的速度增長。在這些問題重重的領(lǐng)域,基于以太網(wǎng)的 OPC UA(Open Platform Communications – Unified Architecture,開放平臺通信 - 統(tǒng)一架構(gòu))通信標(biāo)準(zhǔn)正在快速發(fā)展,OPC 基金會(huì)出品的 OPC UA 的標(biāo)準(zhǔn)庫 UA-.NETStandard 就是使用 C# 實(shí)現(xiàn),允許非會(huì)員使用 OPC UA 的試用規(guī)范、原型或研究項(xiàng)目。

      其實(shí),物聯(lián)網(wǎng)的后端系統(tǒng)使用 .NET 和 C# 也獲得了越來越廣泛的應(yīng)用,構(gòu)建的服務(wù)后端系統(tǒng)可以無障礙運(yùn)行在 Linux 上。

      04


      結(jié)語

      在我看來,客觀實(shí)際并不是一成不變的,而是不斷向前發(fā)展變化的。C# 在全球使用人數(shù)歷來排在 Top5,但很多人卻認(rèn)為它在國內(nèi)的使用場景似乎比較稀缺,主要是因?yàn)榇蟛糠秩艘琅f用老眼光來看問題,而不是以發(fā)展、變化的觀念來看問題。最新的 C# 12 是一門既有 Python 的開發(fā)效率,又有 C/C++/Rust 性能的編程語言。

      在 Linux 桌面市場上,以 C# 的 AvaloniaUI 補(bǔ)充 Window Forms 和 WPF 的跨平臺需求,逐步成為 QT 的有力競爭者。在 GenAI 加持的人工智能場景下,以 Semantic kernel 項(xiàng)目驅(qū)動(dòng)的 新的開發(fā)范式在2024年會(huì)有更多的采用者。

      posted @ 2024-01-09 21:22  張善友  閱讀(8201)  評論(14)    收藏  舉報(bào)
      主站蜘蛛池模板: 天天看片视频免费观看| 日本无产久久99精品久久| 蜜桃av无码免费看永久| 国产普通话刺激视频在线播放| 成人国产精品日本在线观看| 午夜精品久久久久久久爽 | 国产一区二区黄色激情片| 精品日本免费一区二区三区| 在线成人国产天堂精品av| 亚洲综合无码日韩国产加勒比 | 国产精品一码二码三码| 91青青草视频在线观看| 99视频在线精品国自产拍 | 榆中县| 无遮挡午夜男女xx00动态| 成人无码午夜在线观看| 日韩有码精品中文字幕| 少妇无套内谢免费视频| 国产一区二区在线影院| 国产成人无码免费视频麻豆| 日韩卡一卡2卡3卡4卡| 国产一区二区三区免费观看| 亚洲欧美日韩综合一区在线| 大肉大捧一进一出视频| 国产盗摄视频一区二区三区| 亚洲av永久无码精品水牛影视| 日韩激情一区二区三区| 国产99视频精品免费视频36| 一区二区三区激情都市| av中文字幕国产精品| 日韩人妻少妇一区二区三区| 国产老头多毛Gay老年男| 无码中文字幕热热久久| 亚洲国产精品日韩av专区| 亚洲久悠悠色悠在线播放| 九九热在线这里只有精品| 色又黄又爽18禁免费视频| 国产精品妇女一区二区三区| 国产精品日韩中文字幕| 精品国产AV最大网站| 日本无人区一区二区三区|