編程語言主要有四種類型
聲明式編程:專注於」做什麼」而不是」如何去做」。在更高層面寫代碼,更關心的是目標,而不是底層演算法實現的過程。
ex: css, 正則表達式,sql 語句,html, xml…
命令式編程(過程式編程) : 專注於」如何去做」,這樣不管」做什麼」,都會按照你的命令去做。解決某一問題的具體演算法實現。
函數式編程:把運算過程盡量寫成一系列嵌套的函數調用。
函數式編程強調沒有」副作用」,意味著函數要保持獨立,所有功能就是返回一個新的值,沒有其他行為,尤其是不得修改外部變數的值。
所謂」副作用」(side effect),指的是函數內部與外部互動(最典型的情況,就是修改全局變數的值),產生運算以外的其他結果。
『貳』 Scala這個有知道的嗎,怎麼樣啊
Scala是一門多範式語言,一般常用的範式有:命令式 和 函數式,由於Scala是一門多範式語言,所以通俗來說我們可以說Scala是一門命令式編程語言同時也是函數式編程語言。
命令式:命令式是植根於馮·諾依曼體系的,一個命令式程序就是一個馮·諾依曼機的指令序列,給機器提供一條又一條的命令序列讓其原封不動的執行。通俗來說就是按照指令順序一步一步執行。
函數式:又稱泛函編程,它將計算機的計算視為數據中的函數計算。函數式編程最重要的基礎是λ(lambda)演算,λ演算對函數式編程語言有著巨大的影響。典型的函數式語言包括Erlang和Lisp等。
為什麼要用函數式:
目前來說CPU的性能發展大體上是在同等面積上集成更多的晶體管等集成電路,隨著納米技術的不斷提高,CPU能夠集成的計算單元也越來越多,但終歸是有上限的。所以在之後,單核的發展逐漸走向了多核的發展,以多核來達到性能的提升。
目前計算機的CPU基本上都是多核CPU,在使用命令式編程的時候就設涉及到多線程之間的狀態共享,需要鎖機制實現並發的控制,而鎖機制雖然保證了安全性,但是卻對性能來說是一個阻礙。
而函數式編程不會再多個線程之間共享狀態,不需要用鎖機制,可以更好的並行處理,充分利用多核CPU的並行處理能力。
如,電信行業多數使用Erlang來進行開發,就是看中了函數式編程的並行處理能力。
Scala的特點
Scala是面向對象的:Scala是一個純面向對象語言,在某種意義上來講所有數值都是對象。對象的類型和行為是由class和trait來描述的。Class的抽象可由子類化和一種靈活的基於mixin的組合機制(它可作為多重繼承的簡單替代方案)來擴展。
Scala是函數式的: Scala還是一個函數式語言,在某種意義上來講所有函數都是數值。Scala為定義匿名函數提供了一種輕量級的語法,它支持高階(higher- order)函數、允許函數嵌套、支持局部套用(currying)。Scala的case類及其內置支持的模式匹配模型代數類型在許多函數式編程語言中 都被使用。
Scala是靜態類型的:Scala配備了一套富有表現力的類型系統,該抽象概念以一種安全的和一致的方式被使用。
Scala是可擴展的:Scala的設計承認了實踐事實,領域特定應用開發通常需要領域特定語言擴展。Scala提供了一個獨特的語言組合機制,這可以更加容易地以類庫的形式增加新的語言結構:兩者結合使用可方便地定義新語句,無需擴展語法,也無需使用類似宏的元編程工具。
任何方式可以被用作中綴(infix)或後綴(postfix)操作符
閉包按照所期望的類型(目標類型)自動地被構造
Scala可與java和.NET進行互操作:Scala 設計時就考慮了與流行編程環境良好交互,如Java 2運行時環境(JRE)和 .NET框架(CLR)。特別是與主流面向對象語言,如Java和C#盡量無縫交互。Scala有像Java和C#一樣的編譯模型(獨立編譯,動態裝載 類),允許訪問成千上萬的高質量類庫。
『叄』 程序設計語言從程序設計方法來分可分為什麼
程序設計語言分為:
1、命令式語言;2、函數式語言,基於數學函數概念的值映射的λ運算元可計算模型;3、邏輯式語言,基於一組已知規則的形式邏輯系統;4、面向對象語言。
程序設計語言分為:
1、命令式語言。
這種語言的語義基礎是模擬「數據存儲/數據操作」的圖靈機可計算模型,十分符合現代計算機體系結構的自然實現方式。
其中產生操作的主要途徑是依賴語句或命令產生的副作用。現代流行的大多數語言都是這一類型,比如Fortran、Pascal、C++obol、C、C++、Basic、Ada、Java、C#等,各種腳本語言也被看作是此種類型。
2、函數式語言。
這種語言的語義基礎是基於數學函數概念的值映射的λ運算元可計算模型。這種語言非常適合於進行人工智慧等工作的計算。典型的函數式語言如Lisp、Haskell、ML、Scheme、F#等。
3、邏輯式語言。
這種語言的語義基礎是基於一組已知規則的形式邏輯系統。這種語言主要用在專家系統的實現中。最著名的邏輯式語言是Prolog。
4、面向對象語言。
現代語言中的大多數都提供面向對象的支持,但有些語言是直接建立在面向對象基本模型上的,語言的語法形式的語義就是基本對象操作。主要的純面向對象語言是Smalltalk。
雖然各種語言屬於不同的類型,但它們各自都不同程度地對其他類型的運算模式有所支持。
『肆』 函數式編程和命令式編程之間的區別
C語言是面向過程的編程,它的最重要特點是函數,通過主函數來調用一個個子函數。程序運行的順序都是程序員決定好了的。它是我學的第一種程序語言。 C++是面向對象的編程,類是它的主要特點,程序執行過程中,先由主函數進入,定義一些類,根據需
『伍』 python是一種什麼類型的編程語言
Python是一門跨平台、開源、免費的解釋型高級動態編程語言。
除了解釋執行,Python還支持偽編譯將源代碼轉換為位元組碼來優化程序提高運行速度和對源代碼進行保密,並且支持使用py2exe、pyinstaller、cx_Freeze或其他類似工具將Python程序及其所有依賴庫打包為擴展程序名exe的可執行程序,從而可以脫離Python解釋器環境和相關依賴庫而在Windows平台上獨立運行。
Python支持命令式編程、函數式編程、完全支持面向對象程序設計,語法簡潔清晰,並且擁有大量的幾乎支持所有領域應用開發的成熟擴展庫;也有人喜歡把Python稱為"膠水語言」,因為它可以把多種不同語言編寫的程序融合到一起實現無縫拼接,更好得發揮不同語言和工具的優勢,滿足不同應用領域的需求。
語言特點
簡單:Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程序就感覺像是在讀英語一樣。它使你能夠專注於解決問題而不是去搞明白語言本身。
易學:Python極其容易上手,因為Python有極其簡單的說明文檔。
易讀、易維護:風格清晰劃一、強制縮進。
速度快:Python的底層是用C語言寫的,很多標准庫和第三方庫也都是用C寫的,運行速度非常快。
免費、開源:Python是FLOSS(自由/開放源碼軟體)之一。使用者可以自由地發布這個軟體的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟體中。FLOSS是基於一個團體分享知識的概念。
『陸』 java支持的編程範式
Java編程範式
1.命令式編程
核心內容就是:「用語句更改程序的狀態」
大多數流行的編程語言都或多或少基於命令式編程發展而來,命令式語言最典型的實例就是C語言
2.面向對象編程
面向對象編程經常與命令式編程聯系在一起,在實踐當中,兩者是可以共存的。Java就是這種協作的生動證明
面向對象基於四個基本原則:封裝、繼承、多態、抽象
3.聲明式編程
與命令式編程相反,聲明式編程它指定程序應該做什麼,而不具體說明怎麼做。
純粹的聲明式語言包括資料庫查詢語言(如SQL和Xpath)以及正則表達式。
與命令式編程語言相比,聲明式編程語言更加抽象,它們並不模擬硬體結構,因此不會改變程序狀態,而是將它們轉換為新狀態,並且更接近數學邏輯
通常,非命令是的編程範式都被認為屬於聲明式類別。
4.函數式編程
函數式編程是聲明式編程的子範式,與命令式編程相反,函數式變成不會改變程序的內部狀態。
在函數式編程術語中,函數類似於數學函數,函數的輸出僅依賴於其參數,而不管程序的狀態如何,完全不受函數式是何時執行的影響
函數式語言受歡迎的原因之一是它們可以輕松的在並行環境中運行,這與多線程不太一樣,函數式語言支持並行的關鍵在於它們的基本原理:函數僅依賴與輸入參數而不依賴於程序的狀態。它們可以在任何地方運行,然後將多個並行執行的結果連接起來並進一步使用
『柒』 java函數式編程是炫技編程嗎
函數式編程(Functional Programming)是一種編程風格,它是相對於指令式編程風格而言的,常見的面向對象編程就是指令式鬧哪蔽編程風格。
指令式編程是面向計算機硬體的抽象,有變數(對應著存儲單元),賦值語句(獲取、存儲指令),緩李表達式(內存引用和算術運算)和控制語句(跳轉語句)。
而函數式編程是面向數學的抽象,將計算描述為一種表達式求值。這里的函數實際就是數學中的函數,即自變數到因變數的映射。也就是說,一個函數的值僅決定於函數參數的值,不依賴其他狀態。
函數式編程是一種抽象程度很高的編程範式,純粹的函數式編程語言編寫的函數沒有變數,因此,任意一個函數,只要輸入是確定的,輸出就是確定的,這種純函數我們稱之為沒有液州副作用。而允許使用變數的程序設計語言,由於函數內部的變數狀態不確定,同樣的輸入,可能得到不同的輸出,因此,這種函數是有副作用的。
在函數式語言當中,函數作為一等公民,可以在任何地方定義,在函數內或函數外,可以作為函數的參數或返回值,可以對函數進行組合,也可以將函數賦值給變數。嚴格意義上的函數式編程意味著不適用可變的變數,賦值,循環和其他命令式控制結構進行編程。
函數式編程風格帶來的好處是:
函數式編程使用不可變對象作為變數,不會修改變數的值,而是返回一個新的值,如此這樣,更容易理清頭緒,使得單元測試和調試更加容易;
可以很自由地傳遞不可變對象,但對於可變對象來說,傳遞給其他代碼之前,需要先建造一個以防萬一的副本;
一旦不可變對象完成構造以後,就不會有線程因為並發訪問而破壞對象內部狀態,因為根本沒有線程可以改變不可變對象的狀態;
不可變對象讓哈希表鍵值更安全,所以哈希表鍵要求必須是不可變對象,否則使用可變對象,如果對象狀態發生變化,那麼在哈希表中就找不到這個對象了;
具體到編程語言,Scala(靜態語言)和Python(動態語言)都能比較的支持函數式編程風格,但是它們都不是純函數式的,也就是說它們同時支持指令式風格和函數式風格。而Java基本是指令式風格,但自從Java8引入lambda表達式以後也開始部分支持函數式風格。函數式編程最典型的是諸如map, flatMap, rece, filter等函數,它們的特點是支持某個函數作為上面這些函數的參數
『捌』 什麼是編程範式
編程範式Programming paradigm是指計算機中編程的典範模式或方法。
常見的編程範式有:函數式編程、程序編程、面向對象編程、指令式編程等。
不同的編程語言也會提倡不同的「編程范型」。一些語言是專門為某個特定的范型設計的,如Smalltalk和Java支持面向對象編程。而Haskell和Scheme則支持函數式編程。現代編程語言的發展趨勢是支持多種范型,如 C#、Java 8+、Kotlin、 Scala、ES6+ 等等。
(8)命令式編程函數式編程擴展閱讀
編程範式中函數式編程的優點及應用情況:
1、易於重構、調試、測試。
2、整體應用:數學計算、人工智慧。
3、局部應用:已遍地開花。