1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          d語言(D語言基礎知識有哪些)

          來源:互聯網轉載 時間:2024-05-10 07:34:01

          引言

          D 語言是一門語法相當優雅的編譯型語言,自 1999 年發布至今已發展了 20 年,它既擁有 Java 那樣強大的表現力,又具有 C++ 相當的性能,本來是一門未來相當明朗的語言,但是當年因為 2.x 版本破壞性升級導致社區大量核心開發者將其放棄。

          2010 年,伴隨著 Andrei Alexandrescu 新書《The D Programming Language》的出版,D 語言又變得活躍起來,D 語言 2.0 的特性變得穩定,運行庫與標準庫的分離,解決了 D 語言 1.0 時期標準庫之爭的問題。

          2011 ,D 語言的開發遷移到了 Github,在有了更好的代碼管理和 bug 跟蹤方式之后,參與到 D 語言編譯器、運行庫和標準庫開發的人員也有了明顯的增加。次年,D 語言 1.0 版本停止更新,開發者全力投入到 2.0 的開發。

          2014 ,D 語言編譯器前端代碼的許可協議變更為更加寬松的 Boost 許可。在 2017 年,編譯器所有代碼最終都使用了 Boost 許可。在解決編譯器源碼許可問題之后,D 語言在開源社區中變得更加開放,并順利合并進入了 GCC 9.x。

          直到 2015 ,D 語言社區進一步恢復活力,基于包管理的構建方式開始成熟,大量的開發庫開始涌現并應用到實際項目中。目前,已注冊項目庫達 1 千 6 百多個。

          重新燃起希望的 D 語言在版本發布的規劃上非常穩健,直至今日來說每兩個月都可以保證一個大版本的發布。平均每個版本的開發者數量都有超過 50 個核心貢獻者,最近的 2.087.0 更是達到了 62 位核心開發者的貢獻。

          編程語言的戰爭異常慘烈,本文希望通過介紹,讓開發者重新來了解一下 D 語言,認識到 D 語言其實是一門能力強大的語言,并且它可以用于不同的場景,生態也在不斷發展完善中。

          第一部分:D 語言主要特點

          D 語言是在吸取 C++ 遇到的各種教訓基礎上設計出來的,擁有與之類似的編程風格,許多概念與 C 或 C++ 都是相通的。不過,D 語言也有自己的一些特點,如支持閉包、匿名函數、編譯時函數執行、支持垃圾回收等。具體來講,D 語言擁有以下幾個主要特點:

          面向對象編程

          D 語言允許定義類和接口。像 Java 一樣,D 語言的繼承模型是單類繼承和多接口繼承。所有的類都有一個根類 Object。D 語言的類和接口都是引用類型,而結構是值類型,且不允許繼承。

          函數式編程

          D 語言像 C++ 一樣,允許在類或結構外單獨定義函數。它還提供了各種不可變數據類型、匿名函數和閉包、UFCS(統一函數調用語法)等特性來更好地支持函數式編程。

          泛型編程

          D 語言允許定義模型類型,也支持直接定義模板類和模板函數。模板允許嵌套定義,模板方法甚至允許遞歸調用。通過模板約束可以實現模板類型重載。模板參數支持不定個數類型。除此以外,模板參數類型還支持自動推導。

          元編程

          D 語言里的純函數不會對全局變量產生任何影響,因此可以在編譯時直接調用。借助 static if、static foreach、mixin 等語句,可以編寫在編譯時執行的代碼,動態生成代碼,滿足快速定制應用功能的需求。

          安全內存

          默認支持基于垃圾回收的內存管理方式,從而讓編程變得更簡單,內存變得安全,程序變得更穩定。除此之外,也可以根據需要對關鍵的內存資源選擇手動管理方式。借助 scope 語句,可以很好地控制內存資源申請和釋放點。D 語言內部有一套核心的類型定義和實現,它是 D 語言的一個子集,也被稱作 SafeD,用于保護內存的安全。

          模塊化編程

          D 語言的每一個源文件都被定義為一個模塊(module),源文件之間的依賴即體現了模塊之間的依賴。同一目錄下的多個模塊可以組成一個包(package)?;谀K的代碼讓項目的邏輯變得更加清晰,也為項目的快速構建和編譯提供了支持。

          其他語言交互

          D語言的ABI與C語言完全兼容,因此它也具有很好的與其他語言交互的能力,如與 C、C++ 和 Objective-C 等語言進行交互編程。D 語言甚至支持直接嵌入匯編語言,部分性能關鍵的代碼可以直接使用匯編語言來實現。D 語言的 BetterC 特性是 D 語言的一個子集,能完全去除 GC 依賴,并以更好 C 語言的方式來代替 C 語言編程,它能勝任 C 語言做的絕大部分工作。在 Windows 平臺下,可以使用 COM 接口實現與其他語言的交互。

          基于包的應用構建

          這個不屬于 D 語言本身特性,但是在 D 語言的開發生態里,這是一種很非常重要和便捷的 D 語言應用構建方式。dub 是 D 語言的應用構建工具,它可以很好地管理應用包之間的依賴關系,快速地構建出 D 語言應用。

          除了上述特點,D 語言還提供了許多其他特性,如內建關聯數組、單元測試、內聯匯編、內嵌文檔等,這些特性讓 D 語言成為了一門功能強大的語言。

          第二部分:與其它語言的簡要對比

          D 語言與 Java 相比

          眾所周知 Java 對工業化架構的設計非常棒,遠超越 C++、Golang 等語言,能與 Java 相提并論的只有 C#,在研究中我們發現 D 同樣具備工業化的特性,而且不需要那么龐雜的虛擬機開發環境,D 的性能比起 Java 來說好的非常明顯,而且整合 C、C++ 庫的時候也非常方便,而 Java 想整合 C、C++ 就需要非常麻煩的 jni 對去接。畢竟 D 語言是名副其實的系統級開發語言,D 語言在面向對象方面并不像 Java 那樣強制每個文件都是對象,而更像 C++ 那樣擁有一個 main() 函數作為程序入口。

          示例代碼

          importstd.stdio;voidmain(){writeln("Helloworld!");}

          D 語言與 C++ 相比

          說到性能,C++ 一直占據服務端高性能的首選,但是 D 的性能與 C++ 相比幾乎打成平手,但效率可以 3~5 倍于 C++。當然 D 與 C 語言各種庫整合同樣方便,因為 D 語言是二進制與 C、C++ 兼容的,語法更像是 C++ 的超級升級版,D 在對 hashMap 操作時性能比 C++ 還要高,而且只要是掌握 C++ 的人可以沒有任何門檻地使用 D 語言。

          示例代碼

          importstd.stdio;voidmain(){foreach(i;1..10){writeln(i);}}

          D 語言與 PHP 相比

          PHP 是服務端腳本語言占有率最高的語言,PHP 的優勢就是簡單,無需引入什么包就可以使用語言本身的所有函數,但是也就是這樣 PHP 的性能一直沒有明顯改進,雖然說 PHP 7.x 的出現讓 PHP 的性能提升了 2.x 倍,但是那只是和非常慢的 PHP 5.x 相比而已,與編譯型語言相比還是相差太多。PHP 有非常明顯的短板,比如不支持多線程、長連接不友好、弱類型、跨語言 RPC 協議支持不穩定、部署需要 PHP 運行環境等,而 D 語言具備 C++ 可實現的所有功能,包括內嵌匯編,開發效率上來講與 PHP 相比只是多了個強類型的概念,而 D 語言標準庫也提供 to 方法讓你非常方便地進行各種類型的轉換。

          示例代碼

          importstd.stdio:writeln;importstd.conv:to;&nbsp;voidmain(){inti=10000;strings="Isstring";s~=i.to!string;//PHP使用點連接兩個字符串,而D語言使用波浪線連接兩個字符串writeln(s);//輸出結果Isstring10000}

          D 語言可替代 C 語言

          前陣子有一篇文章比較火,有一位 i3 核心開發者在文章中說到,D 才是真正替代 C 的首選語言,他認為 D 二進制與 C、C++ 完全兼容所以可直接使用這兩個語言的二進制庫,D 甚至可以用 dpp 項目直接 #include 語法引入 *.h 文件,作者同時也說到為什么 C 的替代者不是 Rust 和 Golang,有興趣的同學可以自行了解原文《D as a C Replacement》。

          gcc 整合 D 語言編譯支持

          這是一個非常大的進步,在近期發布的 gcc 9.1 大版本中整合了 DLang 全新的編譯器前端也就是 gdc,現在整個社區有更多開發者對 D 項目進行推進,也有更多人在使用 D 完成之前 C/C++ 的工作。

          第三部分:D 語言主要應用

          作為一門支持 GC 的系統語言,D 語言已被許多公司采納和應用,其中不乏像 Facebook、eBay 這樣的大公司。D 的應用涉及了游戲、Web 應用、GUI 應用、操作系統、編譯器、嵌入式、科學計算與教育等多個領域。

          游戲開發

          Remedy 公司已成功地用 D 語言將一款 3A 游戲 Quantum Break 移植到了 XBox One 和 Windows 10 平臺。另外,有純 D 語言實現的 3D 游戲引擎 Dash 和 D 語言游戲開發工具庫 gfm。

          Web 框架

          編程語言在 Web 服務端框架非常重要,有好用的框架可以讓整個語言充滿活力,就像 Java 有一個 Spring Framework 框架,PHP 有一個 laravel 框架,Python 擁有一個 Django,而 Ruby 擁有 Rails,所以既然是構建服務端應用 DLang 也同樣擁有一個代表性的框架 Hunt Framework。

          數據庫操作

          數據庫操作是大部分應用項目都不可或缺的一個基本操作,操作方式主要有兩種:編寫 SQL 腳本和 ORM。

          直接操作數據庫的 D 語言開庫有 ddbc / (http://code.dlang.org/packages/ddbc)hunt-database 等,支持的數據庫包括 MySQL、PostgreSQL 和 SQLite 等。其中,新版本的 hunt-database 的底層驅動庫已從綁定 C 語言的方式升級為了直接使用 D 語言實現,減少了對第三方庫的依賴。

          采用 ORM 方式的 D 語言開庫有 hibernated / hunt-entity 等。其中,hunt-entity 借鑒了 Java JPA 和 spring-data-jpa 的概念,工業化程度高,操作合理并且易于維護。

          微服務相關

          hunt-service 是基于 gRPC 協議的分布式 RPC 服務器與客戶端庫,很容易使用,也非常方便與 hunt-framework 整合構建微服務架構。

          neton 是基于 raft 算法的分布式服務發現注冊應用服務。

          GUI 應用

          其實 D 語言的推出比較早,所以 GTK 的整合非常完整,眾所周知 gtk 官方的 vala 語言也大量借鑒了 D 的語言設計,所以 gtkd 能夠非常方便的構建客戶端應用,官方也有開發者推出了新的教程站點非常棒:gtkDcoding | Simple examples of how to use GtkD to build GUI applications(https://gtkdcoding.com/)

          此外,純 D 語言實現的跨平臺 GUI 庫 dlangui 也有不俗的表現,有一個 DLangIDE 就是基于它實現的。更多 GUI 庫可以參考這里。

          系統應用

          在編譯器方面,DMD 前端已實現自舉。在操作系統方面,有 PowerNex(https://github.com/xomboverlord/xomb/tree/unborn) 與 Trinix 等系統嘗試。編譯器 LDC 甚至允許在更多的系統平臺下進行應用開發,如支持基于 ARM 和 MIPS 架構的嵌入式系統、Android 系統等。

          科學計算

          現在使用 D 語言可以方便的進行科學計算,mir 是其中的佼佼者,它對多維數組計算提供了優秀的支持,性能超越了許多數值計算庫,達到商業水平。

          以上就是 D語言基礎知識有哪些,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注本站行業資訊頻道。

          標簽:d語言-

          c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...

          2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...

          :喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...

          (資料圖片)隨著社會越來越發達,大家都選擇在網絡上汲取相關知識內容,比如請問北京哪里有室內水上樂園,為了更好的解答大家的問題,小編也是翻閱整理了相應內容,下面就一起來看一下吧!1、水立方嬉水樂園,地址:朝陽區北四環中路奧林匹克公園內。2、摩銳水世界,地址:朝陽區東葦路金盞郁金香花園。3、藍月爾水世界,地址:北京市豐臺區宋家莊路撲滿山對面首開福茂。4、英達海灘水世界,地址:北京市昌平區阿牛路富順六環...

          股市中的博弈之道是什么?股市中的博弈之道,在股市實戰過程中勝者憑借自身在信息方面以及資金技術的優勢,根據對場外跟風資金以及股市內外環境的變化操縱一支股票進行心理引導,使博弈的對手產生錯誤的分析判斷,從而達到獲取暴利的目的。大機構操作善于引導大眾,投資投機的導向形成短期投機,長期投資等片面錯誤的操作思路。在股市實戰中根據各種技術信息正確判斷主流資金的具體交易意圖,是投資者在股市中獲取避險的一項重要而...

          美國眾議院議長佩洛西無視中國行政當局的嚴正抗議,于2022年8月3日一意孤行訪問省,不僅違背了美國政府“堅持一個中國”的承諾,也肆意挑釁中國的政治底線。佩洛西對省的訪問導致空前緊張,中國大陸省的決心更加堅定。最近,英國媒體甚至預測,中國大陸最早將于2023年派兵50萬省。首先,祖國統一是人心所向,大勢所趨。中國大陸有決心也有能力實現這一目標。然而,中國自古以來就是一個熱愛和平的國家。我們奉行以德服...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>