成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么我不會(huì)舍棄Python投奔Go語(yǔ)言

開(kāi)發(fā) 開(kāi)發(fā)工具 前端
作者Russ Cox畢業(yè)于麻省理工和哈佛大學(xué),曾在貝爾實(shí)驗(yàn)室參與過(guò)Plan 9 和 Unix操作系統(tǒng)的開(kāi)發(fā),最近在google,主要開(kāi)發(fā)Go語(yǔ)言。最近關(guān)于Go語(yǔ)言的話題很多,本月剛好是Go語(yǔ)言誕生3周年。這個(gè)語(yǔ)言在谷歌巨人的推動(dòng)下最終很可能成為今后的主流語(yǔ)言。

最近,由于一篇“為什么我不會(huì)舍棄Python投奔Go語(yǔ)言(英文)”的博客,我收到了大量的郵件,這篇文章中,作者說(shuō)Go語(yǔ)言除了“用返回值來(lái)處理異常錯(cuò)誤”這點(diǎn)外,其它的都非常好。我想寫(xiě)出一點(diǎn)東西,解釋一下Go語(yǔ)言為什么這樣做,這會(huì)對(duì)大家都有用。

[[103021]] 
本文作者:Russ Cox

在Go語(yǔ)言中,規(guī)定的方式是,函數(shù)返回錯(cuò)誤信息。這沒(méi)什么。如果一個(gè)文件并不存在,op.Open函數(shù)會(huì)返回一個(gè)錯(cuò)誤信息。這沒(méi)什么。如果你向你一個(gè)中斷了的網(wǎng)絡(luò)連接里寫(xiě)數(shù)據(jù),net.Conn里的Write方法會(huì)返回一個(gè)錯(cuò)誤。這沒(méi)什么。這種狀況在這種程序中是可以預(yù)料到的。這種操作就是容易失敗,你知道程序會(huì)如何運(yùn)行,因?yàn)锳PI的設(shè)計(jì)者通過(guò)內(nèi)置了一種錯(cuò)誤情況的結(jié)果而讓這一切顯得很清楚。

從另一方面講,有些操作基本上不會(huì)出錯(cuò),所處的環(huán)境根本不可能給你提示錯(cuò)誤信息,不可能控制錯(cuò)誤。這才是讓人痛苦的地方。典型的例子;一個(gè)程序執(zhí)行 x[j],j值超出數(shù)組邊界,這才痛苦。像這樣預(yù)料之外的麻煩在程序中是一個(gè)嚴(yán)重的bug,一般會(huì)弄死程序的運(yùn)行。不幸的是,由于這種情況的存在,我們很難寫(xiě)出健壯的,具有自我防御的服務(wù)器——例如,可以應(yīng)付偶然出現(xiàn)的有bug的HTTP請(qǐng)求處理器時(shí),不影響其他服務(wù)的啟動(dòng)和運(yùn)行。為解決這個(gè)問(wèn)題,我們引入了恢復(fù)機(jī)制,它能讓一個(gè)go例程從錯(cuò)誤中恢復(fù),服務(wù)余下設(shè)定的調(diào)用。然而,代價(jià)是,至少會(huì)丟失一個(gè)調(diào)用。這是特意而為之的。引用郵件中的原話:“這種設(shè)計(jì)不同于常見(jiàn)的異常控制結(jié)構(gòu),這是一個(gè)認(rèn)真思考后的決定。我們不希望像java語(yǔ)言里那樣把錯(cuò)誤和異常混為一談。”

我剛開(kāi)始提到的那篇文章里問(wèn)“為什么數(shù)組越界造成的麻煩會(huì)比錯(cuò)誤的網(wǎng)址或斷掉的網(wǎng)絡(luò)引出的問(wèn)題要大?”答案是,我們沒(méi)有一種內(nèi)聯(lián)并行的方法來(lái)報(bào)告在執(zhí)行x[j]期間產(chǎn)生的錯(cuò)誤,但我們有內(nèi)聯(lián)并行的方法報(bào)告由錯(cuò)誤網(wǎng)址或網(wǎng)絡(luò)問(wèn)題造成的錯(cuò)誤。

使用Go語(yǔ)言中的錯(cuò)誤返回模式的規(guī)則很簡(jiǎn)單:如果你的函數(shù)在某種情況下很容易出錯(cuò),那它就應(yīng)該返回錯(cuò)誤。當(dāng)我調(diào)用其它的程序庫(kù)時(shí),如果它是這樣寫(xiě)的,那我不必?fù)?dān)心那些錯(cuò)誤的產(chǎn)生,除非有真正異常的狀況,我根本沒(méi)有想到需要處理它們。

有一個(gè)你需要記在心里的事情是,Go語(yǔ)言是為大型軟件設(shè)計(jì)的。我們都喜歡程序簡(jiǎn)潔清晰,但對(duì)于一個(gè)由很多程序員一起開(kāi)發(fā)的大型軟件,維護(hù)成本的增加很難讓程序簡(jiǎn)潔。異常捕捉模式的錯(cuò)誤處理方式的一個(gè)很有吸引力的特點(diǎn)是,它非常適合小程序。但對(duì)于大型程序庫(kù),如果對(duì)于一些普通操作,你都需要考慮每行代碼是否會(huì)拋出異常、是否有必要捕捉處理,這對(duì)于開(kāi)發(fā)效率和程序員的時(shí)間來(lái)說(shuō)都是非常嚴(yán)重的拖累。我自己做開(kāi)發(fā)大型Python軟件時(shí)感受到了這個(gè)問(wèn)題。 Go語(yǔ)言的返回錯(cuò)誤方式,不可否認(rèn),對(duì)于調(diào)用者不是很方便,但這樣做會(huì)讓程序中可能會(huì)出錯(cuò)的地方顯的很明顯。對(duì)于小程序來(lái)說(shuō),你可能只想打印出錯(cuò)誤,退出程序。對(duì)于一些很精密的程序,根據(jù)異常的不同,來(lái)源的不同,程序會(huì)做出不同的反應(yīng),這很常見(jiàn),這種情況中,try + catch的方式相對(duì)于錯(cuò)誤返回模式顯得冗長(zhǎng)。當(dāng)然,Python里的一個(gè)10行的代碼放到Go語(yǔ)言里很可能會(huì)更冗長(zhǎng)。畢竟,Go語(yǔ)言主要不是針對(duì)10行規(guī)模的程序的。

就是要說(shuō)明這一點(diǎn):Go語(yǔ)言程序員認(rèn)為,把error作為一種內(nèi)置的類型是非常重要的。

附言

有時(shí),你會(huì)發(fā)現(xiàn),一種非本地的goto語(yǔ)句被當(dāng)作錯(cuò)誤恢復(fù)的方法,就像C語(yǔ)言里的longjmp 和 setjmp。這也不錯(cuò),但***只在內(nèi)部用。如果調(diào)用者需要知道錯(cuò)誤恢復(fù)的走向,那你的這種方式就不好了。

 

英文原文:Why Im not leaving Python for Go

譯文鏈接:http://www.aqee.net/response-to-why-im-not-leaving-python-for-go/

責(zé)任編輯:林師授 來(lái)源: 外刊IT評(píng)論
相關(guān)推薦

2020-09-04 15:34:07

C編程語(yǔ)言開(kāi)發(fā)

2020-04-07 16:12:56

Go編程語(yǔ)言開(kāi)發(fā)

2018-06-15 21:26:13

PythonCrystal語(yǔ)言

2024-01-02 10:38:22

Go語(yǔ)言數(shù)組

2016-09-27 21:25:08

Go語(yǔ)言Ken Thompso

2018-05-02 12:34:48

2019-11-18 09:56:48

谷歌Go語(yǔ)言開(kāi)發(fā)者

2011-10-14 09:20:48

Lisp

2023-03-06 08:01:25

structGo語(yǔ)言

2022-01-17 16:09:43

Go語(yǔ)言開(kāi)發(fā)

2012-05-19 22:17:30

Android

2021-02-09 20:51:13

D 語(yǔ)言腳本編程語(yǔ)言

2012-06-18 14:51:09

Python

2022-01-10 23:54:56

GoMap并發(fā)

2021-12-21 06:09:05

Python切片索引

2019-10-12 10:18:35

代碼開(kāi)發(fā)Go

2014-12-26 09:56:50

編程語(yǔ)言

2018-12-28 15:30:15

PythonGo編程語(yǔ)言

2012-08-20 09:16:15

Go語(yǔ)言

2021-10-11 13:25:42

語(yǔ)言Go類型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 一级黄色毛片子 | 99精品国产一区二区三区 | 精品电影 | 一区二区三区四区免费视频 | 天天天操| 欧美性成人 | 天天艹日日干 | 日韩在线精品强乱中文字幕 | 五月综合激情网 | 亚洲精品美女视频 | 欧美精品网站 | 精品蜜桃一区二区三区 | 成人在线不卡 | 欧美激情久久久 | 国产在线观看一区二区三区 | 国产精品欧美一区二区 | 久色一区| 久久午夜精品福利一区二区 | 久久精品一区 | 日本久久视频 | 波多野结衣二区 | 日韩欧美视频网站 | 欧美视频在线一区 | 狠狠的干 | 在线播放国产一区二区三区 | 91视视频在线观看入口直接观看 | 国产在线精品一区二区三区 | 国产精品久久久久久久久久 | 国产精品久久久久久久久免费 | 欧美日韩一区二区在线观看 | 国产亚洲精品久久yy50 | 国产高清在线观看 | 国产精品一区二区在线 | 久久精品视频免费观看 | 国产高清性xxxxxxxx | 国产剧情一区二区三区 | 久久久久久久久久影视 | 精品国产视频在线观看 | 免费黄色av网站 | 欧美日韩精品一区 | 日韩有码一区 |