首頁 常見問題 多範式的程式語言有哪些

多範式的程式語言有哪些

Dec 07, 2020 pm 02:25 PM
程式設計語言 多重範式

多範式的程式語言有:1、物件導向編程,提升軟體的重用性、彈性與擴充性;2、函數式編程,以數學函數為程式語言建模的核心的程式範式;3、泛型編程,提供了更高層級的抽象。

多範式的程式語言有哪些

本文操作環境:Windows7系統,Dell G3電腦。

多重範式的程式語言有:

概要:

本文主要講述了三種程式設計範式-物件導向程式設計、函數式程式設計、泛型程式設計的概念

程式設計範式

程式設計範式是程式語言背後的想法。代表了程式設計者認為程式應該如何被建構和執行的看法。常見的程式設計範式有:過程式,面向對象,函數式,泛型程式設計等。

有些程式語言是專門為某種特定範式設計的,例如C語言是過程式設計語言;Smalltalk和Java是較純粹的物件導向程式語言;Haskell是純粹的函數式程式語言。另外一些程式語言和程式設計範式的關係並不一一對應,例如Python,Scala,Groovy都支援物件導向和某種程度上的函數式程式設計。 C 是多範式程式語言成功的典範。 C 支援和C語言一樣的過程式程式設計範式,同時也支援物件導向程式設計範式,STL(Standard Template Library)讓C 具有了泛型程式設計能力。支持多種範式可能是C 直到現在仍然具有強大的生命力的原因之一。

Swift是一門典型的多範式程式語言,即支援物件導向程式設計範式,也支援函數式程式設計範式,同時也支援泛型程式設計。 Swift支援多種程式設計範式是由其創造目標決定的。 Swift創造的初衷就是提供一門實用的工業語言。不同於Haskell這類出自大學和研究機構的學術性質的程式語言。蘋果推出Swift時就帶著明確的商業目的:Mac OS和iOS系統的主要程式語言Objective-C已顯老態,Swift將使得蘋果系統的開發者擁有一門更現代的程式語言,從而促進蘋果整個生態圈的良性發展。

Swift的設計和開發無不體現著「實用的工業語言」這個目標。這決定了Swift無法做極端的語言實驗,它需要在理智地面對現實的基礎上,謹慎地尋求突破。這決定了Swift需要繼承歷史遺產,照顧現在大多數程式設計師的現​​實需求,同時面向未來有所發展。

1、物件導向-繼承遺產

物件導向程式設計將物件作為程式的基本單元,將程式和資料封裝其中,以提高軟體的重用性、靈活性和擴展性。

物件導向程式設計的核心概念:

  • 多態,指由繼承而產生的相關的不同的類,其物件對同一訊息會做出不同的回應;

  • 繼承,在某種情況下,一個類別會有「子類別」。子類比原本的類別(稱為父類別)要更加具體化;

  • 封裝,物件導向程式設計隱藏了某一方法的具體執行步驟,取而代之的是透過訊息傳遞機制傳送訊息給它。

以物件建構程式的基本單元的物件導向程式語言中。多態提供了更高的抽象能力,使得我們可以設計出更通用的程式。繼承提供了一種複用程式碼的方法。封裝提供一種使用其他程式碼更為便捷安全的機制。

現在絕大部分程式設計師的工作語言仍然是物件導向程式語言。大部分流行的現代程式語言都會允許你創建物件。使用物件導向程式語言,易於建立軟體模型。因為,物件很類似乎很容易和現實世界上的所有事物和概念。但程式設計實踐表明,並不是任何東西成為物件都是一件好事情。舉一個Java中的蹩腳的例子:Java中只有物件才能作為參數傳入函數(當然還有原始型別primitive type)。所以為了將函數傳遞給另外一個函數,你需要將函數包裹在一個物件中,通常會用一個匿名類,因為這個類別不會有其他作用,只是為了讓Java的一切皆為物件的設計高興。

Java擁有純粹的物件導向概念。它從設計之初,就希望以一切皆為物件的純物件模型來為世界建模。但發展到現在,Java中加入了越來越多非物件的東西。引入了閉包,從而獲得了函數式程式設計中的一級函數;引入泛型,從而獲得了參數化的類型。這可能暗示了,這個世界是如此得豐富多彩,使用單一模式為世界建模並不會成功。

2、函數式程式設計-發展

函數式程式設計是一種以數學函數為程式語言建模的核心的程式設計範式。它將計算機運算視為數學函數計算,並且避免使用程式狀態以及可變物件。

函數式程式設計思想主要有兩點:

  • 以函數為程式語言建模的核心;

  • 避免狀態和可變性。

函數是函數式程式設計的基石。函數式程式語言的程式碼就是由一個個函數的組合而成的。寫函數式語言的過程就是設計函數。大規模程式由成千上萬的函數組成,為了有效的組合這些函數。函數式程式語言,會盡量避免狀態,避免可變物件。沒有可變的狀態,就使得函數式語言中的函數變成純函數。純函數更容易模組化,更容易理解,對於復用是友善的。

函數式程式語言也產生了一些有用的程式設計工具:

  • 一級函數,閉包;

#########################################################################################柯里化函數;############惰性求值。 ############這些在後面的章節都會提到。這些程式設計工具也越來越多地出現在其他程式語言中。 ######函數式程式語言並不年輕,它的歷史和物件導向程式設計一樣悠久。 1958年被創造出來的LISP是最古老的函數式程式語言。它比C語言年代更為久遠。但直到最近函數式程式設計思想才逐漸被重視。幾乎所有新發明的程式語言都或多或少受到了函數式程式設計思想的影響。 Python,Scala,Groovy,Swift都有一級函數,閉包。使得你可以將函數直接傳給另一個函數,函數也能夠以返回值形式被另一個函數傳回。消除狀態,提供不變性的好處越來越多被接受,Scala,Groovy,Swift都提供了方便地聲明不可變對象的方法,以支持你編寫更趨近於函數式的風格的程式碼。 ######函數程式語言有其優秀的地方,也許將來會成為一個重要的程式設計範式。但是,函數式程式語言的重要性可能更多會體現在影響其他程式語言的發展上。未來,可能很難出現一門主要以函數式程式設計範式設計的程式語言成為主流的程式語言。如同Java這樣的以單一程式設計範式(物件導向)構建,而成為主流的程式語言的機會應該不多了。而如同Haskell這樣追求純粹的函數式程式語言,更多的可能只是一個偏學術的語言實驗。 ######再重複一次上一節的提到理由,這個世界是如此得豐富多彩,使用單一模式為世界建模並不會成功。 #########物件導向與函數式程式設計#########如果,我們以語言範式為現在流行的語言分類。支援物件導向的程式語言應該會是最長的隊伍。現在大部分流行的現代程式語言都是面相物件的,它們都會允許你創建物件。但同時,你會發現比較流行的幾個程式語言,Python,Scala,甚至Java都或多或少得受到了函數式程式語言的影響。它們都引入一些函數式程式設計的概念,讓你一定程度上可以寫出具有函數式風格的程式碼。 ######在熟悉了類別物件導向程式語言之後,再接觸函數式程式語言,常常會覺得耳目一新,甚至會隱約覺得函數式語言是救世良方。那我們是否應該就此徹底轉向函數式程式語言呢?使用Haskell拯救世界。 ######物件導向程式語言在大規模實踐之後,我們確實更深刻地了解了它們的缺點(例如,難以編寫多執行緒環境下的軟體應用;繼承並不是程式碼復用的好方法)。函數式語言也確實有不少優點,有些優點恰恰就能解決物件導向語言的問題(純函數十分適應多執行緒環境,純函數天生就是模組化的,對於程式碼重複使用十分友善)。但是,函數式程式設計也許也存在某些問題。而這些問題,可能在更大規模的業界實踐之後才會被揭露出來。現在我們已經可以確信,單純以物件為世界建模是有困難的。那麼以數學模型為世界建模可能也不會好到哪裡去。可以確信的是,它們都有自己擅長的領域和環境。我們現在仍然還無法使用某種程式設計範式來解決所有問題。 ######而更大的現實是無數企業已經在物件導向程式語言上做了巨大的投資,即使現在物件導向程式設計已經暴露出一些問題,而函數式程式設計又呈現出不少能解決這些問題的優點,任何一個謹慎的人都不會,也不可能馬上拋棄物件導向編程,徹底全面地轉向函數式程式語言。 ######現實的選擇是支援物件導向程式設計的同時,提供函數式的支援。這樣,在大部分物件導向游刃有餘的地方,你仍然可以使用物件導向的方法。而在適合函數式程式設計的地方,而當你又擁有函數式程式設計的思維和能力時,你還是可以函數式的程式設計方法來改善生產力。 #########3、泛型程式設計-美好的點綴#######

泛型程式設計是另一個有趣的話題。泛型為程語言提供了更高層級的抽象,即參數化類型。換句話說,就是把一個原本特定於某個類型的演算法或類別當中的型別資訊抽象化出來。這個抽像出來的概念在C 的STL(Standard Template Library)中就是模版(Template)。 STL展示了泛型程式設計的強大之處,一出現就成為了C 的強大武器。除C 之外,C#,Java,Haskell等程式語言都引入了泛型概念。

泛型程式設計是一個稍微局部一些的概念,它只涉及如何更抽像地處理類型,即參數化類型。這並不足以支撐起一門語言的核心概念。我們不會聽到一個程式語言是純泛型程式設計的,而沒有其他程式設計範式。但正因為泛型並不會改變程式語言的核心,所以在大多數時候,它可以很好的融入其他的程式設計方式。 C ,Scala,Haskell這些風格迥異的程式語言都支援泛型。泛型程式設計提供了更高的抽象層次,這意味著更強的表達能力。這對大部分程式語言來說都是一道美味佐餐美酒。

在Swift中,泛型被廣泛使用,許多Swift標準函式庫是透過泛型程式碼建構出來的。例如Swift的陣列和字典類型都是泛型集合。這樣的例子在Swift中隨處可見。

總結

這幾篇系列文章中,將主要以Swift為例,講解多範式程式語言。系列文章分為三部分討論Swift所支援三種程式設計範式:

  • 物件導向程式設計範式

  • 函數式程式設計範式

  • 泛型程式設計

更多相關知識,請造訪常見問題欄位!

以上是多範式的程式語言有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1250
24
華為倉頡程式語言官方入門教學發布,一文看懂如何取得通用版本 SDK 華為倉頡程式語言官方入門教學發布,一文看懂如何取得通用版本 SDK Jun 25, 2024 am 08:05 AM

本站6月24日消息,在6月21日HDC2024華為開發者大會主題演講上,華為終端BG軟體部總裁龔體正式官宣了華為自研倉頡程式語言。語言歷經5年研發沉澱,現已開啟開發者預覽。華為開發者官網現已推出倉頡編程語言官方入門教程視頻,方便開發者初步上手理解。教程將帶使用者體驗倉頡、學習倉頡、應用倉頡,包括用倉頡語言估算圓周率、計算2024年各月的干支紀法、看到二叉樹在倉頡語言中的N種表達方式,以及用枚舉類型實現代數計算、用介面和擴充實現訊號系統模擬,還有用倉頡宏擴展出新語法等等。本站附教學存取位址:ht

歷經 5 年研發沉澱,華為下一代程式語言「倉頡」正式開啟預覽 歷經 5 年研發沉澱,華為下一代程式語言「倉頡」正式開啟預覽 Jun 22, 2024 am 09:54 AM

本站6月21日消息,在今日下午的HDC2024華為開發者大會上,華為終端BG軟體部總裁龔體正式官宣了華為自研倉頡編程語言,並發布了HarmonyOSNEXT倉頡語言開發者預覽版。這是華為首次公開發布倉頡程式語言。龔體表示:「2019年,倉頡程式語言計畫在華為誕生,歷經5年研發沉澱,大量研發投入,今日終於和全球開發者見面。倉頡程式語言透過現代語言特性的整合、全方位的編譯優化和運行時實現、以及開箱即用的IDE工具鏈支持,為開發者打造友好開發體驗和卓越程序性能。

華為開啟鴻蒙 HarmonyOS NEXT 倉頡程式語言開發者預覽版 Beta 招募 華為開啟鴻蒙 HarmonyOS NEXT 倉頡程式語言開發者預覽版 Beta 招募 Jun 22, 2024 am 04:07 AM

本站6月21日消息,華為自研倉頡程式語言今日正式亮相,官方宣布開啟HarmonyOSNEXT倉頡語言開發者預覽版Beta招募。本次升級為開發者預覽版嚐鮮升級,提供倉頡語言SDK、開發者指南以及相關的DevEcoStudio插件,供開發者使用倉頡語言開發、調試及運行HarmonyOSNext應用。報名週期:2024年6月21日-2024年10月21日申請要求:本次HarmonyOSNEXT倉頡語言開發者預覽版Beta招募活動,僅開放給以下開發者報名:1)已在華為開發者聯盟完成實名認證;2)完成H

天津大學、北航深度參與華為'倉頡”,推出首個基於國產程式語言的 AI 智能體程式框架'蒼穹” 天津大學、北航深度參與華為'倉頡”,推出首個基於國產程式語言的 AI 智能體程式框架'蒼穹” Jun 23, 2024 am 08:37 AM

本站6月22日消息,華為昨日向全球開發者介紹華為自研程式語言-倉頡(Cangjie)。這是倉頡程式語言的首次公開亮相。本站查詢獲悉,天津大學、北京航空航天大學深度參與了華為「倉頡」的研發。天津大學:倉頡程式語言編譯器天津大學智能與計算學部軟體工程團隊攜手華為倉頡團隊,深度參與倉頡程式語言編譯器的品質保障研究。據介紹,倉頡編譯器是與倉頡程式語言共生的基礎軟體。在倉頡程式語言的籌備階段,與之相匹配的高品質編譯器成為核心目標之一。隨著倉頡程式語言的演化,倉頡編譯器也不斷升級、改進。五年來,天津大

華為自研倉頡程式語言官網及開發文件上線,首度融入鴻蒙生態 華為自研倉頡程式語言官網及開發文件上線,首度融入鴻蒙生態 Jun 22, 2024 am 03:10 AM

本站6月21日消息,在HDC2024華為開發者大會前,華為自研倉頡程式語言正式亮相,倉頡官網現已上線。官網介紹顯示,倉頡程式語言是一款面向全場景智慧的新一代程式語言,主打「原生智慧化、天生全場景、高效能,強大安全」。融入鴻蒙生態,為開發者提供良好的程式設計體驗。本站附官網介紹如下:原生智慧化內嵌AgentDSL的程式框架,自然語言&程式語言有機融合;多Agent協同,簡化符號表達,模式自由組合,支援各類智慧應用開發。天生全場景輕量化可縮放運行時,模組化分層設計,記憶體再小也能裝得下;全場景領域擴

Microsoft Edge瀏覽器不顯示圖片怎麼辦-Microsoft Edge瀏覽器不顯示圖片的解決方法 Microsoft Edge瀏覽器不顯示圖片怎麼辦-Microsoft Edge瀏覽器不顯示圖片的解決方法 Mar 04, 2024 pm 07:43 PM

近期有很多小夥伴諮詢小編MicrosoftEdge瀏覽器不顯示圖片怎麼辦,接下來就讓我們一起學習一下MicrosoftEdge瀏覽器不顯示圖片的解決方法吧,希望可以幫助到大家。 1.先點選左下角開始,右鍵點選“Microsoftedge瀏覽器”,如下圖所示。 2、然後選擇“更多”,點擊“應用設定”,如下圖所示。 3、接著下滑找到“圖片”,如下圖。 4.最後將圖片下方的開關打開即可,如下圖所示。上面就是小編為大家帶來的MicrosoftEdge瀏覽器不顯示圖片怎麼辦的全部內容,希望對大家能夠有所幫助喔。

C++技術與其他現代程式語言的優缺點對比 C++技術與其他現代程式語言的優缺點對比 Jun 01, 2024 pm 10:15 PM

C++與其他現代程式語言的優缺點比較為:C++優勢:高效能、低階控制、豐富的函式庫生態系統。 C++劣勢:學習曲線陡峭、手動記憶體管理、可移植性受限。 Python優勢:學習曲線平滑、廣泛的函式庫支援、解譯型語言。 Java優勢:平台無關、自動記憶體管理、廣泛應用。 JavaScript優勢:前端開發必備、輕量、動態型別。

華為純血鴻蒙生態最後一環!自研倉頡程式語言將首次亮相 華為純血鴻蒙生態最後一環!自研倉頡程式語言將首次亮相 Jun 21, 2024 pm 03:23 PM

6月21日消息,今天下午,華為開發者大會2024將正式揭幕。 「純血鴻蒙」HarmonyOSNEXT自然是重中之重,按照餘承東之前透露的規劃,今天下午就可能正式宣佈公測,普通消費者也能嚐鮮「純血鴻蒙」了。據爆料,首批支援的手機為Mate60系列和Pura70系列。值得注意的是,作為“純血鴻蒙”,HarmonyOSNEXT去掉了傳統的Linux核心和AOSP安卓開源程式碼,全端自研。據新浪科技最新報道稱,華為還將補齊鴻蒙生態的最後一環,在大