一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Golang - 一篇帶你了解Go vs. Ruby

一篇帶你了解Go vs. Ruby

2022-02-23 22:31班博編程 Golang

對于企業、行業來說,通過合適的編程創建出出色的軟件解決方案成為了競爭的關鍵。我們來對比一下近年來比較出名的兩種編程語言——Go和Ruby。

背景

軟件應用程序的快速增長已經不再只是一件其本身受歡迎的事情了,它更是帶來了深刻改善所有行業業務流程的真正機會。所以,對于企業、行業來說,通過合適的編程創建出出色的軟件解決方案成為了競爭的關鍵。下面,我們來對比一下近年來比較出名的兩種編程語言——GoRuby

GO

介紹

Go 是一個開源的編程語言,它能讓構造簡單、可靠且高效的軟件變得容易。Go是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開發,后來還加入了Ian Lance Taylor, Russ Cox等人,并最終于2009年11月開源,在2012年早些時候發布了Go 1穩定版本。現在Go的開發已經是完全開放的,并且擁有一個活躍的社區。Go語言由于自身天生支持并發的特點完美契合當下的互聯網環境,所以Go語言自發布之后便迅速風靡全球。

一篇帶你了解Go vs. Ruby

特點

  • 語言是開源的: go語言于2009年11月開源
  • 靜態類型和編譯型: go語言書寫的程序必須通過編譯生成歸檔文件或可執行文件,而后才能被使用或者執行
  • 跨平臺: go語言本身支持跨平臺開發,不論你是用什么樣子的硬件環境還是軟件環境基本上都可以進行去語言的開發(這句話有些多余,畢竟現在主流編程語言都支持不同的硬件與軟件環境)
  • 自動垃圾回收: go語言的垃圾回收是由去語言本身去處理的,不需要人為干預,但是如果你想要對垃圾回收進行機制進行干預這個權限也是對開發者開放的
  • 原生支持高并發編程:原生支持高并發編程,擁有自己的并發編程機制。
  • 完善的構建工具:go程序的獲取、編譯、測試、安裝都可以使用命令行語句完成
  • 多編程范式:go語言除了支持函數式編程,也支持面向對象編程,有接口類型和實現類型的概念,但是用嵌入替代了繼承
  • 高效的編程和運行:這里面主要是強調編寫代碼的界面簡潔,以及去語言程序能夠充分調動計算機的運行資源,提高程序運行效率。
  • 豐富的標準庫:go語言標準庫中有很多好用的API。一定程度上面減少了對于第三方庫的依賴,當然如果有好用的第三方庫,作為開發者也還是會使用的
  • 代碼風格統一:go 語言提供了一套格式化工具——go fmt。保證了不同開發者提交的代碼都是統一的格式

缺點

  • 錯誤處理:Go 語言通過函數和預期的調用代碼簡單地返回錯誤(或返回調用堆棧)而幫助開發者處理編譯報錯。雖然這種方法是有效的,但很容易丟失錯誤發生的范圍,因此我們也很難向用戶提供有意義的錯誤信息
  • 軟件包管理:Go 語言的軟件包管理絕對不是完美的。默認情況下,它沒有辦法制定特定版本的依賴庫,也無法創建可復寫的 builds。相比之下 Python、Node 和 Ruby 都有更好的軟件包管理系統

場景

鑒于Go語言的特點和設計的初衷,Go語言作為服務器編程語言,很適合處理日志、數據打包、虛擬機處理、文件系統、分布式系統、數據庫代理等;網絡編程方面,Go語言廣泛應用于Web應用、API應用、下載應用等;除此之外,Go語言還適用于內存數據庫和云平臺領域,目前國外很多云平臺都是采用Go開發。

  • web開發:Go 語言被設計成一門應用于搭載 Web 服務器,存儲集群或類似用途的巨型中央服務器的系統編程語言。大量優秀的Web框架如Echo、Gin、Iris、beego等,而且 Go 內置的 net/http 包十分的優秀;
  • 游戲開發:對于高性能分布式系統領域而言,Go 語言無疑比大多數其它語言有著更高的開發效率。它提供了海量并行的支持
  • 爬蟲及大數據:Go語言天生支持并發,所以十分適合編寫分布式爬蟲及大數據處理;
  • 云平臺領域: 云服務很多都是采用Go進行開發,比如國內著名的七牛云是全站采用Go開發;還有如盛大CDN、阿里云CDN,華為云等。而且云平臺基礎設施如docker、kubernetes等也是Go開發;
  • 分布式存儲領域: etcd、Groupcache、TiDB、Cockroachdb、Influxdb等;
  • 區塊鏈領域: 區塊鏈里面有兩個明星項目以太坊和fabric都使用Go語言;
  • 微服務:現在越來越多新的項目采用微服務架構,前面介紹的優秀項目中也看到很多Go提供的微服務框架,如git-kit、go-micro等。
  • 服務器編程:以前你如果使用C或者C++做的那些事情,用Go來做很合適,例如處理日志、數據打包、虛擬機處理、文件系統等。

Go不適合領域

  • GUI: 例如開發IDE、移動App
  • 企業軟件: 需要COTS交付、二次開發,基于非源代碼的接口擴展,可以在重啟或運行時啟用新特性,無需編譯整個系統的源代碼。這類軟件常常用像annotation一樣的APT機制對語言元素做一定程度的元編程或修改
  • 超大型軟件和團隊:需要很明確的on the fly地知道哪個接口被哪些類型實現了,哪些類型實現了哪些接口。Eclipse有1000W行LOC,InteliJlDEA有700W,JDK自身也有700W,Hadoop+HBase有400w,JBoss等應用服務器有600W,Spring框架有200W,其它第三方庫...日常開發的JAVA商用軟件,你常常跟幾千萬LOC打交道。但好像GO超過50W的開源項目只有限的Docker、K8S等。GO的開源生態系統仍然極其弱小,能用于商用產品質量的開源庫只有Beego等屈指可數的幾個。許多依賴開源庫只有2位數的star。

Ruby

介紹

Ruby,一種簡單快捷的面向對象(面向對象程序設計)腳本語言,在20世紀90年代由日本人松本行弘(Yukihiro Matsumoto)開發,遵守GPL協議和Ruby License。它的靈感與特性來自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp 語言。由 Ruby 語言本身還發展出了JRuby(Java平臺)、IronRuby(.NET平臺)等其他平臺的 Ruby 語言替代品。自從 1995 年公開發布以來,Ruby 在全球吸引了許多忠實的程序員。2006 年,Ruby 得到廣泛接受,各大城市都有活躍的用戶組,以及 Ruby 相關的開發者大會.

一篇帶你了解Go vs. Ruby

特點

  • Ruby 是開源的,除了不收費之外,還可以自由使用、復制、修改和分發。
  • Ruby 是一種通用的、解釋的編程語言。
  • Ruby 是一種真正的面向對象的編程語言。在 Ruby 中,一切皆對象。所有的信息和代碼都擁有屬性和行為
  • Ruby 是一種類似于 Python 和 Perl 的服務器端腳本語言。
  • Ruby 可以用來編寫通用網關接口(CGI)腳本。
  • Ruby 可以被嵌入到超文本標記語言(HTML)。
  • Ruby 語法簡單,這使得新的開發人員能夠快速輕松地學習 Ruby。
  • Ruby 與 C++ 和 Perl 等許多編程語言有著類似的語法。
  • Ruby 可用于開發的 Internet 和 Intranet 應用程序。
  • Ruby 采用虛擬機實現跨平臺
  • Ruby 支持許多 GUI 工具,比如 Tcl/Tk、GTK 和 OpenGL。
  • Ruby 可以很容易地連接到 DB2、MySQL、Oracle 和 Sybase。
  • Ruby 有豐富的內置函數,可以直接在 Ruby 腳本中使用。
  • Ruby 是一門相當靈活的語言,允許用戶改變自身。 Ruby 的核心部分可以更改,也可以重新定義。此外,還可以在現有功能的基礎上增加新功能。Ruby 不想阻礙程序員的創造力。

缺點

  • 性能不如純靜態編譯語言,例如C,但可以通過用C語言來擴展來解決
  • 完全沒有類型檢查,靈活但容易隱藏潛在的問題
  • 使用Module來實現多重繼承,不如JAVA所采用的接口(Interface)方式清晰,而且由于沒有嚴格的類型檢查,所以框架層的設計無法對實現有很嚴格的約束
  • 沒有很完善的開發,重構的工具,雖然現在Eclipse已經提供Ruby的開發插件,但還沒有實現重構,跳轉和自動代碼生成等很有用的功能,主要原因是由于Ruby支持動態類型
  • 依然保留部分非面向對象的語法,例如全局變量,全局方法
  • 允許在擴展代碼中隨意替換現有類的方法定義或變量,非常靈活,但可能會因為錯誤地修改了框架邏輯而引發難以發現的錯誤,但可以用freeze方法來組織被修改
  • 不支持真正的多線程,多線程環境是通過在虛擬機環境中模擬出來的,不能充分發揮多CPU的功能,如果一個線程在執行底層調用被Block住則整個應用程序也被Block住。
  • 對Unicode和多國語言的支持不好

場景

很多人在日常工作使用 Ruby。也有人只是將它作為一種業余愛好。在這里,你看到的只是現實世界中 Ruby 的冰山一角。

  • 仿真模擬:NASA 蘭利研究中心使用 Ruby 進行仿真;摩托羅拉的一個研究小組使用 Ruby 寫了一個生成場景和處理數據的模擬器。
  • 三維建模:Google SketchUp 是一個 3D 建模應用,使用 Ruby 作為它的宏腳本接口。
  • 商業:多倫多康復中心使用基于 RubyWebDialogs 的應用來管理、跟蹤呼叫和現場服務,為 IT 幫助臺和 IT 運營團隊提供支持。
  • 機器人學:在 MORPHA 項目,Ruby 用來實現西門子服務機器人的反應控制部分。
  • 電訊:朗訊一個 3G 無線電話產品中使用了 Ruby。
  • 系統管理:Level 3 Communications 公司的 Unix 容量和規劃系統負責收集分散在全球超過 1700 臺 Unix(Solaris 和 Linux) 服務器的性能統計數據, 它的中央數據收集部分是由 Ruby 編寫的。
  • 網頁應用: RubyonRails框架的公司; SASS 世界上最成熟、穩定和強大的專業級 CSS 擴展語言;A List Apart 建立于 1997 年的雜志網站,最近使用自定義的 Ruby on Rails 重新構建。
  • 安全:由 Rapid7 管理的社區開源項目 Metasploit Framework 是一個免費的滲透測試平臺,旨在幫助 IT 專業人員評估網絡和應用程序的安全性。項目由超過了 70 萬行代碼組成,2010 年已經下載超過一百萬次。Rapid7 開發的商業版本 Metasploit Express 和 Metasploit Pro均基于 Ruby 開發。

總結

Ruby vs Go:性能

Go開發的關鍵原則是簡單性和生產力。Go語言的語法簡單、直觀,易于閱讀,能夠讓程序員快速學習。Go語言的主要作者之一Rob Pike曾表示該語言就是專門為簡化開發過程和快速獲得結果而創建的。Ruby的設計也注重簡潔性和生產力,其粉絲都稱其是一種美麗、巧妙的語言。Ruby和Go都受到C系列編程語言的影響,相對年輕,但是卻俘獲了不少人的心,這其中包括程序員和業務決策者。Go非常適合解決簡單和復雜的多線程任務,這也是當初谷歌設計這門語言的目的。受到流行的Ruby on Rails框架的影響。Ruby非常適合創建小型商業項目、博客和個人頁面。但是面對復雜的解決方案,Ruby有點力不從心,性能速度低,這可能會影響要求苛刻的客戶的總體滿意度。根據我們的性能測試結果,在相同的環境下,Go項目比Ruby編寫的類似項目運行得更快。

Ruby vs Go:社區

根據Tiobe和Stack Overflow的調查,Go是近年來發展最快、最受歡迎的編程語言之一,而Ruby則表現相反,近幾年中越來越不受歡迎。Ruby是由個人創建的,而Go則由Google設計的,其包括有廣泛的云基礎架構,支持性社區、論壇、教程,以及最重要的其他庫,可幫助語言向前發展。此外,Go是許多重要公司的首選,如Docker,BBC,SoundCloud,Facebook,Dropbox,甚至是Medium。這些企業用戶也是Go進一步發展的保證。與之對應的,Ruby也被Twitter,Shopify,Crunchbase等大公司選中。

Ruby vs Go:兼容性

編程語言和軟件堆棧其他部分集成是可以直接影響將新解決方案、功能或改進添加到現有程序的速度。由于Go與其他語言(特別是C系列語言)的自然兼容性,許多程序員甚至在使用不同堆棧(如Python和Go或PHP和Go)時都可以使用Go來提高應用程序的性能。此外,Go作為服務器端語言可與幾乎所有數據庫交互。至于Ruby,它的兼容性僅限于最流行的數據庫。

Ruby vs Go:開發經驗

我們的團隊多年來一直在使用這兩種語言進行開發,他們各自都有其優點和缺點。根據我們的經驗,Go非常適合任何規模的后端系統和高度可擴展的網絡服務器。Go是一種現代競爭性的語言,能夠為您提供快速、高質量的性能,簡潔的環境以及與其他技術的良好兼容性。但如果您更看重結果的快速交付,對于性能質量沒有苛刻的要求,那么Ruby可能更適合您。

原文地址:https://www.toutiao.com/a7067548468763509259/

延伸 · 閱讀

精彩推薦
  • Golanggolang json.Marshal 特殊html字符被轉義的解決方法

    golang json.Marshal 特殊html字符被轉義的解決方法

    今天小編就為大家分享一篇golang json.Marshal 特殊html字符被轉義的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    李浩的life12792020-05-27
  • Golanggolang如何使用struct的tag屬性的詳細介紹

    golang如何使用struct的tag屬性的詳細介紹

    這篇文章主要介紹了golang如何使用struct的tag屬性的詳細介紹,從例子說起,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看...

    Go語言中文網11352020-05-21
  • GolangGolang通脈之數據類型詳情

    Golang通脈之數據類型詳情

    這篇文章主要介紹了Golang通脈之數據類型,在編程語言中標識符就是定義的具有某種意義的詞,比如變量名、常量名、函數名等等,Go語言中標識符允許由...

    4272021-11-24
  • Golanggolang 通過ssh代理連接mysql的操作

    golang 通過ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過ssh代理連接mysql的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    a165861639710342021-03-08
  • Golanggo語言制作端口掃描器

    go語言制作端口掃描器

    本文給大家分享的是使用go語言編寫的TCP端口掃描器,可以選擇IP范圍,掃描的端口,以及多線程,有需要的小伙伴可以參考下。 ...

    腳本之家3642020-04-25
  • Golanggo日志系統logrus顯示文件和行號的操作

    go日志系統logrus顯示文件和行號的操作

    這篇文章主要介紹了go日志系統logrus顯示文件和行號的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    SmallQinYan12302021-02-02
  • GolangGolang中Bit數組的實現方式

    Golang中Bit數組的實現方式

    這篇文章主要介紹了Golang中Bit數組的實現方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    天易獨尊11682021-06-09
  • Golanggolang的httpserver優雅重啟方法詳解

    golang的httpserver優雅重啟方法詳解

    這篇文章主要給大家介紹了關于golang的httpserver優雅重啟的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,...

    helight2992020-05-14
主站蜘蛛池模板: 美女天天色 | 美女伊人网 | 我要看靠逼片 | 久久人妻无码毛片A片麻豆 久久热这里只有 精品 | 非洲黑女人性xxxx | 天堂网www在线观看 天堂欧美 | 久久精品国产免费播高清无卡 | 日日干天天爽 | 香蕉精品国产高清自在自线 | 情趣内衣情趣玩具play | 国产一卡2卡3卡四卡精品网站 | 楚乔传第二部免费完整 | 久久精品一区二区免费看 | 色综合色狠狠天天久久婷婷基地 | 国产成人精品777 | 色吊丝每日永久访问网站 | 亚洲精品国精品久久99热 | 果冻传媒在线播放观看228集 | 欧美特黄视频在线观看 | 奇米影视777最新在线 | 国产成人久久久精品一区二区三区 | 欧美在线视频一区二区 | free性日本| 人人艹在线视频 | 天堂久久久久va久久久久 | 果冻传媒在线播放1 | 乳女教师欲乱动漫无修版动画3d | 日本手机在线视频 | 国产在线观看福利 | 911亚洲精品国内自产 | 精品国产91高清在线观看 | 男人边吃奶边做好爽视频免费 | 国产成人综合精品一区 | 免费看国产一级片 | 6080伦理久久精品亚洲 | 亚洲一欧洲中文字幕在线 | 四虎影视免费 | 男女车车好快的车车免费网站 | 婷婷色伊人 | 国产精品日韩在线观看 | 亚洲精品卡一卡2卡3卡4卡 |