中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go語言借鑒了什么語言

發布時間:2023-01-31 14:06:08 來源:億速云 閱讀:164 作者:iii 欄目:編程語言

這篇文章主要介紹了go語言借鑒了什么語言的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇go語言借鑒了什么語言文章都會有所收獲,下面我們一起來看看吧。

go語言借鑒了C、Pascal和CSP。Go的很多語言特性借鑒與它的三個祖先:C、Pascal和CSP。Go的語法、數據類型、控制流等繼承于C;Go的包、面對對象等思想來源于Pascal分支;而Go最大的語言特色,基于管道通信的協程并發模型,則借鑒于CSP分支。

一、Go語言設計初衷

1、設計Go語言是為了解決當時Google開發遇到的問題:

  • 大量的C++代碼,同時又引入了Java和Python

  • 成千上萬的工程師

  • 數以萬計行的代碼

  • 分布式的編譯系統

  • 數百萬的服務器

2、Google開發中的痛點:

  • 編譯慢

  • 失控的依賴

  • 每個工程師只是用了一個語言里面的一部分

  • 程序難以維護(可讀性差、文檔不清晰等)

  • 更新的花費越來越長

  • 交叉編譯困難

3、如何解決當前的問題和痛點?

Go希望成為互聯網時代的C語言。多數系統級語言(包括Java和C#)的根本編程哲學來源于C++,將C++的面向對象進一步發揚光大。但是Go語言的設計者卻有不同的看法,他們認為值得學習的是C語言。C語 言經久不衰的根源是它足夠簡單。因此,Go語言也是足夠簡單。

所以,他們當時設計Go的目標是為了消除各種緩慢和笨重、改進各種低效和擴展性。Go是由那些開發大型系統的人設計的,同時也是為了這些人服務的;它是為了解決工程上的問題,不是為了研究語言設計;它 還是為了讓我們的編程變得更舒適和方便。

但是結合Google當時內部的一些現實情況,如很多工程師都是C系的,所以新設計的語言一定要易學習,最好是類似C的語言;20年沒有出新的語言了,所以新設計的語言必須是現代化的(例如內置GC)等情 況。最后根據實戰經驗,他們向著目標設計了Go這個語言。

4、Go語言的特色:

  • 沒有繼承多態的面向對象

  • 強一致類型

  • interface不需要顯式聲明(Duck Typing)

  • 沒有異常處理(Error is value)

  • 基于首字母的可訪問特性

  • 不用的import或者變量引起編譯錯誤

  • 完整而卓越的標準庫包

  • Go內置runtime(作用是性能監控、垃圾回收等)

二、Go語言的優勢

1、學習曲線容易

Go語言語法簡單,包含了類C語法。因為Go語言容易學習,所以一個普通的大學生花幾個星期就能寫出來可以上手的、高性能的應用。在國內大家都追求快,這也是為什么國內Go流行的原因之一。

go語言借鑒了什么語言

Go 語言的語法特性簡直是太簡單了,簡單到你幾乎玩不出什么花招,直來直去的,學習曲線很低,上手非常快。

2、效率:快速的編譯時間,開發效率和運行效率高

開發過程中相較于 Java 和 C++呆滯的編譯速度,Go 的快速編譯時間是一個主要的效率優勢。Go擁有接近C的運行效率和接近PHP的開發效率。

go語言借鑒了什么語言

C 語言的理念是信任程序員,保持語言的小巧,不屏蔽底層且底層友好,關注語言的執行效率和性能。而 Python 的姿態是用盡量少的代碼完成盡量多的事。于是我能夠感覺到,Go 語言想要把 C 和 Python 統一起 來,這是多棒的一件事啊。

3、出身名門、血統純正

之所以說Go出身名門,從Go語言的創造者就可見端倪,Go語言絕對血統純正。其次Go語言出自Google公司,Google在業界的知名度和實力自然不用多說。Google公司聚集了一批牛人,在各種編程語言稱雄爭霸的 局面下推出新的編程語言,自然有它的戰略考慮。而且從Go語言的發展態勢來看,Google對它這個新的寵兒還是很看重的,Go自然有一個良好的發展前途。

go語言借鑒了什么語言

4、自由高效:組合的思想、無侵入式的接口

Go語言可以說是開發效率和運行效率二者的完美融合,天生的并發編程支持。Go語言支持當前所有的編程范式,包括過程式編程、面向對象編程、面向接口編程、函數式編程。程序員們可以各取所需、自由組合、想 怎么玩就怎么玩。

5、強大的標準庫

這包括互聯網應用、系統編程和網絡編程。Go里面的標準庫基本上已經是非常穩定了,特別是我這里提到的三個,網絡層、系統層的庫非常實用。**Go 語言的 lib 庫麻雀雖小五臟俱全。**Go 語言的 lib 庫中基本上有 絕大多數常用的庫,雖然有些庫還不是很好,但我覺得不是問題,因為我相信在未來的發展中會把這些問題解決掉。

6、部署方便:二進制文件,Copy部署

這一點是很多人選擇Go的最大理由,因為部署太方便了,所以現在也有很多人用Go開發運維程序。

7、簡單的并發

**并行和異步編程幾乎無痛點。**Go 語言的 Goroutine 和 Channel 這兩個神器簡直就是并發和異步編程的巨大福音。像 C、C++、Java、Python 和 JavaScript 這些語言的并發和異步方式太控制就比較復雜了,而且 容易出錯,而 Go 解決這個問題非常地優雅和流暢。這對于編程多年受盡并發和異步折磨的編程者來說,完全就是讓人眼前一亮的感覺。Go 是一種非常高效的語言,高度支持并發性。Go是為大數據、微服務、并發而生的一種編程語言。

Go 作為一門語言致力于使事情簡單化。它并未引入很多新概念,而是聚焦于打造一門簡單的語言,它使用起來異常快速并且簡單。其唯一的創新之處是 goroutines 和通道。Goroutines 是 Go 面向線程的輕量級 方法,而通道是 goroutines 之間通信的優先方式。

創建 Goroutines 的成本很低,只需幾千個字節的額外內存,正由于此,才使得同時運行數百個甚至數千個 goroutines 成為可能。可以借助通道實現 goroutines 之間的通信。Goroutines 以及基于通道的并發性 方法使其非常容易使用所有可用的 CPU 內核,并處理并發的 IO。相較于 Python/Java,在一個 goroutine 上運行一個函數需要最小的代碼。

go語言借鑒了什么語言

8、穩定性

Go擁有強大的編譯檢查、嚴格的編碼規范和完整的軟件生命周期工具,具有很強的穩定性,穩定壓倒一切。那么為什么Go相比于其他程序會更穩定呢?這是因為Go提供了軟件生命周期(開發、測試、部署、維護等 等)的各個環節的工具,如go tool、gofmt、go test。

三、對比其他語言

Go的很多語言特性借鑒與它的三個祖先:C,Pascal和CSP。Go的語法、數據類型、控制流等繼承于C,Go的包、面對對象等思想來源于Pascal分支,而Go最大的語言特色,基于管道通信的協程并發模型,則借鑒于 CSP分支。

go語言借鑒了什么語言

Java

編譯語言,速度適中(2.67s),目前的大型網站都是拿java寫的,比如淘寶、京東等。主要特點是穩定,開源性好,具有自己的一套編寫規范,開發效率適中,目前最主流的語言。 作為編程語言中的大腕。具有最大的知名度和用戶群。無論風起云涌,我自巍然不動。他強任他強,清風拂山崗;他橫由他橫,明月照大江。

c#

執行速度快(4.28),學習難度適中,開發速度適中。但是由于c#存在很多缺點,京東、攜程等大型網站前身都是用c#開發的,但是現在都遷移到了java上。

C/C++

現存編程語言中的老祖,其他語言皆由此而生。執行速度最快無人能及。但是寫起來最為復雜,開發難度大。

Javascript

編程語言中特立獨行的傲嬌美女。前端處理能力是其它語言無法比擬。發展中的js后端處理能力也是卓越不凡。前后端通吃,舍我其誰?

Python

腳本語言,速度最慢(258s),代碼簡潔、學習進度短,開發速度快。豆瓣就是拿python寫的。Python著名的服務器框架有django,flask。但是python在大型項目上不太穩定,因此有些用python的企業后來遷移到 了java上。

scala

編譯語言,比python快十倍,和java差不多,但是學習進度慢,而且在實際編程中,如果對語言不夠精通,很容易造成性能嚴重下降。后來比如Yammer就從scala遷移到了java上。微服務框架有lagom等。

Go

編程界的小鮮肉。高并發能力無人能及。即具有像Python一樣的簡潔代碼、開發速度,又具有C語言一樣的執行效率,優勢突出。

在軟件行業做過一段時間的人都知道,沒有萬能的編程語言,也沒有萬能開發框架,更沒有萬能的解決方案。任何新技術的產生都應該歸功于一部分人對老舊技術的強烈不滿。Go語言也不例外。比如,C語言的依賴管理、C++ 的 垃圾回收、Java 笨重的類型系統和厚重的 Java EE 規范,以及腳本語言(如 PHP、Python 和 Ruby)的性能,這些都是很多開發者社區經常爭論和抱怨的問題。

擴展知識:

Go語言的優勢

Go語言是集多編程范式之大成者,體現了優秀的軟件工程思想和原則,其特性可以使開發者快速地開發、測試和部署程序,大大提高了生產效率。下面我們來看看與其他主流語言相比,Go語言具有的優勢。

1) 相對于 C/C++ 來講,Go語言擁有清晰的依賴管理和全自動的垃圾回收機制,因此其代碼量大大降低,開發效率大大提高。

2) 相對于 Java 來講,Go語言擁有簡明的類型系統、函數式編程范式和先進的并發編程模型。因此其代碼塊更小更簡潔、可重用性更高,并可在多核計算環境下更快地運行。

3) 對于 PHP 來講,Go語言更具通用性和規范性。這使得其更適合構建大型的軟件,并能夠更好地將各個模塊組織在一起。在性能方面,PHP 不可與 Go 同日而語。

4) 對于 Python/Ruby 來講,Go 的優勢在于其簡潔的語法、非侵入式和扁平化的類型系統和渾然天成的多范式編程模型。與 PHP 一樣,Python 和 Ruby 也是動態類型的解釋型語言,這就意味著它們的運行速度會比靜態類型的 編譯型語言慢很多。

總而言之,Go語言對于當前大多數主流語言來講,最大的優勢在于具有較高的生產效率、先進的依賴管理和類型系統,以及原生的并發計算支持。因此,Go語言自發布以來就受到了各個領域開發者的關注和青睞。

Go語言的劣勢

下面,我們來客觀地看一下目前Go語言需要加強或改進的地方(雖然有些 Gopher 并不這么認為)。

1) 從分布式計算的角度來看,Go語言的成熟度不及 Erlang(現在已經出現了一些這方面的Go語言代碼包,我們已經可以看到光明的未來了)。

2) 從程序運行速度的角度來看,Go語言雖然已與 Java 不相上下,但還不及 C(差距正在不斷地縮小)。

3) 從第三方庫的角度來看,Go語言的庫數量還遠遠不及其他幾門主流語言(比如 Java、Python、Ruby 等)。不過與Go語言的年紀相比,用它實現的第三方庫已經相當多了,并且它們的數量在持續地飛速增長中。

另外,在更深的層面,Go語言標準庫中也有些不盡如人意的的地方,具體如下。

1) 從語言語法角度來看,Go語言語法里的語法糖并不多,這讓許多 Python、Ruby 愛好者們對它不屑一顧。另外,變量賦值方式多得有點兒累贅了。最讓人遺憾的也是我比較在意的一個地方是,Go語言不支持自定義的泛型類 型。

2) 從并發編程角度來看,Go語言提供的并發模型很強大,但也有一些編寫規則需要了解。否則,很容易踩進“坑”里。其實不提倡把這叫作“坑”。因為這些所謂的“坑”,大都是我們由于對原理不熟悉而自己挖出來的。

3) 從垃圾回收角度看,Go語言的垃圾回收采用的是并發的標記清除算法(Concurrent Mark and Sweep,CMS)。雖然是并發的操作,時間比串行操作短很多,但是還是會在垃圾回收期間停止所有用戶程序的操作。這一點多少會 影響到對實時性要求比較高的應用。不過,在Go語言 1.3 之后的版本中,這方面的問題已經得到了極大的改善。

雖然Go語言還有一些瑕疵,但從整體來看,它已經是一門非常優秀的通用編程語言了。并且,Go語言在今后的發展上會關注性能、可靠性、可移植性和一些功能增強,所以上述缺憾會隨著版本的推進而逐漸減弱和消失。

關于“go語言借鑒了什么語言”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“go語言借鑒了什么語言”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广东省| 仁寿县| 修水县| 博湖县| 汤阴县| 乐山市| 资中县| 个旧市| 临桂县| 德格县| 宜章县| 沂水县| 江都市| 长阳| 陆河县| 竹山县| 南陵县| 平凉市| 定兴县| 古浪县| 潢川县| 酒泉市| 福建省| 莫力| 项城市| 玛曲县| 青田县| 封丘县| 册亨县| 嵊泗县| 汶上县| 巴青县| 兴业县| 锦屏县| 桂阳县| 崇义县| 南平市| 阿图什市| 梅河口市| 台中县| 沁阳市|