函數(shù)式語言
成都創(chuàng)新互聯(lián)公司專注于青秀網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供青秀營銷型網(wǎng)站建設,青秀網(wǎng)站制作、青秀網(wǎng)頁設計、青秀網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務,打造青秀網(wǎng)絡公司原創(chuàng)品牌,更為您提供青秀網(wǎng)站排名全網(wǎng)營銷落地服務。
Elixir
Elixir 比 Erlang 更容易編寫,具有 Haskell 等語言的函數(shù)式編程概念。Elixir是基于Erlang 虛擬機的,其廣為人知的特點是運行低延時、分布式、可容錯的系統(tǒng),并成功用于Web開發(fā)與嵌入式軟件領(lǐng)域。
Elm
Elm是一種用于構(gòu)建 Web 應用程序的函數(shù)式語言。業(yè)內(nèi)一般認為,它適用于創(chuàng)建高可交互應用,例如復雜的用戶界面,開發(fā)人員可以通過 Elm 快速編寫富有表現(xiàn)力的系統(tǒng)。Elm 也以沒有運行時異常而聞名。
PureScript
PureScript是一種可編譯為 JavaScript 的純函數(shù)式編程語言。與 Haskell 最相似的是,PureScript 最適合用于開發(fā) Web 應用程序和服務器端應用程序。
PureScript 支持類型推斷,與其他語言相比,需要明顯類型注釋要少得多。
Swift
Swift是一種由蘋果公司開發(fā)的通用編譯編程語言,最早的設想是替代上一代編程語言Objective-C ,過程中結(jié)合了Objective-C、Rust、Ruby 和 Python等語言的編程思想。目前Swift用于開發(fā)蘋果自己的手機、服務器、臺式機上的應用軟件。
程序語言
Go
Go語言是由谷歌公司創(chuàng)造的類似C風格的語言。Go 比 C++ 或 Java 更簡潔,比 Ruby 或 Python 更安全。
一些缺點: 編碼要求嚴格。比如,不能混用符號和無符號整數(shù)。還有一個明顯的遺漏,Go語言沒有泛型和繼承。
但Go語言的優(yōu)勢同樣明顯,簡單且易于使用。Go語言擅長于網(wǎng)絡和多線程方面的編程。
面向?qū)ο笳Z言
DART
Dart同樣來自谷歌公司具有C語言風格。Dart可以輕松編寫JavaScript、Java for Android、本地機器代碼或獨立的 Dart 虛擬機。它還可以運行后端代碼。
Dart 非常適合使用事件驅(qū)動代碼構(gòu)建用戶界面。根據(jù)Dart 團隊成員的說法,Dart的優(yōu)勢:可選的靜態(tài)類型、最小的編譯時錯誤和強大的內(nèi)置編輯器。
Pony
Pony是一種基于無數(shù)據(jù)競爭類型和垃圾收集的語言,并使用 actor 模型以及稱為引用功能的東西。
你可以把 Pony 想象成某種“Rust 遇上 Erlang”的復合體,沒有鎖,高并發(fā)是其主要優(yōu)點。
Pony 的缺點是 API 穩(wěn)定性低、很少有高質(zhì)量的第三方庫和有限的本地工具。
TypeScript
TypeScript是一個基于 JavaScript 靜態(tài)類型定義構(gòu)建,并由微軟維護且開源編程語言。Visual Studio Code 或Visual Studio 是推薦的IDE編輯器,微軟大廠的用戶體驗和錯誤檢查也不用懷疑。
復合編程語言
Hack
Hack是一種作為 PHP 方言的 HipHop 虛擬機的編程語言。于 2014 年由Facebook創(chuàng)建,允許程序員同時使用靜態(tài)和動態(tài)類型(也稱為漸進類型),這為編碼提供了靈活性。
Julia
Julia是一種高級通用編程語言,用于計算科學和數(shù)值分析。Julia 以動態(tài)類型和可重現(xiàn)的高性能特性而聞名。
Julia 在數(shù)據(jù)可視化和機器學習等方面都有大量用途。事實上,它被英國保險公司 Aviva 用于風險計算,紐約聯(lián)邦儲備銀行用于金融建模,甚至氣候建模聯(lián)盟用于氣候變化建模。它擁有Fortran、C++、R、Java、C 、Python等的接口,這使其成為最受追捧的新語言之一。
Kotlin
Kotlin是運行在 Java 虛擬機中的更快、更流暢的 Java 版本。它現(xiàn)在是Android 開發(fā)的首選語言。根據(jù) Android 開發(fā)者網(wǎng)站顯示,程序員正轉(zhuǎn)而采用 Kotlin,因為該語言的樣板代碼更少,空指針異常更少,并且與 Java 有互操作性。
Kotlin 可用于在 iOS 和 Android 上運行的應用程序、不使用額外運行時或虛擬機。
Nim
Nim是一種優(yōu)先考慮可讀性的靜態(tài)類型語言。通過結(jié)合多種語言的特性,Nim 為程序員提供了速度和易用性。
它帶有 JavaScript 后端、分散的包管理、自動內(nèi)存管理、C 和 C++ 庫的綁定以及用于調(diào)試的回溯。作為一種語言,Nim 是有限的,但它包含一組元編程功能,如泛型、模板和宏,因此開發(fā)人員可以在避免冗長代碼的同時以不同的風格工作。
OCaml作為此列表中較舊的語言,OCaml是一種多范式語言——既有函數(shù)式、命令式和類型安全,也具有面向?qū)ο蠊δ堋?/p>
OCaml 的一些優(yōu)勢:定義數(shù)據(jù)類型很容易。默認情況下,所有變量都是不可變的。API 穩(wěn)定,具有良好的庫向后兼容性。該語言還為獨立應用程序提供自動內(nèi)存管理和單獨編譯。
Reason
如果比JavaScript 更快、更簡單且類型安全會怎樣?
這就是創(chuàng)建Reason的 Facebook 開發(fā)者想要回答的問題。不過,他并沒有從頭開始構(gòu)建一種新語言,而是采用了 OCaml,并將其調(diào)整為類似于 JavaScript。
Reason使用項目 BucketScript編譯為 JavaScript,并且可以訪問 80% 的 JavaScript 工具和生態(tài)系統(tǒng)。它還可以編譯為準系統(tǒng)、iOS、Android 和微控制器。
Red
Red是一種最初旨在克服 Rebol 語言限制的編程語言。Red 于 2011 年推出,受 Rebol、Lua 和 Scala 等語言的影響,對高級和低級編程都很有用。
該語言可用于開發(fā)從高級 GUI 到低級操作系統(tǒng)的所有方面。Red 擁有人性化的語法、低內(nèi)存占用和垃圾收集等優(yōu)點。
Rust
Rust解決了一些與 Go 相同的問題,如系統(tǒng)級別的線程和進程安全,,但Rust 更像 C 風格的語法
但Rust語言的缺點:靜態(tài)類型和缺乏垃圾收集
Rust可直接訪問內(nèi)存意味著程序員可以編寫低級代碼,如操作系統(tǒng)內(nèi)核。Rust 也非常適合嵌入式設備、網(wǎng)絡服務和命令行編寫。
新的語言,除了Go,Scala,目前就Swift靠譜,這三個在實際生產(chǎn)環(huán)境中使用的不少了,Go和swift不用說了,scala大數(shù)據(jù)那塊兒用的很多。
R和julia不屬于通用編程語言,不推薦。Erlang不能叫新語言。
其他的就當玩玩,不必認真。
如果你試了一圈還不滿意,那就老老實實的用回java,別多想了。
Python是什么呢?Python是一個功能強大的高級編程語言,主要用于科學和工程計算,是一種高效的編程語言,布局簡潔而強大,適合新手以及專業(yè)人士學習。
Go是什么呢?Go是一種通用編程語言,由Google設計,借鑒了許多其他有好主意的語言,同時也避免了會導致的復雜性和不可靠代碼的功能。
那兩者的區(qū)別是什么?
從范例上來講:Python是一種基于面向?qū)ο缶幊痰亩喾妒?,命令式和函?shù)式編程語言。Go是一種基于并發(fā)編程范式的過程編程語言,它與C具有表面相似性。
從類型化上來講:Python是動態(tài)類型語言,GO語言是靜態(tài)類型化語言,實際有助于編譯捕獲錯誤,可以減少生產(chǎn)后期的錯誤。
從并發(fā)上來講:Python沒有提供內(nèi)置的并發(fā)機制,而Go有內(nèi)置的并發(fā)機制。
從安全性上來講:Python是強類型語言,通過編譯的,增加了安全性;而GO具有分配給每個變量的類型,因此它提供了安全性。
從速度上來講:GO語言的速度要比Python快。
從用法上來講:Python更多地用于Web應用程序,它非常適合解決數(shù)據(jù)科學問題。Go更多地圍繞系統(tǒng)編程,即Go更像是一種系統(tǒng)語言。
從管理內(nèi)存上來講:Go允許程序員在很大程度上管理內(nèi)存;而python語言內(nèi)存管理完全自動化并由python VM管理,不允許程序員對內(nèi)存管理負責。
從庫上來講:對比GO語言,python提供的庫數(shù)量要大得多。
從語法上來講:Python的語法使用縮進來指示代碼塊。Go的語法基于打開和關(guān)閉括號。
從詳細程度上來講:想要獲得同樣功能,Golang代碼通常需要編寫比Python代碼更多的字符。
Go語言作為出現(xiàn)比較晚的一門編程語言,在其原生支持高并發(fā)、云原生等領(lǐng)域的優(yōu)秀表現(xiàn),像目前比較流行的容器編排技術(shù)Kubernetes、容器技術(shù)Docker都是用Go語言寫的,像Java等其他面向?qū)ο蟮恼Z言,雖然也能做云原生相關(guān)的開發(fā),但是支持的程度遠沒有Go語言高,憑借其語言特性和簡單的編程方式,彌補了其他編程語言一定程度上的不足,一度成為一個熱門的編程語言。
最近在學習Go語言,我之前使用過C#、Java等面向?qū)ο缶幊痰恼Z言,發(fā)現(xiàn)其中有很多的編程方式和其他語言有區(qū)別的地方,好記性不如爛筆頭,總結(jié)一下,和其他語言做個對比。這里只總結(jié)差異的地方,具體的語法不做詳細的介紹。
種一棵樹最好的時間是十年前,其次是現(xiàn)在。
3)變量初始化時候可以和其他語言一樣直接在變量后面加等號,等號后面為要初始化的值,也可以使用變量名:=變量值的簡單方式
3)變量賦值 Go語言的變量賦值和多數(shù)語言一致,但是Go語言提供了多重賦值的功能,比如下面這個交換i、j變量的語句:
在不支持多重賦值的語言中,交換兩個變量的值需要引入一個中間變量:
4)匿名變量
在使用其他語言時,有時候要獲取一個值,卻因為該函數(shù)返回多個值而不得不定義很多沒有的變量,Go語言可以借助多重返回值和匿名變量來避免這種寫法,使代碼看起來更優(yōu)雅。
假如GetName()函數(shù)返回3個值,分別是firstName,lastName和nickName
若指向獲得nickName,則函數(shù)調(diào)用可以這樣寫
這種寫法可以讓代碼更清晰,從而大幅降低溝通的復雜度和維護的難度。
1)基本常量
常量使用關(guān)鍵字const 定義,可以限定常量類型,但不是必須的,如果沒有定義常量的類型,是無類型常量
2)預定義常量
Go語言預定義了這些常量 true、false和iota
iota比較特殊,可以被任務是一個可被編譯器修改的常量,在每個const關(guān)鍵字出現(xiàn)時被重置為0,然后在下一個const出現(xiàn)之前每出現(xiàn)一個iota,其所代表的數(shù)字會自動加1.
3)枚舉
1)int 和int32在Go語言中被認為是兩種不同類型的類型
2)Go語言定義了兩個浮點型float32和float64,其中前者等價于C語言的float類型,后者等價于C語言的double類型
3)go語言支持復數(shù)類型
復數(shù)實際上是由兩個實數(shù)(在計算機中使用浮點數(shù)表示)構(gòu)成,一個表示實部(real)、一個表示虛部(imag)。也就是數(shù)學上的那個復數(shù)
復數(shù)的表示
實部與虛部
對于一個復數(shù)z=complex(x,y),就可以通過Go語言內(nèi)置函數(shù)real(z)獲得該復數(shù)的實部,也就是x,通過imag(z)獲得該復數(shù)的虛部,也就是y
4)數(shù)組(值類型,長度在定義后無法再次修改,每次傳遞都將產(chǎn)生一個副本。)
5)數(shù)組切片(slice)
數(shù)組切片(slice)彌補了數(shù)組的不足,其數(shù)據(jù)結(jié)構(gòu)可以抽象為以下三個變量:
6)Map 在go語言中Map不需要引入任何庫,使用很方便
Go循環(huán)語句只支持for關(guān)鍵字,不支持while和do-while
goto語句的語義非常簡單,就是跳轉(zhuǎn)到本函數(shù)內(nèi)的某個標簽
今天就介紹到這里,以后我會在總結(jié)Go語言在其他方面比如并發(fā)編程、面向?qū)ο蟆⒕W(wǎng)絡編程等方面的不同及使用方法。希望對大家有所幫助。