0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

我們?cè)谑褂肎o語言編程之前有什么呢?為什么選擇Go語言編程?

悟空智能科技 ? 來源:未知 ? 作者:李倩 ? 2018-07-10 14:19 ? 次閱讀

我們?cè)谑褂?Go 語言編程之前有什么呢?

網(wǎng)站TreeScale.com主頁和 API 都是基于一些分析工具的網(wǎng)絡(luò)應(yīng)用。下面是我們的技術(shù)棧:

React.js 主頁前端

Django Python 主頁后端和認(rèn)證服務(wù)

Node.js API 服務(wù)

PostgreSQL 數(shù)據(jù)庫、Cassandra日志系統(tǒng)

自定義容器注冊(cè)表是使用 Rust 語言

從上面你可以看到基礎(chǔ)的框架是完全的基于微服務(wù)和邏輯分離的(前后端分離),甚至說是完全不同的技術(shù)來實(shí)現(xiàn)的。

為什么我們開始整合 API 服務(wù)和后端到單個(gè)項(xiàng)目中,主要的原因是他們有很多地方是相似的而且通過多種語言或者技術(shù)編程,代碼存在很多重復(fù)的。最終我們需要花費(fèi)很多時(shí)間在個(gè)性化的 Django’s API 服務(wù),特別是在定制 JSON 的響應(yīng)。

一個(gè)月之后我們用 Django 建立的 API 服務(wù),我感覺當(dāng)你開發(fā)一些普通的應(yīng)用使用 Django 是非常棒的,但是當(dāng)你需要更高的性能和一些個(gè)性化的模塊的東西的使用 Django 是會(huì)越來越復(fù)雜的。

為什么選擇 Go 語言編程?

1編譯成單一的二進(jìn)制

Golang 是編譯型語言并且 Googe 的開發(fā)者花了很大的功夫在上面。它使用靜態(tài)鏈接實(shí)際上是基于操作系統(tǒng)類型和環(huán)境組合所有的依賴庫文件和模塊到一個(gè)單一的二進(jìn)制文件中,這也意味著如果你想要編譯你的后端應(yīng)用到你的 Linux 操作系統(tǒng)和 X86 架構(gòu)的 CPU 中,你只要下載編譯好的二進(jìn)制應(yīng)用到服務(wù)器,然后可以后端應(yīng)用可以工作了,這是不需要任何的依賴文件的。

2靜態(tài)類型系統(tǒng)

對(duì)于大規(guī)模應(yīng)用來說類型系統(tǒng)是非常重要的。Python 是很棒的并且有趣的語言但是有些時(shí)候你會(huì)看到一些不尋常的異常因?yàn)楫?dāng)你嘗試將變量作為一個(gè)整型變量的時(shí)候結(jié)果它是一個(gè)字符串類型.

#Djangowillcrashprocessbecauseofthisdefsome_view(request): user_id=request.POST.get('id',0)

Go 在編譯的時(shí)候告訴你這是一個(gè)編譯器錯(cuò)誤,這就是在愚蠢的問題上贏得時(shí)間的地方。

3優(yōu)化

令人驚訝的是,在大多數(shù)的應(yīng)用場(chǎng)景中,Go 語言比 Python(版本2或3)更快。Benchmarking Game中可以看到對(duì)比的結(jié)果,當(dāng)然這是不公平的,這依賴于應(yīng)用類型和用戶用例。

對(duì)于我們的案例,Go 語言由于自己的多線程模塊和 CPU 可伸縮性獲得了較好的性能。無論什么時(shí)候我們需要執(zhí)行一些內(nèi)部的請(qǐng)求,我們可以使用 Goroutine 來分別執(zhí)行,這個(gè)比 Python 中的 Threads 在資源開銷上要少上十多倍。由于這些內(nèi)置的語言特性,我們可以節(jié)省大量的資源(內(nèi)存和 CPU )。

4Go 不再需要 Web 框架

對(duì)于編程語言這是一件十分酷的事情。Go 語言的創(chuàng)造者和社區(qū)內(nèi)置了很多原生的被核心語言支持的工具,在大多數(shù)情況下你都不再需要任何第三方類庫。比如它有內(nèi)置的 http、json、html 模板,你甚至可以不用費(fèi)心去 Github 上尋找第三方類庫就可以構(gòu)建十分復(fù)雜的 API 服務(wù)。

當(dāng)然,Go 也有很多類庫和框架用來構(gòu)建 web 項(xiàng)目,但是我會(huì)建議你不使用第三方類庫來構(gòu)建你的 web 項(xiàng)目或者 API 服務(wù),因?yàn)樵诖蠖鄶?shù)情況下使用原生包會(huì)使你的生活更加輕松。

5更好的 IDE 支持和調(diào)試

IDE 支持是當(dāng)你嘗試更改編程語言時(shí)最重要的考慮因素之一。友好的 IDE 平均可以節(jié)省你80%的編程時(shí)間。Go Plugin For JetBrains IDEA,同樣提供了其他支持,比如(Webstorm、PHPStorm 等等…)。這個(gè)插件提供了任何你在項(xiàng)目開發(fā)中需要的服務(wù),強(qiáng)大的 JetBrains IDEA ,可以讓你的開發(fā)如虎添翼。

基于我們的代碼統(tǒng)計(jì),在用 Go 語言重寫項(xiàng)目后我們少寫了64%的代碼。

你不需要調(diào)試不存在的代碼。代碼越少,錯(cuò)誤越少!

結(jié)論

Go 為我們提供了超強(qiáng)的靈活性,一種語言可以適用于所有的用戶場(chǎng)景,而且在所有的用戶場(chǎng)景都可以工作的很好。在我們的 Backend 和 API 服務(wù)中,我們得到了30%的性能優(yōu)化。而且現(xiàn)在我可以實(shí)時(shí)處理日志,轉(zhuǎn)換到數(shù)據(jù)庫中,并且通過 Websocket 處理一個(gè)或多個(gè)服務(wù)!這就是 Go 語言特性所提供的的非常強(qiáng)大的功能。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 語言編程
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    9863
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84077
  • go語言
    +關(guān)注

    關(guān)注

    1

    文章

    156

    瀏覽量

    8996

原文標(biāo)題:從 Python 轉(zhuǎn)到 Go 語言的五大理由

文章出處:【微信號(hào):WUKOOAI,微信公眾號(hào):悟空智能科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    #硬聲創(chuàng)作季 Go核心編程_Go語言的注釋

    編程語言go語言
    Mr_haohao
    發(fā)布于 :2022年09月11日 17:32:45

    會(huì)go語言能做什么工作?

    Go語言主要用作服務(wù)器端開發(fā),其定位是用來開發(fā)“大型軟件”的,適合于很多程序員一起開發(fā)大型軟件,并且開發(fā)周期長,支持云計(jì)算的網(wǎng)絡(luò)服務(wù)。Go語言能夠讓程序員快速開發(fā),并且
    發(fā)表于 03-22 15:03

    Go開發(fā)語言的優(yōu)勢(shì)在哪里?

    Go語言是谷歌發(fā)布的第二款開源編程語言,可以不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性,并專門針對(duì)多處理器系統(tǒng)應(yīng)用程序的
    發(fā)表于 03-22 15:04

    Go語言及Beego框架環(huán)境搭建相關(guān)資料推薦

    1、Go語言及Beego框架環(huán)境搭建  開始環(huán)境搭建之前,我們先一起來看看:  Go有什么優(yōu)勢(shì)
    發(fā)表于 10-17 16:57

    網(wǎng)易有道CEO周楓推薦Go語言并介紹Go語言的3個(gè)優(yōu)點(diǎn)

    網(wǎng)易有道CEO周楓推薦Go語言。他認(rèn)為Go很好地繼承了C語言靈活、簡(jiǎn)單有效的思想;Go有很高的生產(chǎn)效率;
    的頭像 發(fā)表于 01-31 14:11 ?5105次閱讀

    Go和Python,Erlang的語言對(duì)比分析和Go編程示例概述

    本文對(duì)Go和Python、Erlang做了一些有趣的分析對(duì)比,相信大家能從中感受到Go語言的強(qiáng)大和與眾不同。
    的頭像 發(fā)表于 07-21 09:52 ?7594次閱讀
    <b class='flag-5'>Go</b>和Python,Erlang的<b class='flag-5'>語言</b>對(duì)比分析和<b class='flag-5'>Go</b><b class='flag-5'>編程</b>示例概述

    Go語言多線程領(lǐng)域編程、跨異構(gòu)平臺(tái)及編程難易程度的優(yōu)勢(shì)

    Go語言的異構(gòu)平臺(tái)移植也非常簡(jiǎn)單,僅需要應(yīng)用程序的源碼,異構(gòu)平臺(tái)上直接編譯即可,且編譯后的二進(jìn)制文件同類平臺(tái)可直接拷貝運(yùn)行。Go
    的頭像 發(fā)表于 08-14 09:25 ?6159次閱讀
    <b class='flag-5'>Go</b><b class='flag-5'>語言</b><b class='flag-5'>在</b>多線程領(lǐng)域<b class='flag-5'>編程</b>、跨異構(gòu)平臺(tái)及<b class='flag-5'>編程</b>難易程度的優(yōu)勢(shì)

    GO語言簡(jiǎn)介!GO是理想的編程語言嗎?

    技術(shù)實(shí)力毋容置疑,不過這哥倆都是玩Kernel的,經(jīng)歷相同,理念相近,分歧會(huì)比較少,他們也都坦承C用得最多最熟,所以注定了GO的類C特性,不過這會(huì)不會(huì)導(dǎo)致GO設(shè)計(jì)上的思維火花不足,對(duì)OOP以及現(xiàn)代編程思想的支持不足,亦未可知。
    的頭像 發(fā)表于 04-29 09:47 ?4269次閱讀
    <b class='flag-5'>GO</b><b class='flag-5'>語言</b>簡(jiǎn)介!<b class='flag-5'>GO</b>是理想的<b class='flag-5'>編程</b><b class='flag-5'>語言</b>嗎?

    華為云的Go語言編程的眾多干貨

    ? 近日,國內(nèi)較權(quán)威的Go大會(huì)——Gopher China召開,眾多一線互聯(lián)網(wǎng)公司的大神們匯聚一堂,深入探討了Go語言并產(chǎn)生了諸多干貨。其中,華為云微服務(wù)首席架構(gòu)師田曉亮老師也受邀參與本次大會(huì),以
    的頭像 發(fā)表于 12-17 17:59 ?2138次閱讀

    Go語言在世界各地的使用情況如何?

    開發(fā)者 數(shù)量 所處地區(qū) ? 全球大約有 110 萬名職業(yè) Go 開發(fā)者(特指在工作中專門將 Go 作為主力編程語言的群
    的頭像 發(fā)表于 02-26 14:10 ?3867次閱讀
    <b class='flag-5'>Go</b><b class='flag-5'>語言</b>在世界各地的使用情況如何?

    詳解GO語言的趨勢(shì)與使用情況

    Go 語言簡(jiǎn)單易學(xué)、性能優(yōu)良。JetBrains Blog 發(fā)布了Go 語言的調(diào)查報(bào)告,看看GO 語言
    的頭像 發(fā)表于 03-17 11:05 ?2964次閱讀

    Go語言憑借什么成為云原生第一語言的?

    發(fā)展勢(shì)頭強(qiáng)勁,憑借其簡(jiǎn)潔、高效的特性,競(jìng)爭(zhēng)激烈的編程語言市場(chǎng)中占據(jù)了一席之地。 如果你對(duì) Go 的發(fā)展趨勢(shì)還不明朗的話,不妨仔細(xì)看看我后面說的。 據(jù) StackOverflow(全球
    的頭像 發(fā)表于 04-22 10:15 ?3072次閱讀
    <b class='flag-5'>Go</b><b class='flag-5'>語言</b>憑借什么成為云原生第一<b class='flag-5'>語言</b>的?

    go語言枚舉類型怎么用

    go 語言枚舉類型是這么用的?什么場(chǎng)景下會(huì)用到枚舉?本文對(duì) go 語言枚舉做了詳細(xì)講解。 枚舉,是一種重要的數(shù)據(jù)類型,由一組鍵值對(duì)組成,通
    的頭像 發(fā)表于 09-02 09:43 ?5075次閱讀

    go語言中怎么使用HTTP代理

    go語言中怎么使用HTTP代理。
    的頭像 發(fā)表于 09-01 14:41 ?2325次閱讀

    Go編程語言-你應(yīng)該知道的一切

    Go 編程語言的故事始于 Google,當(dāng)時(shí)三位工程師 Robert Griesemer、Rob Pike 和 Ken Thompson 對(duì) C++ 的復(fù)雜性以及缺乏提供高效編譯和執(zhí)行的簡(jiǎn)單
    的頭像 發(fā)表于 12-11 17:37 ?492次閱讀